import unittest
from unittest.mock import patch
from mongoengine import connect
from legislei.exceptions import (InvalidEmail, RequirementsNotMet,
UsernameOrEmailAlreadyExistis)
from legislei.models.user import User
from legislei.services.usuarios import Usuario
[documentos]class TestUsuario(unittest.TestCase):
[documentos] def setUp(self):
connect('mongoenginetest', host='mongomock://localhost')
[documentos] def test_obter_por_id(self):
user = User(
username='user',
password='pwd',
email='test@email.com'
)
user.save()
actual = Usuario().obter_por_id(user.pk)
self.assertEqual(actual, user)
[documentos] def test_registrar_sucesso(self):
Usuario().registrar('user', '1234', '1234', 'test@email.com')
expected = User.objects(username='user').first()
self.assertEqual(expected.email, 'test@email.com')
[documentos] def test_registrar_user_ja_existe(self):
user = User(
username='user',
password='pwd',
email='test@email.com'
)
user.save()
with self.assertRaises(UsernameOrEmailAlreadyExistis):
Usuario().registrar('user', '1234', '1234', 'test2@email.com')
[documentos] def test_registrar_email_ja_existe(self):
user = User(
username='user',
password='pwd',
email='test@email.com'
)
user.save()
with self.assertRaises(UsernameOrEmailAlreadyExistis):
Usuario().registrar('user2', '1234', '1234', 'test@email.com')
[documentos] def test_registrar_email_invalido(self):
user = User(
username='user',
password='pwd',
email='test@email.com'
)
user.save()
with self.assertRaises(InvalidEmail):
Usuario().registrar('user2', '1234', '1234', 'invalid-email')
[documentos] def test_registrar_senhas_diferentes(self):
user = User(
username='user',
password='pwd',
email='test@email.com'
)
user.save()
with self.assertRaises(RequirementsNotMet):
Usuario().registrar('user2', '1234', '4321', 'test2@email.com')
[documentos] def test_registrar_username_mto_curto(self):
user = User(
username='user',
password='pwd',
email='test@email.com'
)
user.save()
with self.assertRaises(RequirementsNotMet):
Usuario().registrar('u', '1234', '1234', 'test2@email.com')
[documentos] @patch("legislei.services.usuarios.login_user")
def test_login_sucesso(self, mock_login):
user = User(
username='user',
password='$pbkdf2-sha256$16$916rFQLgXItR6n0v5fz/3w$k1XO4U9rRqZjZ5YAfNi2f8vGmzwXLcuSWMbt/yYYFAU',
email='test@email.com'
)
user.save()
actual = Usuario().login('user', '1234', True)
self.assertTrue(actual)
mock_login.assert_called_once_with(user, remember=True)
[documentos] def test_login_senha_errada(self):
user = User(
username='user',
password='$pbkdf2-sha256$16$916rFQLgXItR6n0v5fz/3w$k1XO4U9rRqZjZ5YAfNi2f8vGmzwXLcuSWMbt/yYYFAU',
email='test@email.com'
)
user.save()
actual = Usuario().login('user', '4321', True)
self.assertFalse(actual)
[documentos] def test_login_usuario_nao_existe(self):
user = User(
username='user',
password='pwd',
email='test@email.com'
)
user.save()
actual = Usuario().login('inexistente', '4321', True)
self.assertFalse(actual)
[documentos] @patch("legislei.services.usuarios.logout_user")
def test_logout(self, mock_logout):
Usuario().logout()
mock_logout.assert_called_once_with()