def test_get_acl(self):
        r0 = NonCallableMagicMock(username='******',
                                  resource='<all keyspaces>',
                                  permission='SELECT')
        r1 = NonCallableMagicMock(username='******',
                                  resource='<keyspace ks1>',
                                  permission='SELECT')
        r2 = NonCallableMagicMock(username='******',
                                  resource='<keyspace ks2>',
                                  permission='SELECT')
        r3 = NonCallableMagicMock(username='******',
                                  resource='<keyspace ks2>',
                                  permission='ALTER')
        r4 = NonCallableMagicMock(username='******',
                                  resource='<table ks2.t1>',
                                  permission='SELECT')
        r5 = NonCallableMagicMock(username='******',
                                  resource='',
                                  permission='ALTER')
        r6 = NonCallableMagicMock(username='******',
                                  resource='<keyspace ks2>',
                                  permission='')
        r7 = NonCallableMagicMock(username='******', resource='', permission='')
        r8 = NonCallableMagicMock(username='******',
                                  resource='<keyspace ks1>',
                                  permission='DELETE')
        r9 = NonCallableMagicMock(username='******',
                                  resource='<all keyspaces>',
                                  permission='UPDATE')
        r10 = NonCallableMagicMock(username='******',
                                   resource='<keyspace ks1>',
                                   permission='DELETE')

        available_ks = {
            models.CassandraSchema('ks1'),
            models.CassandraSchema('ks2'),
            models.CassandraSchema('ks3')
        }

        mock_result_set = [r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r9, r9, r10]
        execute_mock = MagicMock(return_value=mock_result_set)
        mock_client = MagicMock(execute=execute_mock)

        with patch.object(self.admin, self.__N_GAK,
                          return_value=available_ks) as gak_mock:
            acl = self.admin._get_acl(mock_client)
            execute_mock.assert_called_once_with(
                self.__LIST_PERMISSIONS_FORMAT)
            gak_mock.assert_called_once_with(mock_client)

            self.assertEqual(
                {
                    'user1': {
                        'ks1': {'SELECT'},
                        'ks2': {'SELECT'},
                        'ks3': {'SELECT'}
                    },
                    'user2': {
                        'ks1': {'SELECT'},
                        'ks2': {'SELECT', 'ALTER'}
                    },
                    'user3': {
                        'ks1': {'DELETE'}
                    },
                    'user4': {
                        'ks1': {'UPDATE', 'DELETE'},
                        'ks2': {'UPDATE'},
                        'ks3': {'UPDATE'}
                    }
                }, acl)

        mock_result_set = [r1, r2, r3]
        execute_mock = MagicMock(return_value=mock_result_set)
        mock_client = MagicMock(execute=execute_mock)

        with patch.object(self.admin, self.__N_GAK,
                          return_value=available_ks) as gak_mock:
            acl = self.admin._get_acl(mock_client, username='******')
            execute_mock.assert_called_once_with(
                self.__LIST_PERMISSIONS_OF_FORMAT.format('user2'))
            gak_mock.assert_not_called()

            self.assertEqual(
                {'user2': {
                    'ks1': {'SELECT'},
                    'ks2': {'SELECT', 'ALTER'}
                }}, acl)

        mock_result_set = []
        execute_mock = MagicMock(return_value=mock_result_set)
        mock_client = MagicMock(execute=execute_mock)

        with patch.object(self.admin, self.__N_GAK,
                          return_value=available_ks) as gak_mock:
            acl = self.admin._get_acl(mock_client, username='******')
            execute_mock.assert_called_once_with(
                self.__LIST_PERMISSIONS_OF_FORMAT.format('nonexisting'))
            gak_mock.assert_not_called()

            self.assertEqual({}, acl)
Beispiel #2
0
 def test_keyspace_validation(self):
     valid_name = self._get_random_name(32)
     db = models.CassandraSchema(valid_name)
     self.assertEqual(valid_name, db.name)
     with ExpectedException(ValueError):
         models.CassandraSchema(self._get_random_name(33))
 def test_delete_database(self):
     db = models.CassandraSchema(self._get_random_name(32))
     self.manager.delete_database(self.context, db.serialize())
     self.conn.execute.assert_called_once_with(self.__DROP_DB_FORMAT,
                                               (db.name, ))