def test_generates_repr_string(self): # given user = User(email='*****@*****.**') user.id = 123 #when r = repr(user) # then self.assertEqual('User(\'[email protected]\', id=123)', r)
def test_lazy_overrides_non_lazy_users(self): # given user = User('user') user2 = User('user2') # when result = Task.from_dict({'users': [user]}, lazy={'users': [user2]}) # then self.assertIsInstance(result, Task) self.assertEqual([user2], list(result.users))
def test_generates_str_string(self): # given user = User(email='*****@*****.**') user.id = 123 #when r = str(user) # then fmt = 'User(\'[email protected]\', user id=123, id=[{}])' expected = fmt.format(id(user)) self.assertEqual(expected, r)
def test_constructor_sets_is_admin(self): # when user = User('*****@*****.**', 'hashed_password', False) # then self.assertFalse(user.is_admin) # when user = User('*****@*****.**', 'hashed_password', True) # then self.assertTrue(user.is_admin)
def test_to_dict_returns_correct_values(self): # when user = User('*****@*****.**', '12345') # then self.assertEqual( { 'email': '*****@*****.**', 'hashed_password': '******', 'is_admin': False, 'id': None, 'tasks': [] }, user.to_dict())
def test_to_dict_all_fields_returns_correct_values(self): # when user = User('*****@*****.**', '12345') # then self.assertEqual( { 'email': '*****@*****.**', 'hashed_password': '******', 'is_admin': False, 'id': None, 'tasks': [] }, user.to_dict({ user.FIELD_ID, user.FIELD_EMAIL, user.FIELD_HASHED_PASSWORD, user.FIELD_IS_ADMIN, user.FIELD_TASKS }))
def test_users_non_empty_yields_same(self): # given user = User('user') # when result = Task.from_dict({'users': [user]}) # then self.assertIsInstance(result, Task) self.assertEqual([user], list(result.users))
def test_any_lazy_overrides_all_non_lazy_properties(self): # given task = Task('task') # when result = User.from_dict({'tasks': [task]}, lazy={'x': 123}) # then self.assertIsInstance(result, User) self.assertEqual([], list(result.tasks))
def test_tasks_non_empty_yields_same(self): # given task = Task('task') # when result = User.from_dict({'tasks': [task]}) # then self.assertIsInstance(result, User) self.assertEqual([task], list(result.tasks))
def create_user(self, email, hashed_password=None, is_admin=False, lazy=None): return User(email=email, hashed_password=hashed_password, is_admin=is_admin, lazy=lazy)
def test_lazy_overrides_non_lazy_tasks(self): # given task = Task('task') task2 = Task('task2') # when result = User.from_dict({'tasks': [task]}, lazy={'tasks': [task2]}) # then self.assertIsInstance(result, User) self.assertEqual([task2], list(result.tasks))
def test_empty_yields_empty_dbuser(self): # when result = User.from_dict({}) # then self.assertIsInstance(result, User) self.assertIsNone(result.id) self.assertIsNone(result.email) self.assertIsNone(result.hashed_password) self.assertFalse(result.is_admin) self.assertEqual([], list(result.tasks))
def test_unauthorized_nonadmin_cannot_edit_public_task(self): # given task = Task('task', is_public=True) user = User('*****@*****.**') self.pl.add(task) self.pl.add(user) self.pl.commit() # when result = TaskUserOps.user_can_edit_task(task, user) # then self.assertFalse(result)
def test_unauthorized_admin_can_edit_private_task(self): # given task = Task('task') user = User('*****@*****.**', None, True) self.pl.add(task) self.pl.add(user) self.pl.commit() # when result = TaskUserOps.user_can_edit_task(task, user) # then self.assertTrue(result)
def test_unauthorized_nonadmin_cannot_view_private_task(self): # given task = Task('task') user = User('*****@*****.**') self.pl.add(task) self.pl.add(user) self.pl.commit() # when result = TaskUserOps.user_can_view_task(task, user) # then self.assertFalse(result)
def test_unauthorized_nonadmin_cannot_access_task(self): # given task = Task('task') user = User('*****@*****.**') self.pl.add(task) self.pl.add(user) self.pl.commit() # when result = TaskUserOps.is_user_authorized_or_admin(task, user) # then self.assertFalse(result)
def test_authorized_admin_can_access_task(self): # given task = Task('task') user = User('*****@*****.**', None, True) self.pl.add(task) self.pl.add(user) task.users.append(user) self.pl.commit() # when result = TaskUserOps.is_user_authorized_or_admin(task, user) # then self.assertTrue(result)
def test_authorized_admin_can_edit_public_task(self): # given task = Task('task', is_public=True) user = User('*****@*****.**', None, True) self.pl.add(task) self.pl.add(user) task.users.append(user) self.pl.commit() # when result = TaskUserOps.user_can_edit_task(task, user) # then self.assertTrue(result)
def test_email_none_is_ignored(self): # when result = User.from_dict({'email': None}) # then self.assertIsInstance(result, User) self.assertIsNone(result.email)
def test_tasks_empty_yields_empty(self): # when result = User.from_dict({'tasks': []}) # then self.assertIsInstance(result, User) self.assertEqual([], list(result.tasks))
def test_valid_is_admin_gets_set(self): # when result = User.from_dict({'is_admin': True}) # then self.assertIsInstance(result, User) self.assertTrue(result.is_admin)
def test_valid_hashed_password_gets_set(self): # when result = User.from_dict({'hashed_password': '******'}) # then self.assertIsInstance(result, User) self.assertEqual('abc', result.hashed_password)
def test_is_admin_none_becomes_none(self): # when result = User.from_dict({'is_admin': None}) # then self.assertIsInstance(result, User) self.assertIsNone(result.is_admin)
def test_hashed_password_none_becomes_none(self): # when result = User.from_dict({'hashed_password': None}) # then self.assertIsInstance(result, User) self.assertIsNone(result.hashed_password)
def setUp(self): self.task = Task('task') self.user = User('user')
def test_constructor_default_id_is_none(self): # when user = User('*****@*****.**', 'hashed_password') # then self.assertIsNone(user.id)
def test_valid_id_gets_set(self): # when result = User.from_dict({'id': 123}) # then self.assertIsInstance(result, User) self.assertEqual(123, result.id)
def test_id_none_is_ignored(self): # when result = User.from_dict({'id': None}) # then self.assertIsInstance(result, User) self.assertIsNone(result.id)
def test_valid_email_gets_set(self): # when result = User.from_dict({'email': '*****@*****.**'}) # then self.assertIsInstance(result, User) self.assertEqual('*****@*****.**', result.email)
def test_to_dict_field_id_returns_id(self): # when user = User('*****@*****.**', '12345') # then self.assertEqual({'id': None}, user.to_dict({user.FIELD_ID}))