
This commit supports FWaaS v2 CLI as OSC plugin[1]. [1] http://specs.openstack.org/openstack/neutron-specs/specs/newton/fwaas-api-2.0.html Partial-Implements: blueprint fwaas-api-2.0 Depends-On: I7b4108772e8370e8f51971caf40ecd23e9f977e9 Change-Id: I57504f97ac39b5b7d301fd5cc88228a121f0677e Closes-Bug: #1609686
271 lines
8.9 KiB
Python
271 lines
8.9 KiB
Python
# Copyright 2016 FUJITSU LIMITED
|
|
# All Rights Reserved
|
|
#
|
|
# 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 osc_lib.tests import utils
|
|
|
|
from neutronclient.tests.unit.osc.v2 import fakes as test_fakes
|
|
|
|
|
|
class TestListFWaaS(test_fakes.TestNeutronClientOSCV2):
|
|
|
|
def test_list_with_no_option(self):
|
|
arglist = []
|
|
verifylist = []
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
headers, data = self.cmd.take_action(parsed_args)
|
|
|
|
self.mocked.assert_called_once_with()
|
|
self.assertEqual(list(self.list_headers), headers)
|
|
self.assertEqual([self.list_data], list(data))
|
|
|
|
def test_list_with_long_option(self):
|
|
arglist = ['--long']
|
|
verifylist = [('long', True)]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
headers, data = self.cmd.take_action(parsed_args)
|
|
|
|
self.mocked.assert_called_once_with()
|
|
self.assertEqual(list(self.headers), headers)
|
|
self.assertEqual([self.data], list(data))
|
|
|
|
|
|
class TestShowFWaaS(test_fakes.TestNeutronClientOSCV2):
|
|
|
|
def test_show_filtered_by_id_or_name(self):
|
|
target = self.resource['id']
|
|
arglist = [target]
|
|
verifylist = [(self.res, target)]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
headers, data = self.cmd.take_action(parsed_args)
|
|
|
|
self.mocked.assert_called_once_with(target)
|
|
self.assertEqual(self.ordered_headers, headers)
|
|
self.assertEqual(self.ordered_data, data)
|
|
|
|
|
|
class TestCreateFWaaS(test_fakes.TestNeutronClientOSCV2):
|
|
pass
|
|
|
|
|
|
class TestSetFWaaS(test_fakes.TestNeutronClientOSCV2):
|
|
|
|
def test_set_name(self):
|
|
target = self.resource['id']
|
|
update = 'change'
|
|
arglist = [target, '--name', update]
|
|
verifylist = [
|
|
(self.res, target),
|
|
('name', update),
|
|
]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
result = self.cmd.take_action(parsed_args)
|
|
|
|
self.mocked.assert_called_once_with(
|
|
target, {self.res: {'name': update}})
|
|
self.assertIsNone(result)
|
|
|
|
def test_set_description(self):
|
|
target = self.resource['id']
|
|
update = 'change-desc'
|
|
arglist = [target, '--description', update]
|
|
verifylist = [
|
|
(self.res, target),
|
|
('description', update),
|
|
]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
result = self.cmd.take_action(parsed_args)
|
|
|
|
self.mocked.assert_called_once_with(
|
|
target, {self.res: {'description': update}})
|
|
self.assertIsNone(result)
|
|
|
|
def test_set_public(self):
|
|
target = self.resource['id']
|
|
arglist = [target, '--public']
|
|
verifylist = [
|
|
(self.res, target),
|
|
('public', True),
|
|
]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
result = self.cmd.take_action(parsed_args)
|
|
|
|
self.mocked.assert_called_once_with(
|
|
target, {self.res: {'public': True}})
|
|
self.assertIsNone(result)
|
|
|
|
def test_set_duplicate_public(self):
|
|
target = self.resource['id']
|
|
arglist = [target, '--public', '--public']
|
|
verifylist = [
|
|
(self.res, target),
|
|
('public', True),
|
|
]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
result = self.cmd.take_action(parsed_args)
|
|
|
|
self.mocked.assert_called_once_with(
|
|
target, {self.res: {'public': True}})
|
|
self.assertIsNone(result)
|
|
|
|
def test_set_private(self):
|
|
target = self.resource['id']
|
|
arglist = [target, '--private']
|
|
verifylist = [
|
|
(self.res, target),
|
|
('public', False),
|
|
]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
result = self.cmd.take_action(parsed_args)
|
|
|
|
self.mocked.assert_called_once_with(
|
|
target, {self.res: {'public': False}})
|
|
self.assertIsNone(result)
|
|
|
|
def test_set_duplicate_private(self):
|
|
target = self.resource['id']
|
|
arglist = [target, '--private', '--private']
|
|
verifylist = [
|
|
(self.res, target),
|
|
('public', False),
|
|
]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
result = self.cmd.take_action(parsed_args)
|
|
|
|
self.mocked.assert_called_once_with(
|
|
target, {self.res: {'public': False}})
|
|
self.assertIsNone(result)
|
|
|
|
def test_set_private_and_public(self):
|
|
target = self.resource['id']
|
|
arglist = [target, '--private', '--public']
|
|
verifylist = [
|
|
(self.res, target),
|
|
('private', True),
|
|
('public', True),
|
|
]
|
|
self.assertRaises(
|
|
utils.ParserException,
|
|
self.check_parser, self.cmd, arglist, verifylist)
|
|
|
|
def test_set_public_and_priavte(self):
|
|
target = self.resource['id']
|
|
arglist = [target, '--public', '--private']
|
|
verifylist = [
|
|
(self.res, target),
|
|
('public', True),
|
|
('private', True),
|
|
]
|
|
self.assertRaises(
|
|
utils.ParserException,
|
|
self.check_parser, self.cmd, arglist, verifylist)
|
|
|
|
def test_set_project(self):
|
|
target = self.resource['id']
|
|
project_id = 'b14ce3b699594d13819a859480286489'
|
|
arglist = [target, '--project', project_id]
|
|
verifylist = [
|
|
(self.res, target),
|
|
('tenant_id', project_id),
|
|
]
|
|
self.assertRaises(
|
|
utils.ParserException,
|
|
self.check_parser, self.cmd, arglist, verifylist)
|
|
|
|
def test_set_project_domain(self):
|
|
target = self.resource['id']
|
|
project_domain = 'mydomain.com'
|
|
arglist = [target, '--project-domain', project_domain]
|
|
verifylist = [
|
|
(self.res, target),
|
|
('project_domain', project_domain),
|
|
]
|
|
self.assertRaises(
|
|
utils.ParserException,
|
|
self.check_parser, self.cmd, arglist, verifylist)
|
|
|
|
|
|
class TestDeleteFWaaS(test_fakes.TestNeutronClientOSCV2):
|
|
|
|
def test_delete_with_one_resource(self):
|
|
target = self.resource['id']
|
|
arglist = [target]
|
|
verifylist = [(self.res, [target])]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
result = self.cmd.take_action(parsed_args)
|
|
|
|
self.mocked.assert_called_once_with(target)
|
|
self.assertIsNone(result)
|
|
|
|
def test_delete_with_multiple_resources(self):
|
|
target1 = 'target1'
|
|
target2 = 'target2'
|
|
arglist = [target1, target2]
|
|
verifylist = [(self.res, [target1, target2])]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
result = self.cmd.take_action(parsed_args)
|
|
self.assertIsNone(result)
|
|
|
|
self.assertEqual(2, self.mocked.call_count)
|
|
for idx, reference in enumerate([target1, target2]):
|
|
actual = ''.join(self.mocked.call_args_list[idx][0])
|
|
self.assertEqual(reference, actual)
|
|
|
|
|
|
class TestUnsetFWaaS(test_fakes.TestNeutronClientOSCV2):
|
|
|
|
def test_unset_public(self):
|
|
target = self.resource['id']
|
|
arglist = [
|
|
target,
|
|
'--public',
|
|
]
|
|
verifylist = [
|
|
(self.res, target),
|
|
('public', True),
|
|
]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
result = self.cmd.take_action(parsed_args)
|
|
self.mocked.assert_called_once_with(
|
|
target, {self.res: {'public': False}})
|
|
self.assertIsNone(result)
|
|
|
|
def test_set_public_and_priavte(self):
|
|
target = self.resource['id']
|
|
arglist = [target, '--public', '--private']
|
|
verifylist = [
|
|
(self.res, target),
|
|
('public', True),
|
|
('private', True),
|
|
]
|
|
# check_parser: error: unrecognized arguments: --private
|
|
self.assertRaises(
|
|
utils.ParserException,
|
|
self.check_parser, self.cmd, arglist, verifylist)
|
|
|
|
def test_set_duplicate_public(self):
|
|
target = self.resource['id']
|
|
arglist = [target, '--public', '--public']
|
|
verifylist = [
|
|
(self.res, target),
|
|
('public', True),
|
|
]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
result = self.cmd.take_action(parsed_args)
|
|
|
|
self.mocked.assert_called_once_with(
|
|
target, {self.res: {'public': False}})
|
|
self.assertIsNone(result)
|