From 4289ddd47a9c92eb3033eccf39966915caae05db Mon Sep 17 00:00:00 2001 From: Dean Troyer Date: Thu, 18 Sep 2014 00:55:58 -0500 Subject: Low-level Compute v2 API: security group api.compute.APIv2 starts with security group functions. novaclient 8.0 is now released without support for the previously deprecated nova-net functions, so include a new low-level REST implementation of the removed APIs. Change-Id: Id007535f0598226a8202716232313e37fe6247f9 --- openstackclient/tests/unit/api/test_compute_v2.py | 228 ++++++++++++++++++++++ 1 file changed, 228 insertions(+) create mode 100644 openstackclient/tests/unit/api/test_compute_v2.py (limited to 'openstackclient/tests/unit/api') diff --git a/openstackclient/tests/unit/api/test_compute_v2.py b/openstackclient/tests/unit/api/test_compute_v2.py new file mode 100644 index 00000000..f443e810 --- /dev/null +++ b/openstackclient/tests/unit/api/test_compute_v2.py @@ -0,0 +1,228 @@ +# 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. +# + +"""Compute v2 API Library Tests""" + +from requests_mock.contrib import fixture + +from keystoneclient import session +from openstackclient.api import compute_v2 as compute +from openstackclient.tests.unit import utils +from osc_lib import exceptions as osc_lib_exceptions + + +FAKE_PROJECT = 'xyzpdq' +FAKE_URL = 'http://gopher.com/v2' + + +class TestComputeAPIv2(utils.TestCase): + + def setUp(self): + super(TestComputeAPIv2, self).setUp() + sess = session.Session() + self.api = compute.APIv2(session=sess, endpoint=FAKE_URL) + self.requests_mock = self.useFixture(fixture.Fixture()) + + +class TestSecurityGroup(TestComputeAPIv2): + + FAKE_SECURITY_GROUP_RESP = { + 'id': '1', + 'name': 'sg1', + 'description': 'test security group', + 'tenant_id': '0123456789', + 'rules': [] + } + FAKE_SECURITY_GROUP_RESP_2 = { + 'id': '2', + 'name': 'sg2', + 'description': 'another test security group', + 'tenant_id': '0123456789', + 'rules': [] + } + LIST_SECURITY_GROUP_RESP = [ + FAKE_SECURITY_GROUP_RESP_2, + FAKE_SECURITY_GROUP_RESP, + ] + + def test_security_group_create_default(self): + self.requests_mock.register_uri( + 'POST', + FAKE_URL + '/os-security-groups', + json={'security_group': self.FAKE_SECURITY_GROUP_RESP}, + status_code=200, + ) + ret = self.api.security_group_create('sg1') + self.assertEqual(self.FAKE_SECURITY_GROUP_RESP, ret) + + def test_security_group_create_options(self): + self.requests_mock.register_uri( + 'POST', + FAKE_URL + '/os-security-groups', + json={'security_group': self.FAKE_SECURITY_GROUP_RESP}, + status_code=200, + ) + ret = self.api.security_group_create( + name='sg1', + description='desc', + ) + self.assertEqual(self.FAKE_SECURITY_GROUP_RESP, ret) + + def test_security_group_delete_id(self): + self.requests_mock.register_uri( + 'GET', + FAKE_URL + '/os-security-groups/1', + json={'security_group': self.FAKE_SECURITY_GROUP_RESP}, + status_code=200, + ) + self.requests_mock.register_uri( + 'DELETE', + FAKE_URL + '/os-security-groups/1', + status_code=202, + ) + ret = self.api.security_group_delete('1') + self.assertEqual(202, ret.status_code) + self.assertEqual("", ret.text) + + def test_security_group_delete_name(self): + self.requests_mock.register_uri( + 'GET', + FAKE_URL + '/os-security-groups/sg1', + status_code=404, + ) + self.requests_mock.register_uri( + 'GET', + FAKE_URL + '/os-security-groups', + json={'security_groups': self.LIST_SECURITY_GROUP_RESP}, + status_code=200, + ) + self.requests_mock.register_uri( + 'DELETE', + FAKE_URL + '/os-security-groups/1', + status_code=202, + ) + ret = self.api.security_group_delete('sg1') + self.assertEqual(202, ret.status_code) + self.assertEqual("", ret.text) + + def test_security_group_delete_not_found(self): + self.requests_mock.register_uri( + 'GET', + FAKE_URL + '/os-security-groups/sg3', + status_code=404, + ) + self.requests_mock.register_uri( + 'GET', + FAKE_URL + '/os-security-groups', + json={'security_groups': self.LIST_SECURITY_GROUP_RESP}, + status_code=200, + ) + self.assertRaises( + osc_lib_exceptions.NotFound, + self.api.security_group_delete, + 'sg3', + ) + + def test_security_group_find_id(self): + self.requests_mock.register_uri( + 'GET', + FAKE_URL + '/os-security-groups/1', + json={'security_group': self.FAKE_SECURITY_GROUP_RESP}, + status_code=200, + ) + ret = self.api.security_group_find('1') + self.assertEqual(self.FAKE_SECURITY_GROUP_RESP, ret) + + def test_security_group_find_name(self): + self.requests_mock.register_uri( + 'GET', + FAKE_URL + '/os-security-groups/sg2', + status_code=404, + ) + self.requests_mock.register_uri( + 'GET', + FAKE_URL + '/os-security-groups', + json={'security_groups': self.LIST_SECURITY_GROUP_RESP}, + status_code=200, + ) + ret = self.api.security_group_find('sg2') + self.assertEqual(self.FAKE_SECURITY_GROUP_RESP_2, ret) + + def test_security_group_find_not_found(self): + self.requests_mock.register_uri( + 'GET', + FAKE_URL + '/os-security-groups/sg3', + status_code=404, + ) + self.requests_mock.register_uri( + 'GET', + FAKE_URL + '/os-security-groups', + json={'security_groups': self.LIST_SECURITY_GROUP_RESP}, + status_code=200, + ) + self.assertRaises( + osc_lib_exceptions.NotFound, + self.api.security_group_find, + 'sg3', + ) + + def test_security_group_list_no_options(self): + self.requests_mock.register_uri( + 'GET', + FAKE_URL + '/os-security-groups', + json={'security_groups': self.LIST_SECURITY_GROUP_RESP}, + status_code=200, + ) + ret = self.api.security_group_list() + self.assertEqual(self.LIST_SECURITY_GROUP_RESP, ret) + + def test_security_group_set_options_id(self): + self.requests_mock.register_uri( + 'GET', + FAKE_URL + '/os-security-groups/1', + json={'security_group': self.FAKE_SECURITY_GROUP_RESP}, + status_code=200, + ) + self.requests_mock.register_uri( + 'PUT', + FAKE_URL + '/os-security-groups/1', + json={'security_group': self.FAKE_SECURITY_GROUP_RESP}, + status_code=200, + ) + ret = self.api.security_group_set( + security_group='1', + description='desc2') + self.assertEqual(self.FAKE_SECURITY_GROUP_RESP, ret) + + def test_security_group_set_options_name(self): + self.requests_mock.register_uri( + 'GET', + FAKE_URL + '/os-security-groups/sg2', + status_code=404, + ) + self.requests_mock.register_uri( + 'GET', + FAKE_URL + '/os-security-groups', + json={'security_groups': self.LIST_SECURITY_GROUP_RESP}, + status_code=200, + ) + self.requests_mock.register_uri( + 'PUT', + FAKE_URL + '/os-security-groups/2', + json={'security_group': self.FAKE_SECURITY_GROUP_RESP_2}, + status_code=200, + ) + ret = self.api.security_group_set( + security_group='sg2', + description='desc2') + self.assertEqual(self.FAKE_SECURITY_GROUP_RESP_2, ret) -- cgit v1.2.1