Ejemplo n.º 1
0
class TestLoadModels(unittest.TestCase):
    def setUp(self):
        Base.metadata.create_all()
        self.session = Session()
        c = Container(name=u'c')
        self.session.add(c)
        self.container = c
        self.nd1 = NamedDocument(container=c, title=u"Named Document")
        self.session.add(self.nd1)
        self.session.commit()
        self.nd2 = NamedDocument(container=c, title=u"Another Named Document")
        self.session.add(self.nd2)
        self.session.commit()
        self.snd1 = ScopedNamedDocument(container=c,
                                        title=u"Scoped Named Document")
        self.session.add(self.snd1)
        self.session.commit()
        self.snd2 = ScopedNamedDocument(container=c,
                                        title=u"Another Scoped Named Document")
        self.session.add(self.snd2)
        self.session.commit()
        self.ind1 = IdNamedDocument(container=c, title=u"Id Named Document")
        self.session.add(self.ind1)
        self.session.commit()
        self.ind2 = IdNamedDocument(container=c,
                                    title=u"Another Id Named Document")
        self.session.add(self.ind2)
        self.session.commit()
        self.sid1 = ScopedIdDocument(container=c)
        self.session.add(self.sid1)
        self.session.commit()
        self.sid2 = ScopedIdDocument(container=c)
        self.session.add(self.sid2)
        self.session.commit()
        self.sind1 = ScopedIdNamedDocument(container=c,
                                           title=u"Scoped Id Named Document")
        self.session.add(self.sind1)
        self.session.commit()
        self.sind2 = ScopedIdNamedDocument(
            container=c, title=u"Another Scoped Id Named Document")
        self.session.add(self.sind2)
        self.session.commit()
        self.pc = ParentDocument(title=u"Parent")
        self.session.add(self.pc)
        self.session.commit()
        self.child1 = ChildDocument(parent=self.pc.middle)
        self.session.add(self.child1)
        self.session.commit()
        self.child2 = ChildDocument(parent=self.pc.middle)
        self.session.add(self.child2)
        self.session.commit()

    def tearDown(self):
        self.session.rollback()
        Base.metadata.drop_all()

    def test_container(self):
        self.assertEqual(t_container(container=u'c'), self.container)

    def test_named_document(self):
        self.assertEqual(
            t_named_document(container=u'c', document=u'named-document'),
            self.nd1)
        self.assertEqual(
            t_named_document(container=u'c',
                             document=u'another-named-document'), self.nd2)

    def test_scoped_named_document(self):
        self.assertEqual(
            t_scoped_named_document(container=u'c',
                                    document=u'scoped-named-document'),
            self.snd1)
        self.assertEqual(
            t_scoped_named_document(container=u'c',
                                    document=u'another-scoped-named-document'),
            self.snd2)

    def test_id_named_document(self):
        self.assertEqual(
            t_id_named_document(container=u'c',
                                document=u'1-id-named-document'), self.ind1)
        self.assertEqual(
            t_id_named_document(container=u'c',
                                document=u'2-another-id-named-document'),
            self.ind2)
        self.assertRaises(NotFound,
                          t_id_named_document,
                          container=u'c',
                          document=u'random-non-integer')

    def test_scoped_id_document(self):
        self.assertEqual(t_scoped_id_document(container=u'c', document=u'1'),
                         self.sid1)
        self.assertEqual(t_scoped_id_document(container=u'c', document=u'2'),
                         self.sid2)
        self.assertEqual(t_scoped_id_document(container=u'c', document=1),
                         self.sid1)
        self.assertEqual(t_scoped_id_document(container=u'c', document=2),
                         self.sid2)

    def test_scoped_id_named_document(self):
        self.assertEqual(
            t_scoped_id_named_document(container=u'c',
                                       document=u'1-scoped-id-named-document'),
            self.sind1)
        self.assertEqual(
            t_scoped_id_named_document(
                container=u'c',
                document=u'2-another-scoped-id-named-document'), self.sind2)
        self.assertRaises(NotFound,
                          t_scoped_id_named_document,
                          container=u'c',
                          document=u'random-non-integer')

    def test_callable_document(self):
        self.assertEqual(t_callable_document(document=u'parent', child=1),
                         self.child1)
        self.assertEqual(t_callable_document(document=u'parent', child=2),
                         self.child2)

    def test_dotted_document(self):
        self.assertEqual(t_dotted_document(document=u'parent', child=1),
                         self.child1)
        self.assertEqual(t_dotted_document(document=u'parent', child=2),
                         self.child2)

    def test_direct_permissions(self):
        user1 = User(username='******')
        user2 = User(username='******')
        self.assertEqual(self.pc.permissions(user1),
                         set(['view', 'edit', 'delete']))
        self.assertEqual(self.pc.permissions(user2), set(['view']))
        self.assertEqual(
            self.child1.permissions(user1,
                                    inherited=self.pc.permissions(user1)),
            set(['view', 'edit']))
        self.assertEqual(
            self.child1.permissions(user2,
                                    inherited=self.pc.permissions(user2)),
            set(['view']))

    def test_loadmodel_permissions(self):
        app = Flask(__name__)
        with app.test_request_context():
            g.user = User(username='******')
            self.assertEqual(
                t_dotted_document_view(document=u'parent', child=1),
                self.child1)
            self.assertEqual(
                t_dotted_document_edit(document=u'parent', child=1),
                self.child1)
            self.assertRaises(Forbidden,
                              t_dotted_document_delete,
                              document=u'parent',
                              child=1)
Ejemplo n.º 2
0
class TestLoadModels(unittest.TestCase):
    def setUp(self):
        Base.metadata.create_all()
        self.session = Session()
        c = Container(name=u'c')
        self.session.add(c)
        self.container = c
        self.nd1 = NamedDocument(container=c, title=u"Named Document")
        self.session.add(self.nd1)
        self.session.commit()
        self.nd2 = NamedDocument(container=c, title=u"Another Named Document")
        self.session.add(self.nd2)
        self.session.commit()
        self.snd1 = ScopedNamedDocument(container=c, title=u"Scoped Named Document")
        self.session.add(self.snd1)
        self.session.commit()
        self.snd2 = ScopedNamedDocument(container=c, title=u"Another Scoped Named Document")
        self.session.add(self.snd2)
        self.session.commit()
        self.ind1 = IdNamedDocument(container=c, title=u"Id Named Document")
        self.session.add(self.ind1)
        self.session.commit()
        self.ind2 = IdNamedDocument(container=c, title=u"Another Id Named Document")
        self.session.add(self.ind2)
        self.session.commit()
        self.sid1 = ScopedIdDocument(container=c)
        self.session.add(self.sid1)
        self.session.commit()
        self.sid2 = ScopedIdDocument(container=c)
        self.session.add(self.sid2)
        self.session.commit()
        self.sind1 = ScopedIdNamedDocument(container=c, title=u"Scoped Id Named Document")
        self.session.add(self.sind1)
        self.session.commit()
        self.sind2 = ScopedIdNamedDocument(container=c, title=u"Another Scoped Id Named Document")
        self.session.add(self.sind2)
        self.session.commit()
        self.pc = ParentDocument(title=u"Parent")
        self.session.add(self.pc)
        self.session.commit()
        self.child1 = ChildDocument(parent=self.pc.middle)
        self.session.add(self.child1)
        self.session.commit()
        self.child2 = ChildDocument(parent=self.pc.middle)
        self.session.add(self.child2)
        self.session.commit()

    def tearDown(self):
        self.session.rollback()
        Base.metadata.drop_all()

    def test_container(self):
        self.assertEqual(t_container(container=u'c'), self.container)

    def test_named_document(self):
        self.assertEqual(t_named_document(container=u'c', document=u'named-document'), self.nd1)
        self.assertEqual(t_named_document(container=u'c', document=u'another-named-document'), self.nd2)

    def test_scoped_named_document(self):
        self.assertEqual(t_scoped_named_document(container=u'c', document=u'scoped-named-document'), self.snd1)
        self.assertEqual(t_scoped_named_document(container=u'c', document=u'another-scoped-named-document'), self.snd2)

    def test_id_named_document(self):
        self.assertEqual(t_id_named_document(container=u'c', document=u'1-id-named-document'), self.ind1)
        self.assertEqual(t_id_named_document(container=u'c', document=u'2-another-id-named-document'), self.ind2)
        self.assertRaises(NotFound, t_id_named_document, container=u'c', document=u'random-non-integer')

    def test_scoped_id_document(self):
        self.assertEqual(t_scoped_id_document(container=u'c', document=u'1'), self.sid1)
        self.assertEqual(t_scoped_id_document(container=u'c', document=u'2'), self.sid2)
        self.assertEqual(t_scoped_id_document(container=u'c', document=1), self.sid1)
        self.assertEqual(t_scoped_id_document(container=u'c', document=2), self.sid2)

    def test_scoped_id_named_document(self):
        self.assertEqual(t_scoped_id_named_document(container=u'c', document=u'1-scoped-id-named-document'), self.sind1)
        self.assertEqual(t_scoped_id_named_document(container=u'c', document=u'2-another-scoped-id-named-document'), self.sind2)
        self.assertRaises(NotFound, t_scoped_id_named_document, container=u'c', document=u'random-non-integer')

    def test_callable_document(self):
        self.assertEqual(t_callable_document(document=u'parent', child=1), self.child1)
        self.assertEqual(t_callable_document(document=u'parent', child=2), self.child2)

    def test_dotted_document(self):
        self.assertEqual(t_dotted_document(document=u'parent', child=1), self.child1)
        self.assertEqual(t_dotted_document(document=u'parent', child=2), self.child2)

    def test_direct_permissions(self):
        user1 = User(username='******')
        user2 = User(username='******')
        self.assertEqual(self.pc.permissions(user1), set(['view', 'edit', 'delete']))
        self.assertEqual(self.pc.permissions(user2), set(['view']))
        self.assertEqual(self.child1.permissions(user1, inherited=self.pc.permissions(user1)), set(['view', 'edit']))
        self.assertEqual(self.child1.permissions(user2, inherited=self.pc.permissions(user2)), set(['view']))

    def test_loadmodel_permissions(self):
        app = Flask(__name__)
        with app.test_request_context():
            g.user = User(username='******')
            self.assertEqual(t_dotted_document_view(document=u'parent', child=1), self.child1)
            self.assertEqual(t_dotted_document_edit(document=u'parent', child=1), self.child1)
            self.assertRaises(Forbidden, t_dotted_document_delete, document=u'parent', child=1)