<commit_before>import pytest

from django.contrib.auth.models import User
from django.core.files.uploadedfile import SimpleUploadedFile
from django.core import mail
from django.conf import settings

from model_mommy import mommy

from .models import Municipio

pytestmark = pytest.mark.django_db

def testa_envio_email_em_nova_adesao(client):
    user = User.objects.create(username='teste')
    user.set_password('<PASSWORD>')
    user.save()
    usuario = mommy.make('Usuario',user=user)

    estado = mommy.make('Uf')
    cidade = mommy.make('Cidade')

    login = client.login(username=user.username,password='<PASSWORD>')

    response = client.post('/adesao/municipio/cadastrar/0/', {'estado':estado.codigo_ibge,'cidade':cidade.id,
        'cnpj_prefeitura':'95.876.554/0001-63', 'cpf_prefeito':'381.390.630-29','uf': estado,
        'rg_prefeito':'48.464.068-9','orgao_expeditor_rg':'SSP','estado_expeditor':estado.codigo_ibge,
        'nome_prefeito':'<NAME>','email_institucional_prefeito':'<EMAIL>',
        'endereco_eletronico':'teste.com.br','cep':'60751-110','complemento': 'casa 22',
        'bairro':'rua teste','telefone_um':'6299999999','endereco':'rua do pao',
        'termo_posse_prefeito': SimpleUploadedFile('test_file.pdf', bytes('test text','utf-8')),
        'cpf_copia_prefeito': SimpleUploadedFile('test_file2.pdf', bytes('test text','utf-8')),
        'rg_copia_prefeito': SimpleUploadedFile('test_file2.pdf', bytes('test text','utf-8')),
        })

    # Acessa a url de sucesso após o cadastro para fazer o envio do email
    success_url = client.get(response.url)

    municipio = Municipio.objects.last()

    assert len(mail.outbox) == 1
    assert mail.outbox[0].subject == 'MINISTÉRIO DA CULTURA - SNC - SOLICITAÇÃO NOVA ADESÃO'
    assert mail.outbox[0].from_email == '<EMAIL>'
    assert mail.outbox[0].to == [settings.RECEIVER_EMAIL]
    assert mail.outbox[0].body == ('Prezado Gestor,\n' +
            'Um novo ente federado acabou de se cadastrar e fazer a solicitação de nova adesão.\n' +
            'Segue abaixo os dados de contato do ente federado:\n\n' +
            'Dados do Ente Federado:\n' +
            'Cadastrador: ' + usuario.nome_usuario + '\n' +
            'Nome do Prefeito: ' + municipio.nome_prefeito + '\n' +
            'Cidade: ' + cidade.nome_municipio + '\n' +
            'Estado: ' + estado.sigla + '\n' +
            'Email Institucional: ' + municipio.email_institucional_prefeito + '\n' +
            'Telefone de Contato: ' + municipio.telefone_um + '\n' +
            'Link da Adesão: ' + 'http://snc.cultura.gov.br/gestao/detalhar/municipio/{}'.format(usuario.id) + '\n\n' +
            'Equipe SNC\nMinistério da Cultura')


def testa_envio_email_em_esqueceu_senha(client):
    site = mommy.make('Site', name="SNC", domain="snc.cultura.gov.br")

    user = User.objects.create(username='teste',email='<EMAIL>')
    user.set_password('<PASSWORD>')
    user.save()
    usuario = mommy.make('Usuario',user=user)

    response = client.post('/password_reset/',{'email': usuario.user.email})

    assert len(mail.outbox) == 1


def testa_template_em_esqueceu_senha(client):

    response = client.get('/password_reset/')

    assert response.template_name[0] == 'registration/password_reset_form.html'

    # Pelo fato de o template padrão do django ter esse mesmo nome fizemos uma validação a mais
    assert "Sistema Nacional de Cultura"  in response.rendered_content<commit_msg>Ajuda a nomenclatura dos testes de adesao.<commit_after>import pytest

from django.contrib.auth.models import User
from django.core.files.uploadedfile import SimpleUploadedFile
from django.core import mail
from django.conf import settings

from model_mommy import mommy

from .models import Municipio

pytestmark = pytest.mark.django_db


def test_envio_email_em_nova_adesao(client):
    user = User.objects.create(username='teste')
    user.set_password('<PASSWORD>')
    user.save()
    usuario = mommy.make('Usuario',user=user)

    estado = mommy.make('Uf')
    cidade = mommy.make('Cidade')

    login = client.login(username=user.username,password='<PASSWORD>')

    response = client.post('/adesao/municipio/cadastrar/0/', {'estado':estado.codigo_ibge,'cidade':cidade.id,
        'cnpj_prefeitura':'95.876.554/0001-63', 'cpf_prefeito':'381.390.630-29','uf': estado,
        'rg_prefeito':'48.464.068-9','orgao_expeditor_rg':'SSP','estado_expeditor':estado.codigo_ibge,
        'nome_prefeito':'<NAME>','email_institucional_prefeito':'<EMAIL>',
        'endereco_eletronico':'teste.com.br','cep':'60751-110','complemento': 'casa 22',
        'bairro':'rua teste','telefone_um':'6299999999','endereco':'rua do pao',
        'termo_posse_prefeito': SimpleUploadedFile('test_file.pdf', bytes('test text','utf-8')),
        'cpf_copia_prefeito': SimpleUploadedFile('test_file2.pdf', bytes('test text','utf-8')),
        'rg_copia_prefeito': SimpleUploadedFile('test_file2.pdf', bytes('test text','utf-8')),
        })

    # Acessa a url de sucesso após o cadastro para fazer o envio do email
    success_url = client.get(response.url)

    municipio = Municipio.objects.last()

    assert len(mail.outbox) == 1
    assert mail.outbox[0].subject == 'MINISTÉRIO DA CULTURA - SNC - SOLICITAÇÃO NOVA ADESÃO'
    assert mail.outbox[0].from_email == '<EMAIL>'
    assert mail.outbox[0].to == [settings.RECEIVER_EMAIL]
    assert mail.outbox[0].body == ('Prezado Gestor,\n' +
            'Um novo ente federado acabou de se cadastrar e fazer a solicitação de nova adesão.\n' +
            'Segue abaixo os dados de contato do ente federado:\n\n' +
            'Dados do Ente Federado:\n' +
            'Cadastrador: ' + usuario.nome_usuario + '\n' +
            'Nome do Prefeito: ' + municipio.nome_prefeito + '\n' +
            'Cidade: ' + cidade.nome_municipio + '\n' +
            'Estado: ' + estado.sigla + '\n' +
            'Email Institucional: ' + municipio.email_institucional_prefeito + '\n' +
            'Telefone de Contato: ' + municipio.telefone_um + '\n' +
            'Link da Adesão: ' + 'http://snc.cultura.gov.br/gestao/detalhar/municipio/{}'.format(usuario.id) + '\n\n' +
            'Equipe SNC\nMinistério da Cultura')


def test_envio_email_em_esqueceu_senha(client):
    site = mommy.make('Site', name="SNC", domain="snc.cultura.gov.br")

    user = User.objects.create(username='teste',email='<EMAIL>')
    user.set_password('<PASSWORD>')
    user.save()
    usuario = mommy.make('Usuario',user=user)

    response = client.post('/password_reset/',{'email': usuario.user.email})

    assert len(mail.outbox) == 1


def test_template_em_esqueceu_senha(client):

    response = client.get('/password_reset/')

    assert response.template_name[0] == 'registration/password_reset_form.html'

    # Pelo fato de o template padrão do django ter esse mesmo nome fizemos uma validação a mais
    assert "Sistema Nacional de Cultura"  in response.rendered_content
{'fraction_non_alphanumeric': 0.14611279388432136, 'fraction_numerical': 0.019327852300591374, 'mean_word_length': 3.739576213260424, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 2, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3461903', 'n_tokens_mistral': 2631, 'n_tokens_neox': 2478, 'n_words': 441}