Add permission and user_log unittest.

Fixed the bug in db/api/user_log.py

Change-Id: I975160375abb7bfea5ba5861fb1a9d545debd6b5
This commit is contained in:
leilei9547 2014-08-07 11:43:36 -07:00
parent a431d34202
commit 4e1c1fe022
3 changed files with 240 additions and 3 deletions

View File

@ -45,16 +45,16 @@ def _compress_response(actions, user_id):
def _compress_response_by_user(actions):
actions = {}
actions_by_user = {}
for action in actions:
action_dict = action.to_dict()
user_id = action_dict['user_id']
del action_dict['user_id']
actions.setdefault(user_id, []).append(action_dict)
actions_by_user.setdefault(user_id, []).append(action_dict)
return [
{'user_id': user_id, 'logs': user_actions}
for user_id, user_actions in actions.items()
for user_id, user_actions in actions_by_user.items()
]

View File

@ -0,0 +1,80 @@
# Copyright 2014 Huawei Technologies Co. Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import datetime
import logging
import os
import unittest2
from compass.db.api import database
from compass.db.api import permission
from compass.db.api import user as user_api
from compass.db import exception
from compass.utils import flags
from compass.utils import logsetting
os.environ['COMPASS_IGNORE_SETTING'] = 'true'
class BaseTest(unittest2.TestCase):
"""Base Class for unit test."""
def setUp(self):
super(BaseTest, self).setUp()
database.init('sqlite://')
database.create_db()
self.user_object = (
user_api.get_user_object(
'admin@abc.com'
)
)
def tearDown(self):
database.drop_db()
super(BaseTest, self).tearDown()
class TestListPermissions(BaseTest):
"""Test list permissions."""
def setUp(self):
super(TestListPermissions, self).setUp()
logsetting.init()
def tearDown(self):
super(TestListPermissions, self).tearDown()
database.drop_db()
def test_list_permissions(self):
permissions = permission.list_permissions(self.user_object)
self.assertIsNotNone(permissions)
class TestGetPermission(BaseTest):
"""Test get permission."""
def setUp(self):
super(TestGetPermission, self).setUp()
logsetting.init()
def tearDown(self):
super(TestGetPermission, self).tearDown()
database.drop_db()
def test_get_permission(self):
get_permission = permission.get_permission(self.user_object, 1)
self.assertIsNotNone(get_permission)
if __name__ == '__main__':
unittest2.main()

View File

@ -0,0 +1,157 @@
# Copyright 2014 Huawei Technologies Co. Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import datetime
import logging
import os
import unittest2
from compass.db.api import database
from compass.db.api import user as user_api
from compass.db.api import user_log
from compass.db import exception
from compass.utils import flags
from compass.utils import logsetting
os.environ['COMPASS_IGNORE_SETTING'] = 'true'
class BaseTest(unittest2.TestCase):
"""Base Class for unit test."""
def setUp(self):
super(BaseTest, self).setUp()
database.init('sqlite://')
database.create_db()
self.user_object = (
user_api.get_user_object(
'admin@abc.com',
)
)
def tearDown(self):
database.drop_db()
super(BaseTest, self).tearDown()
class TestListUserActions(BaseTest):
"""Test user actions."""
def setUp(self):
super(TestListUserActions, self).setUp()
logsetting.init()
def tearDown(self):
super(TestListUserActions, self).tearDown()
database.drop_db()
def test_list_user_actions(self):
user_log.log_user_action(
self.user_object.id,
action='/testaction'
)
user_action = user_log.list_user_actions(
self.user_object,
self.user_object.id
)
self.assertEqual(
1,
user_action['user_id']
)
def test_list_none_user_actions(self):
user_log.log_user_action(
self.user_object.id,
action='/testaction'
)
user_action = user_log.list_user_actions(
self.user_object,
2
)
self.assertEqual([], user_action['logs'])
class TestListActions(BaseTest):
"""Test list actions."""
def setUp(self):
super(TestListActions, self).setUp()
logsetting.init()
def tearDown(self):
super(TestListActions, self).tearDown()
database.drop_db()
def test_list_actions(self):
user_log.log_user_action(
self.user_object.id,
action='/testaction'
)
action = user_log.list_actions(self.user_object)
self.assertIsNotNone(action)
class TestDelUserActions(BaseTest):
"""Test delete user actions."""
def setUp(self):
super(TestDelUserActions, self).setUp()
logsetting.init()
def tearDown(self):
super(TestDelUserActions, self).tearDown()
database.drop_db()
def test_del_user_actions(self):
user_log.log_user_action(
self.user_object.id,
action='/testaction'
)
user_log.del_user_actions(
self.user_object,
self.user_object.id
)
del_user_action = user_log.list_user_actions(
self.user_object,
self.user_object.id
)
self.assertEqual([], del_user_action['logs'])
class TestDelActions(BaseTest):
"""Test delete actions."""
def setUp(self):
super(TestDelActions, self).setUp()
logsetting.init()
def tearDown(self):
super(TestDelActions, self).setUp()
database.drop_db()
def test_del_actions(self):
user_log.log_user_action(
self.user_object.id,
action='/testaction'
)
user_log.del_actions(
self.user_object
)
del_action = user_log.list_actions(
self.user_object
)
self.assertEqual([], del_action)
if __name__ == '__main__':
unittest2.main()