Beispiel #1
0
class TaskIdTest(unittest.TestCase):
    def setUp(self):
        self.pl = InMemoryPersistenceLayer()
        self.pl.create_all()

    def test_constructor_default_id_is_none(self):
        # when
        task = Task('summary')
        # then
        self.assertIsNone(task.id)

    def test_pl_add_does_not_assign_id(self):
        # given
        task = Task('summary')
        # when
        self.pl.add(task)
        # then
        self.assertIsNone(task.id)

    def test_pl_commit_assigns_non_null_id(self):
        # given
        task = Task('summary')
        self.pl.add(task)
        # when
        self.pl.commit()
        # then
        self.assertIsNotNone(task.id)
Beispiel #2
0
def generate_ll(db_uri='sqlite://',
                use_in_mem_pl=True,
                upload_folder=None,
                allowed_extensions=None):
    if use_in_mem_pl:
        pl = InMemoryPersistenceLayer()
        pl.create_all()
        if upload_folder is None:
            upload_folder = '/tmp/tudor/uploads'
        if allowed_extensions is None:
            allowed_extensions = 'txt,pdf,png,jpg,jpeg,gif'
        ll = LogicLayer(upload_folder, allowed_extensions, pl)
        return ll
    else:
        app = generate_app(db_uri=db_uri)
        app.pl.create_all()
        return app.ll
Beispiel #3
0
class TaskTagsTest(unittest.TestCase):

    def setUp(self):
        self.pl = InMemoryPersistenceLayer()

    def test_no_tags_yields_no_tags(self):
        # given
        t1 = Task('t1')

        # when
        result = set(t1.get_tag_values())

        # then
        self.assertEqual(set(), result)

    def test_tasks_with_tags_return_those_tags_values(self):
        # given
        t1 = Task('t1')
        tag1 = Tag('tag1')
        t1.tags.append(tag1)
        t2 = Task('t2')
        tag2 = Tag('tag2')
        t2.tags.append(tag1)
        t2.tags.append(tag2)

        self.pl.create_all()
        self.pl.add(t1)
        self.pl.add(t2)
        self.pl.add(tag1)
        self.pl.add(tag2)
        self.pl.commit()

        # when
        result = set(t1.get_tag_values())

        # then
        self.assertEqual({tag1.value}, result)

        # when
        result = set(t2.get_tag_values())

        # then
        self.assertEqual({tag1.value, tag2.value}, result)
Beispiel #4
0
 def setUp(self):
     self.pl = InMemoryPersistenceLayer()
     self.pl.create_all()
Beispiel #5
0
 def setUp(self):
     self.pl = InMemoryPersistenceLayer()
Beispiel #6
0
class UserCanEditTaskTest(unittest.TestCase):
    def setUp(self):
        self.pl = InMemoryPersistenceLayer()
        self.pl.create_all()

    def test_unauthorized_nonadmin_cannot_edit_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_edit_task(task, user)
        # then
        self.assertFalse(result)

    def test_authorized_nonadmin_can_edit_private_task(self):
        # given
        task = Task('task')
        user = User('*****@*****.**')
        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_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_authorized_admin_can_edit_private_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.user_can_edit_task(task, user)
        # then
        self.assertTrue(result)

    def test_guest_user_cannot_edit_private_task(self):
        # given
        task = Task('task')
        guest = self.pl.get_guest_user()
        self.pl.add(task)
        self.pl.commit()
        # when
        result = TaskUserOps.user_can_edit_task(task, guest)
        # then
        self.assertFalse(result)

    def test_anon_user_cannot_edit_private_task(self):
        # given
        task = Task('task')
        anon = AnonymousUserMixin()
        self.pl.add(task)
        self.pl.commit()
        # when
        result = TaskUserOps.user_can_edit_task(task, anon)
        # then
        self.assertFalse(result)

    def test_none_user_cannot_edit_private_task(self):
        # given
        task = Task('task')
        self.pl.add(task)
        self.pl.commit()
        # when
        result = TaskUserOps.user_can_edit_task(task, None)
        # then
        self.assertFalse(result)

    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_authorized_nonadmin_can_edit_public_task(self):
        # given
        task = Task('task', is_public=True)
        user = User('*****@*****.**')
        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_unauthorized_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)
        self.pl.commit()
        # when
        result = TaskUserOps.user_can_edit_task(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_guest_user_cannot_edit_public_task(self):
        # given
        task = Task('task', is_public=True)
        guest = self.pl.get_guest_user()
        self.pl.add(task)
        self.pl.commit()
        # when
        result = TaskUserOps.user_can_edit_task(task, guest)
        # then
        self.assertFalse(result)

    def test_anon_user_cannot_edit_public_task(self):
        # given
        task = Task('task', is_public=True)
        anon = AnonymousUserMixin()
        self.pl.add(task)
        self.pl.commit()
        # when
        result = TaskUserOps.user_can_edit_task(task, anon)
        # then
        self.assertFalse(result)

    def test_none_user_cannot_edit_public_task(self):
        # given
        task = Task('task', is_public=True)
        self.pl.add(task)
        self.pl.commit()
        # when
        result = TaskUserOps.user_can_edit_task(task, None)
        # then
        self.assertFalse(result)
Beispiel #7
0
 def generate_pl(self, db_uri='sqlite://'):
     pl = InMemoryPersistenceLayer()
     return pl
Beispiel #8
0
class IsUserAuthorizedOrAdminTest(unittest.TestCase):
    def setUp(self):
        self.pl = InMemoryPersistenceLayer()
        self.pl.create_all()

    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_nonadmin_can_access_task(self):
        # given
        task = Task('task')
        user = User('*****@*****.**')
        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_unauthorized_admin_can_access_task(self):
        # given
        task = Task('task')
        user = User('*****@*****.**', None, True)
        self.pl.add(task)
        self.pl.add(user)
        self.pl.commit()
        # when
        result = TaskUserOps.is_user_authorized_or_admin(task, user)
        # then
        self.assertTrue(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)