diff options
| author | Michael Basnight <mbasnight@gmail.com> | 2013-06-17 23:34:27 -0700 |
|---|---|---|
| committer | Michael Basnight <mbasnight@gmail.com> | 2013-06-21 20:15:23 +0000 |
| commit | 9916c8f2733b683d859770d05dacd2c9c82912d7 (patch) | |
| tree | 084a0d53580cbbd34ed8f28de9302d6c78f7050d /troveclient/tests/test_users.py | |
| parent | bc90b3e088d3d4b83b5b3de0f9f83d9b6956947d (diff) | |
| download | python-troveclient-0.1.3.tar.gz | |
Rename from reddwarf to trove.0.1.3
Implements Blueprint reddwarf-trove-rename
Change-Id: Ib2d694c7466887ca297bea4250eca17cdc06b7bf
Diffstat (limited to 'troveclient/tests/test_users.py')
| -rw-r--r-- | troveclient/tests/test_users.py | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/troveclient/tests/test_users.py b/troveclient/tests/test_users.py new file mode 100644 index 0000000..0fc32f6 --- /dev/null +++ b/troveclient/tests/test_users.py @@ -0,0 +1,126 @@ +from testtools import TestCase +from mock import Mock + +from troveclient import users +from troveclient import base + +""" +Unit tests for users.py +""" + + +class UserTest(TestCase): + + def setUp(self): + super(UserTest, self).setUp() + self.orig__init = users.User.__init__ + users.User.__init__ = Mock(return_value=None) + self.user = users.User() + + def tearDown(self): + super(UserTest, self).tearDown() + users.User.__init__ = self.orig__init + + def test___repr__(self): + self.user.name = "user-1" + self.assertEqual('<User: user-1>', self.user.__repr__()) + + +class UsersTest(TestCase): + + def setUp(self): + super(UsersTest, self).setUp() + self.orig__init = users.Users.__init__ + users.Users.__init__ = Mock(return_value=None) + self.users = users.Users() + self.users.api = Mock() + self.users.api.client = Mock() + + self.orig_base_getid = base.getid + base.getid = Mock(return_value="instance1") + + def tearDown(self): + super(UsersTest, self).tearDown() + users.Users.__init__ = self.orig__init + base.getid = self.orig_base_getid + + def _get_mock_method(self): + self._resp = Mock() + self._body = None + self._url = None + + def side_effect_func(url, body=None): + self._body = body + self._url = url + return (self._resp, body) + + return Mock(side_effect=side_effect_func) + + def _build_fake_user(self, name, hostname=None, password=None, + databases=None): + return {'name': name, + 'password': password if password else 'password', + 'host': hostname, + 'databases': databases if databases else [], + } + + def test_create(self): + self.users.api.client.post = self._get_mock_method() + self._resp.status = 200 + user = self._build_fake_user('user1') + + self.users.create(23, [user]) + self.assertEqual('/instances/23/users', self._url) + self.assertEqual({"users": [user]}, self._body) + + # Even if host isn't supplied originally, + # the default is supplied. + del user['host'] + self.users.create(23, [user]) + self.assertEqual('/instances/23/users', self._url) + user['host'] = '%' + self.assertEqual({"users": [user]}, self._body) + + # If host is supplied, of course it's put into the body. + user['host'] = '127.0.0.1' + self.users.create(23, [user]) + self.assertEqual({"users": [user]}, self._body) + + # Make sure that response of 400 is recognized as an error. + user['host'] = '%' + self._resp.status = 400 + self.assertRaises(Exception, self.users.create, 12, [user]) + + def test_delete(self): + self.users.api.client.delete = self._get_mock_method() + self._resp.status = 200 + self.users.delete(27, 'user1') + self.assertEqual('/instances/27/users/user1', self._url) + self._resp.status = 400 + self.assertRaises(Exception, self.users.delete, 34, 'user1') + + def test__list(self): + def side_effect_func(self, val): + return val + + key = 'key' + body = Mock() + body.get = Mock(return_value=[{'href': 'http://test.net/test_file', + 'rel': 'next'}]) + body.__getitem__ = Mock(return_value=["test-value"]) + + resp = Mock() + resp.status = 200 + self.users.resource_class = Mock(side_effect=side_effect_func) + self.users.api.client.get = Mock(return_value=(resp, body)) + self.assertEqual(["test-value"], self.users._list('url', key).items) + + self.users.api.client.get = Mock(return_value=(resp, None)) + self.assertRaises(Exception, self.users._list, 'url', None) + + def test_list(self): + def side_effect_func(path, user, limit, marker): + return path + + self.users._list = Mock(side_effect=side_effect_func) + self.assertEqual('/instances/instance1/users', self.users.list(1)) |
