-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathusuario_test.py
160 lines (137 loc) · 7.34 KB
/
usuario_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
from domain.model.usuario.enumUsuario import UsuarioEnum
from domain.model.usuario.usuario import Usuario
from domain.model.exception.customException import *
import pytest
class TestUsuario():
def criar_usuario(self, nome: str = "Teste", email: str = "[email protected]"):
return Usuario(nome, email)
@pytest.mark.parametrize("nome", ["Micci", "Luiz", "udy"
"João", " Luis", " Marcia ", "vica ", "luiz felipe", "Luiz Felipe"])
def test_criando_usuario_dados_minimos(self, nome):
usuario = self.criar_usuario(nome)
assert usuario.nome == " ".join(nome.split())
@pytest.mark.parametrize("nome", ["", None])
def test_nome_nao_pode_ter_vazio(self, nome):
with pytest.raises(NomeInvalidoError) as target:
self.criar_usuario(nome)
print(str(target.value))
assert UsuarioEnum.NOME_INVALIDO.value in target.value.messages
@pytest.mark.parametrize("nome", [123, 123.0])
def test_nome_precisa_ser_string(self, nome):
with pytest.raises(NomeInvalidoError) as target:
self.criar_usuario(nome)
assert UsuarioEnum.NOME_PRECISA_SER_STRING.value in target.value.messages
@pytest.mark.parametrize("nome", ["Mic13ci", "Luiz123", "123"])
def test_nome_nao_pode_conter_numeros(self, nome):
with pytest.raises(NomeInvalidoError) as target:
self.criar_usuario(nome)
assert UsuarioEnum.NOME_NAO_PODE_TER_NUMEROS.value in target.value.messages
@pytest.mark.parametrize("nome", ["n@me", "Lu!z", "Jo@o", "Luis&", "$hirley", "marc*s"])
def test_nome_nao_pode_conter_caracteres_especiais(self, nome):
with pytest.raises(NomeInvalidoError) as target:
self.criar_usuario(nome)
assert UsuarioEnum.NOME_NAO_PODE_TER_CARACTERES_ESPECIAIS.value in target.value.messages
@pytest.mark.parametrize("nome", ["An", "a", "zu"])
def test_nome_nao_pode_conter_menos_de_3_caracteres(self, nome):
with pytest.raises(NomeInvalidoError) as target:
self.criar_usuario(nome)
assert UsuarioEnum.NOME_NAO_PODE_SER_MENOR_QUE_3_CHAR.value in target.value.messages
@pytest.mark.parametrize("nome", ["1@"])
def test_nome_invalido_tamnanho_numero_simbolo(self, nome):
lista_erros_esperados = []
lista_erros_esperados.append(
UsuarioEnum.NOME_NAO_PODE_TER_NUMEROS.value)
lista_erros_esperados.append(
UsuarioEnum.NOME_NAO_PODE_TER_CARACTERES_ESPECIAIS.value)
lista_erros_esperados.append(
UsuarioEnum.NOME_NAO_PODE_SER_MENOR_QUE_3_CHAR.value)
with pytest.raises(NomeInvalidoError) as target:
self.criar_usuario(nome)
assert target.value.messages == lista_erros_esperados
"""
###################### VALIDAÇÕES DO ATRIBUTO EMAIL ####################
"""
@pytest.mark.parametrize("email", [" [email protected]", "[email protected]", "[email protected] ", "[email protected]", "[email protected]", "[email protected]"])
def test_email_valido(self, email: str):
usuario = self.criar_usuario(email=email)
assert usuario.email == "".join(email.split())
# validações do atributo email\
@pytest.mark.parametrize("email", ["", None])
def test_email_nao_pode_ser_vazio(self, email: str):
with pytest.raises(EmailInvalidoError) as target:
self.criar_usuario(email=email)
assert str(target.value) == "Email Invalido!"
@pytest.mark.parametrize("email", ["emai @email.com", "e mail@ mail.com"])
def test_email_remover_espacos(self, email: str):
usuario = self.criar_usuario(email=email)
assert usuario.email == "".join(email.split())
# email não pode comecar ou terminar com caracteres especiais
@pytest.mark.parametrize("email", ["[email protected]", "[email protected]", "[email protected]", "[email protected].",
"[email protected]."])
def test_email_nao_pode_comecar_ou_terminar_com_caracteres_especiais(self, email: str):
with pytest.raises(EmailInvalidoError) as target:
self.criar_usuario(email=email)
print(target.value.messages)
assert UsuarioEnum.EMAIL_NAO_PODE_COMECAR_OU_TERMINAR_COM_CARACTERES_ESPECIAIS.value in target.value.messages
"""
quadno email não tiver pelo menos um @
entao um erro deve ser gerado E informar que email é invalido
"""
@pytest.mark.parametrize("email", ["email.mail", "email"])
def test_email_deve_conter_arroba(self, email: str):
with pytest.raises(EmailInvalidoError) as target:
self.criar_usuario(email=email)
assert UsuarioEnum.EMAIL_DEVE_CONTER_ARROBA.value in target.value.messages
"""
quando email tiver mais de um @
entao deve ser gerado um erro E informar que email e invalido
"""
@pytest.mark.parametrize("email", ["email@[email protected]", "email@[email protected]", "email@@mail"])
def test_email_nao_pode_conter_mais_de_um_arroba(self, email: str):
with pytest.raises(EmailInvalidoError) as target:
self.criar_usuario(email=email)
assert UsuarioEnum.EMAIL_NAO_PODE_CONTER_MAIS_QUE_UM_ARROBA.value in target.value.messages
"""
quuando o não existir um ponto apos o @
entao deve ser gerado um erro E informar que email e invalido
"""
@pytest.mark.parametrize("email", ["email@mail", "meu.email@mail"])
def test_email_deve_conter_ponto_apos_arroba(self, email: str):
with pytest.raises(EmailInvalidoError) as target:
self.criar_usuario(email=email)
assert UsuarioEnum.EMAIL_DEVE_CONTER_PONTOS_APOS_ARROBA.value in target.value.messages
"""
quando email não tiver ao menos 3 caracteres antes do @
entao deve ser gerado um erro E informar que email e invalido
"""
@pytest.mark.parametrize("email", ["[email protected]", "[email protected]"])
def test_email_deve_conter_3_caracteres_antes_do_arroba(self, email: str):
with pytest.raises(EmailInvalidoError) as target:
self.criar_usuario(email=email)
assert UsuarioEnum.EMAIL_DEVE_TER_PELO_MENOS_2_CARACTERES_ANTES_ARROBA.value in target.value.messages
"""
quando email não tiver ao menos 3 caracteres depois do @
entao deve ser gerado um erro E informar que email e invalido
"""
@pytest.mark.parametrize("email", ["[email protected]"])
def test_email_deve_conter_3_caracteres_depois_do_arroba(self, email: str):
with pytest.raises(EmailInvalidoError) as target:
self.criar_usuario(email=email)
assert UsuarioEnum.EMAIL_DEVE_TER_PELO_MENOS_2_CARACTERES_DEPOIS_ARROBA.value in target.value.messages
"""
quando email estiver valido
então atributo email deve ser igual a email
"""
@pytest.mark.parametrize("email", ["[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]"])
def test_email_deve_ser_igual_a_email(self, email: str):
usuario = self.criar_usuario(email=email)
assert usuario.email == email
"""
Dado que existem caracteres especiais
quando eles forem checados pelo sistema
então eles devem ser dessa lista: "@#$%^&*()-+?_=,<>!/."
"""
@pytest.mark.parametrize("caracteres_especiais", [ "@#$%^&*()-+?_=,<>!/."])
def test_verifica_lista_de_caracteres_especiais(self, caracteres_especiais: str):
usuario = self.criar_usuario()
assert usuario.caracteres_especiais == caracteres_especiais