summaryrefslogtreecommitdiffstats
path: root/django/engagementmanager/tests/test_rgwa_client.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/engagementmanager/tests/test_rgwa_client.py')
-rwxr-xr-xdjango/engagementmanager/tests/test_rgwa_client.py214
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.