diff options
Diffstat (limited to 'django/engagementmanager/tests/test_rgwa_client.py')
-rwxr-xr-x | django/engagementmanager/tests/test_rgwa_client.py | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/django/engagementmanager/tests/test_rgwa_client.py b/django/engagementmanager/tests/test_rgwa_client.py new file mode 100755 index 0000000..a65f5b3 --- /dev/null +++ b/django/engagementmanager/tests/test_rgwa_client.py @@ -0,0 +1,214 @@ +# +# ============LICENSE_START========================================== +# org.onap.vvp/engagementmgr +# =================================================================== +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the “License”); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the “License”); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +from engagementmanager.utils.constants import Constants +from validationmanager.rados.rgwa_client import _validate_args, RGWAClient + + +try: + from unittest.mock import patch, ANY +except ImportError: + from mock import patch, ANY + +try: + from unittest import assertRaises, expectedFailure +except ImportError: + from pytest import raises as assertRaises + from pytest import mark + expectedFailure = mark.xfail + + +class Test_ValidateArgs(object): + + def setup(self): + self.valid_args = { + 'foo': ['foo1', 'foo2'], + 'bar': [1, 2, 3], + } + + def test_unconstrained(self): + _validate_args(self.valid_args, baz="quux") + + def test_none_value(self): + _validate_args(self.valid_args, foo=None) + + def test_good_value(self): + _validate_args(self.valid_args, foo="foo1") + + def test_bad_value_raises(self): + with assertRaises(ValueError): + _validate_args(self.valid_args, foo="foo3") + + +@patch('ice_rgwa_client.request') +class TestRGWAClientMethods(object): + """Tests that all the methods invoke requests.request() with the + appropriate arguments. + + """ + + def setup(self): + self.access_key = 'ABCDEFGHIJKLMNOPQRST' + self.secret_key = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn' + self.conn = RGWAClient( + access_key=self.access_key, + secret_key=self.secret_key, + base_url=Constants.rgwa_base_url + ) + + def test_get_usage(self, r): + self.conn.get_usage(uid='foo', show_entries=True) + r.assert_called_once_with( + auth=ANY, + method='get', + json={}, + params={'show-entries': True, 'show-summary': False, 'uid': 'foo'}, + url=Constants.rgwa_base_url+'/usage', + verify=True, + ) + + def test_trim_usage(self, r): + self.conn.trim_usage(uid='foo', remove_all=True) + r.assert_called_once_with( + auth=ANY, + method='delete', + json={}, + params={'remove-all': True, 'uid': 'foo'}, + url='http://localhost:8123/admin/usage', + verify=True, + ) + + def test_get_user(self, r): + self.conn.get_user(uid='foo') + r.assert_called_once_with( + auth=ANY, + method='get', + json={}, + params={'uid': 'foo'}, + url=Constants.rgwa_base_url+'/user', + verify=True, + ) + + # Marked FIXME because we experience diminishing returns here. All the + # methods in the library are basically one-liner calls to the common + # _request method, which has been sufficiently covered. There's no + # additional business logic that would be tested, only ensuring beyond api + # stability. Time would be better spent figuring out how to get tox to + # stand up testing instances of various versions of an actual radosgw + # server for integration testing. + + @expectedFailure + def test_create_user(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_modify_user(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_remove_user(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_create_subuser(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_modify_subuser(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_remove_subuser(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_create_key(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_remove_key(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_get_bucket(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_check_bucket_index(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_remove_bucket(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_unlink_bucket(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_link_bucket(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_remove_object(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_get_policy(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_add_capability(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_remove_capability(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_get_quota(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_set_quota(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_get_user_quota(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_set_user_quota(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_get_user_bucket_quota(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_set_user_bucket_quota(self, r): + raise NotImplementedError # FIXME + + @expectedFailure + def test_get_users(self, r): + raise NotImplementedError # FIXME + @expectedFailure + def test_get_buckets(self, r): + raise NotImplementedError # FIXME + + +# FIXME TODO Add integration tests against a local ceph radosgw instance, +# (disabled by default). Record result of test suite in repository. |