예제 #1
0
 def setUp(self):
     super(TestSQLiteBackend, self).setUp()
     transaction.begin()
     request = MagicMock()
     request.tm = transaction.manager
     self.access = SQLAccessBackend(request, **self.kwargs)
     self.db = self.kwargs['dbmaker']()
     zope.sqlalchemy.register(self.db,
                              transaction_manager=transaction.manager)
예제 #2
0
    def test_load(self):
        """ Access control can load universal format data """
        user1 = make_user('user1', 'user1', True)
        user2 = make_user('user2', 'user2', False)
        user3 = make_user('user3', 'user3', False)
        user3.admin = True
        self.db.add_all([user1, user2, user3])
        transaction.commit()
        self.access.set_allow_register(False)
        self.access.create_group('g1')
        self.access.create_group('g2')
        self.access.edit_user_group('user2', 'g1', True)
        self.access.edit_user_group('user2', 'g2', True)
        self.access.edit_user_group('user3', 'g2', True)
        self.access.edit_user_permission('pkg1', 'user2', 'read', True)
        self.access.edit_user_permission('pkg2', 'user3', 'read', True)
        self.access.edit_user_permission('pkg2', 'user3', 'write', True)
        self.access.edit_group_permission('pkg1', 'g1', 'read', True)
        self.access.edit_group_permission('pkg2', 'g2', 'read', True)
        self.access.edit_group_permission('pkg2', 'g2', 'write', True)
        transaction.commit()

        data1 = self.access.dump()

        self.access.db.close()
        self.db.close()
        self._drop_and_recreate()
        kwargs = SQLAccessBackend.configure(self.settings)
        self.access = SQLAccessBackend(MagicMock(), **kwargs)
        self.access.load(data1)
        data2 = self.access.dump()

        def assert_nice_equals(obj1, obj2):
            """ Assertion that handles unordered lists inside dicts """
            if isinstance(obj1, dict):
                self.assertEqual(len(obj1), len(obj2))
                for key, val in six.iteritems(obj1):
                    assert_nice_equals(val, obj2[key])
            elif isinstance(obj1, list):
                self.assertItemsEqual(obj1, obj2)
            else:
                self.assertEqual(obj1, obj2)

        assert_nice_equals(data2, data1)

        # Load operation should be idempotent
        self.access.load(data2)
        data3 = self.access.dump()
        assert_nice_equals(data3, data2)
예제 #3
0
 def setUp(self):
     super(TestSQLBackend, self).setUp()
     self.db = self.kwargs['dbmaker']()
     self.access = SQLAccessBackend(MagicMock(), **self.kwargs)
예제 #4
0
 def setUp(self):
     super(TestSQLBackend, self).setUp()
     self.db = SQLAccessBackend.dbmaker()
     self.access = SQLAccessBackend(MagicMock())