From 6ed70ab2d12b598fe05dd3a94f7b1a17595a9570 Mon Sep 17 00:00:00 2001 From: Aleksey Ripinen Date: Tue, 24 Feb 2015 14:26:41 +0300 Subject: [PATCH] Added user_tokens controller Added UserToken class and nested manager. Change-Id: Ic4ad9f887b4ace4679241f2955c9709001880a16 --- storyboardclient/tests/v1/test_users.py | 56 +++++++++++++++++++++++++ storyboardclient/v1/stories.py | 2 +- storyboardclient/v1/user_tokens.py | 28 +++++++++++++ storyboardclient/v1/users.py | 2 + 4 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 storyboardclient/tests/v1/test_users.py create mode 100644 storyboardclient/v1/user_tokens.py diff --git a/storyboardclient/tests/v1/test_users.py b/storyboardclient/tests/v1/test_users.py new file mode 100644 index 0000000..3a7eed8 --- /dev/null +++ b/storyboardclient/tests/v1/test_users.py @@ -0,0 +1,56 @@ +# Copyright (c) 2014 Mirantis Inc. +# +# 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 mock + +from storyboardclient.tests import base as test_base +from storyboardclient.v1 import users + + +class UserTestCase(test_base.TestCase): + + @mock.patch( + "storyboardclient.v1.user_tokens.UserTokensNestedManager._list" + ) + def test_user_list_tokens(self, mock_private_list): + user = users.User(manager=mock.MagicMock(), info={"id": "test_id"}) + + user.user_tokens.list() + + mock_private_list.assert_called_once_with( + "/users/test_id/tokens", None) + + @mock.patch( + "storyboardclient.v1.user_tokens.UserTokensNestedManager._post" + ) + def test_user_create_token(self, mock_private_post): + user = users.User(manager=mock.MagicMock(), info={"id": "test_id"}) + + user.user_tokens.create(expires_in=300, user_id="test_id") + + mock_private_post.assert_called_once_with( + "/users/test_id/tokens", + {"expires_in": 300, + "user_id": "test_id"}) + + @mock.patch("storyboardclient.v1.user_tokens.UserTokensNestedManager._put") + def test_user_update_token(self, mock_private_put): + user = users.User(manager=mock.MagicMock(), info={"id": "test_id"}) + + user.user_tokens.update(id="test_token_id", expires_in=500) + + mock_private_put.assert_called_once_with( + "/users/test_id/tokens/test_token_id", + {"expires_in": 500}) diff --git a/storyboardclient/v1/stories.py b/storyboardclient/v1/stories.py index fb5ee2c..3642b65 100644 --- a/storyboardclient/v1/stories.py +++ b/storyboardclient/v1/stories.py @@ -29,4 +29,4 @@ class Story(base.BaseObject): class StoriesManager(base.BaseManager): url_key = "stories" - resource_class = Story \ No newline at end of file + resource_class = Story diff --git a/storyboardclient/v1/user_tokens.py b/storyboardclient/v1/user_tokens.py new file mode 100644 index 0000000..aea79ee --- /dev/null +++ b/storyboardclient/v1/user_tokens.py @@ -0,0 +1,28 @@ +# Copyright (c) 2015 Mirantis Inc. +# +# 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. + +from storyboardclient import base + + +class UserToken(base.BaseObject): + user_id = None + access_token = None + expires_in = None + + +class UserTokensNestedManager(base.BaseNestedManager): + parent_url_key = "users" + url_key = "tokens" + resource_class = UserToken diff --git a/storyboardclient/v1/users.py b/storyboardclient/v1/users.py index a355e0e..af420ed 100644 --- a/storyboardclient/v1/users.py +++ b/storyboardclient/v1/users.py @@ -15,6 +15,7 @@ from storyboardclient import base from storyboardclient.v1 import user_preferences +from storyboardclient.v1 import user_tokens class User(base.BaseObject): @@ -26,6 +27,7 @@ class User(base.BaseObject): enable_login = None user_preferences = user_preferences.UserPreferencesManager + user_tokens = user_tokens.UserTokensNestedManager class UsersManager(base.BaseManager):