Avoid import internal classes from SDK (2)

This is part of a series of changes related to the usage of SDK. In some
test cases, we are importing the resource classes from SDK directly and
even instantiate them. This is bad for unit tests. We should instead
mock those resources for unit tests. When functional tests are added,
the real resource list/dump will be tested instead.

Change-Id: I3800f959f3836c77ef1ecff2491af90926e84a26
This commit is contained in:
tengqm
2017-02-15 03:36:56 -05:00
parent 4273feb35b
commit 8828ef86a3
3 changed files with 278 additions and 313 deletions

View File

@@ -14,7 +14,6 @@ import copy
import subprocess
import mock
from openstack.cluster.v1 import cluster as sdk_cluster
from openstack import exceptions as sdk_exc
from osc_lib import exceptions as exc
import six
@@ -32,35 +31,6 @@ class TestCluster(fakes.TestClusteringv1):
class TestClusterList(TestCluster):
columns = ['id', 'name', 'status', 'created_at', 'updated_at']
response = {"clusters": [
{
"created_at": "2015-02-10T14:26:14",
"data": {},
"desired_capacity": 4,
"domain": 'null',
"id": "7d85f602-a948-4a30-afd4-e84f47471c15",
"init_time": "2015-02-10T14:26:11",
"max_size": -1,
"metadata": {},
"min_size": 0,
"name": "cluster1",
"node_ids": [
"b07c57c8-7ab2-47bf-bdf8-e894c0c601b9",
"ecc23d3e-bb68-48f8-8260-c9cf6bcb6e61",
"da1e9c87-e584-4626-a120-022da5062dac"
],
"policies": [],
"profile_id": "edc63d0a-2ca4-48fa-9854-27926da76a4a",
"profile_name": "mystack",
"project": "6e18cc2bdbeb48a5b3cad2dc499f6804",
"status": "ACTIVE",
"status_reason": "Cluster scale-in succeeded",
"timeout": 3600,
"updated_at": 'null',
"user": "5e5bf8027826429c96af157f68dc9072"
}
]}
defaults = {
'global_project': False,
'marker': None,
@@ -71,8 +41,35 @@ class TestClusterList(TestCluster):
def setUp(self):
super(TestClusterList, self).setUp()
self.cmd = osc_cluster.ListCluster(self.app, None)
self.mock_client.clusters = mock.Mock(
return_value=self.response)
fake_cluster = mock.Mock(
created_at="2015-02-10T14:26:14",
data={},
desired_capacity=4,
domain_id=None,
id="7d85f602-a948-4a30-afd4-e84f47471c15",
init_time="2015-02-10T14:26:11",
max_size=-1,
metadata={},
min_size=0,
node_ids=[
"b07c57c8-7ab2-47bf-bdf8-e894c0c601b9",
"ecc23d3e-bb68-48f8-8260-c9cf6bcb6e61",
"da1e9c87-e584-4626-a120-022da5062dac"
],
policies=[],
profile_id="edc63d0a-2ca4-48fa-9854-27926da76a4a",
profile_name="mystack",
project_id="6e18cc2bdbeb48a5b3cad2dc499f6804",
status="ACTIVE",
status_reason="Cluster scale-in succeeded",
timeout=3600,
updated_at=None,
user_id="5e5bf8027826429c96af157f68dc9072"
)
fake_cluster.name = "cluster1"
fake_cluster.to_dict = mock.Mock(return_value={})
self.mock_client.clusters = mock.Mock(return_value=[fake_cluster])
def test_cluster_list_defaults(self):
arglist = []
@@ -107,8 +104,6 @@ class TestClusterList(TestCluster):
self.assertEqual(self.columns, columns)
def test_cluster_list_sort_invalid_key(self):
self.mock_client.clusters = mock.Mock(
return_value=self.response)
kwargs = copy.deepcopy(self.defaults)
kwargs['sort'] = 'bad_key'
arglist = ['--sort', 'bad_key']
@@ -118,8 +113,6 @@ class TestClusterList(TestCluster):
self.cmd.take_action, parsed_args)
def test_cluster_list_sort_invalid_direction(self):
self.mock_client.clusters = mock.Mock(
return_value=self.response)
kwargs = copy.deepcopy(self.defaults)
kwargs['sort'] = 'name:bad_direction'
arglist = ['--sort', 'name:bad_direction']
@@ -148,34 +141,34 @@ class TestClusterList(TestCluster):
class TestClusterShow(TestCluster):
response = {"cluster": {
"created_at": "2015-02-11T15:13:20",
"data": {},
"desired_capacity": 0,
"domain": 'null',
"id": "45edadcb-c73b-4920-87e1-518b2f29f54b",
"init_time": "2015-02-10T14:26:10",
"max_size": -1,
"metadata": {},
"min_size": 0,
"name": "my_cluster",
"node_ids": [],
"policies": [],
"profile_id": "edc63d0a-2ca4-48fa-9854-27926da76a4a",
"profile_name": "mystack",
"project": "6e18cc2bdbeb48a5b3cad2dc499f6804",
"status": "ACTIVE",
"status_reason": "Creation succeeded",
"timeout": 3600,
"updated_at": 'null',
"user": "5e5bf8027826429c96af157f68dc9072"
}}
def setUp(self):
super(TestClusterShow, self).setUp()
self.cmd = osc_cluster.ShowCluster(self.app, None)
self.mock_client.get_cluster = mock.Mock(
return_value=sdk_cluster.Cluster(**self.response['cluster']))
fake_cluster = mock.Mock(
created_at="2015-02-11T15:13:20",
data={},
desired_capacity=0,
domain_id=None,
id="7d85f602-a948-4a30-afd4-e84f47471c15",
init_time="2015-02-10T14:26:11",
max_size=-1,
metadata={},
min_size=0,
node_ids=[],
policies=[],
profile_id="edc63d0a-2ca4-48fa-9854-27926da76a4a",
profile_name="mystack",
project_id="6e18cc2bdbeb48a5b3cad2dc499f6804",
status="ACTIVE",
status_reason="Cluster scale-in succeeded",
timeout=3600,
updated_at=None,
user_id="5e5bf8027826429c96af157f68dc9072"
)
fake_cluster.name = "my_cluster"
fake_cluster.to_dict = mock.Mock(return_value={})
self.mock_client.get_cluster = mock.Mock(return_value=fake_cluster)
def test_cluster_show(self):
arglist = ['my_cluster']
@@ -193,29 +186,6 @@ class TestClusterShow(TestCluster):
class TestClusterCreate(TestCluster):
response = {"cluster": {
"action": "bbf4558b-9fa3-482a-93c2-a4aa5cc85317",
"created_at": 'null',
"data": {},
"desired_capacity": 4,
"domain": 'null',
"id": "45edadcb-c73b-4920-87e1-518b2f29f54b",
"init_at": "2015-02-10T14:16:10",
"max_size": -1,
"metadata": {},
"min_size": 0,
"name": "test_cluster",
"node_ids": [],
"policies": [],
"profile_id": "edc63d0a-2ca4-48fa-9854-27926da76a4a",
"profile_name": "mystack",
"project": "6e18cc2bdbeb48a5b3cad2dc499f6804",
"status": "INIT",
"status_reason": "Initializing",
"timeout": 3600,
"updated_at": 'null',
"user": "5e5bf8027826429c96af157f68dc9072"
}}
defaults = {
"desired_capacity": 0,
@@ -230,10 +200,31 @@ class TestClusterCreate(TestCluster):
def setUp(self):
super(TestClusterCreate, self).setUp()
self.cmd = osc_cluster.CreateCluster(self.app, None)
self.mock_client.create_cluster = mock.Mock(
return_value=sdk_cluster.Cluster(**self.response['cluster']))
self.mock_client.get_cluster = mock.Mock(
return_value=sdk_cluster.Cluster(**self.response['cluster']))
fake_cluster = mock.Mock(
created_at="2015-02-11T15:13:20",
data={},
desired_capacity=0,
domain_id=None,
id="7d85f602-a948-4a30-afd4-e84f47471c15",
init_time="2015-02-10T14:26:11",
max_size=-1,
metadata={},
min_size=0,
node_ids=[],
policies=[],
profile_id="edc63d0a-2ca4-48fa-9854-27926da76a4a",
profile_name="mystack",
project_id="6e18cc2bdbeb48a5b3cad2dc499f6804",
status="ACTIVE",
status_reason="Cluster scale-in succeeded",
timeout=3600,
updated_at=None,
user_id="5e5bf8027826429c96af157f68dc9072"
)
fake_cluster.name = "my_cluster"
fake_cluster.to_dict = mock.Mock(return_value={})
self.mock_client.create_cluster = mock.Mock(return_value=fake_cluster)
self.mock_client.get_cluster = mock.Mock(return_value=fake_cluster)
def test_cluster_create_defaults(self):
arglist = ['test_cluster', '--profile', 'mystack']
@@ -264,28 +255,6 @@ class TestClusterCreate(TestCluster):
class TestClusterUpdate(TestCluster):
response = {"cluster": {
"created_at": "2015-02-11T15:13:20",
"data": {},
"desired_capacity": 0,
"domain": 'null',
"id": "45edadcb-c73b-4920-87e1-518b2f29f54b",
"init_time": "2015-02-10T14:26:10",
"max_size": -1,
"metadata": {},
"min_size": 0,
"name": "test_cluster",
"node_ids": [],
"policies": [],
"profile_id": "edc63d0a-2ca4-48fa-9854-27926da76a4a",
"profile_name": "mystack",
"project": "6e18cc2bdbeb48a5b3cad2dc499f6804",
"status": "INIT",
"status_reason": "Initializing",
"timeout": 3600,
"updated_at": 'null',
"user": "5e5bf8027826429c96af157f68dc9072"
}}
defaults = {
"metadata": {
@@ -300,12 +269,32 @@ class TestClusterUpdate(TestCluster):
def setUp(self):
super(TestClusterUpdate, self).setUp()
self.cmd = osc_cluster.UpdateCluster(self.app, None)
self.mock_client.update_cluster = mock.Mock(
return_value=sdk_cluster.Cluster(**self.response['cluster']))
self.mock_client.get_cluster = mock.Mock(
return_value=sdk_cluster.Cluster(**self.response['cluster']))
self.mock_client.find_cluster = mock.Mock(
return_value=sdk_cluster.Cluster(**self.response['cluster']))
fake_cluster = mock.Mock(
created_at="2015-02-11T15:13:20",
data={},
desired_capacity=0,
domain_id=None,
id="7d85f602-a948-4a30-afd4-e84f47471c15",
init_time="2015-02-10T14:26:11",
max_size=-1,
metadata={},
min_size=0,
node_ids=[],
policies=[],
profile_id="edc63d0a-2ca4-48fa-9854-27926da76a4a",
profile_name="mystack",
project_id="6e18cc2bdbeb48a5b3cad2dc499f6804",
status="ACTIVE",
status_reason="Cluster scale-in succeeded",
timeout=3600,
updated_at=None,
user_id="5e5bf8027826429c96af157f68dc9072"
)
fake_cluster.name = "my_cluster"
fake_cluster.to_dict = mock.Mock(return_value={})
self.mock_client.update_cluster = mock.Mock(return_value=fake_cluster)
self.mock_client.get_cluster = mock.Mock(return_value=fake_cluster)
self.mock_client.find_cluster = mock.Mock(return_value=fake_cluster)
def test_cluster_update_defaults(self):
arglist = ['--name', 'new_cluster', '--metadata', 'nk1=nv1;nk2=nv2',
@@ -313,7 +302,7 @@ class TestClusterUpdate(TestCluster):
parsed_args = self.check_parser(self.cmd, arglist, [])
self.cmd.take_action(parsed_args)
self.mock_client.update_cluster.assert_called_with(
'45edadcb-c73b-4920-87e1-518b2f29f54b', **self.defaults)
"7d85f602-a948-4a30-afd4-e84f47471c15", **self.defaults)
def test_cluster_update_not_found(self):
arglist = ['--name', 'new_cluster', '--metadata', 'nk1=nv1;nk2=nv2',
@@ -622,31 +611,6 @@ class TestClusterPolicyDetach(TestCluster):
class TestClusterNodeList(TestCluster):
columns = ['id', 'name', 'index', 'status', 'physical_id', 'created_at']
response = {"nodes": [
{
"cluster_id": None,
"created_at": "2015-02-27T04:39:21",
"data": {},
"details": {},
"domain": None,
"id": "573aa1ba-bf45-49fd-907d-6b5d6e6adfd3",
"index": -1,
"init_at": "2015-02-27T04:39:18",
"metadata": {},
"name": "node00a",
"physical_id": "cc028275-d078-4729-bf3e-154b7359814b",
"profile_id": "edc63d0a-2ca4-48fa-9854-27926da76a4a",
"profile_name": "mystack",
"project": "6e18cc2bdbeb48a5b3cad2dc499f6804",
"role": None,
"status": "ACTIVE",
"status_reason": "Creation succeeded",
"updated_at": None,
"user": "5e5bf8027826429c96af157f68dc9072"
}
]}
args = {
'cluster_id': 'my_cluster',
'marker': 'a9448bf6',
@@ -657,8 +621,28 @@ class TestClusterNodeList(TestCluster):
def setUp(self):
super(TestClusterNodeList, self).setUp()
self.cmd = osc_cluster.ClusterNodeList(self.app, None)
self.mock_client.nodes = mock.Mock(
return_value=self.response)
fake_node = mock.Mock(
cluster_id="",
created_at="2015-02-11T15:13:20",
data={},
details={},
domain_id=None,
id="7d85f602-a948-4a30-afd4-e84f47471c15",
index=-1,
init_at="2015-02-10T14:26:11",
metadata={},
phyiscal_id="cc028275-d078-4729-bf3e-154b7359814b",
profile_id="edc63d0a-2ca4-48fa-9854-27926da76a4a",
profile_name="mystack",
project_id="6e18cc2bdbeb48a5b3cad2dc499f6804",
status="ACTIVE",
status_reason="Creation succeeded",
updated_at=None,
user_id="5e5bf8027826429c96af157f68dc9072"
)
fake_node.name = "node001"
fake_node.to_dict = mock.Mock(return_value={})
self.mock_client.nodes = mock.Mock(return_value=[fake_node])
def test_cluster_node_list(self):
arglist = ['--limit', '3', '--marker', 'a9448bf6', 'my_cluster']

View File

@@ -13,7 +13,6 @@
import copy
import mock
from openstack.cluster.v1 import profile as sdk_profile
from openstack import exceptions as sdk_exc
from osc_lib import exceptions as exc
from osc_lib import utils
@@ -91,8 +90,20 @@ class TestProfileShow(TestProfile):
def setUp(self):
super(TestProfileShow, self).setUp()
self.cmd = osc_profile.ShowProfile(self.app, None)
self.mock_client.get_profile = mock.Mock(
return_value=sdk_profile.Profile(**self.response['profile']))
fake_profile = mock.Mock(
created_at="2015-03-01T14:28:25",
domain_id=None,
id="7fa885cd-fa39-4531-a42d-780af95c84a4",
metadata={},
project_id="42d9e9663331431f97b75e25136307ff",
spec={"foo": 'bar'},
type="os.heat.stack-1.0",
updated_at=None,
user_id="5e5bf8027826429c96af157f68dc9072"
)
fake_profile.name = "test_prof1"
fake_profile.to_dict = mock.Mock(return_value={})
self.mock_client.get_profile = mock.Mock(return_value=fake_profile)
utils.get_dict_properties = mock.Mock(return_value='')
def test_profile_show(self):
@@ -101,14 +112,12 @@ class TestProfileShow(TestProfile):
self.cmd.take_action(parsed_args)
self.mock_client.get_profile.assert_called_with('my_profile')
profile = self.mock_client.get_profile('my_profile')
self.assertEqual(self.response['profile']['project'],
self.assertEqual("42d9e9663331431f97b75e25136307ff",
profile.project_id)
self.assertEqual(self.response['profile']['id'], profile.id)
self.assertEqual(self.response['profile']['metadata'],
profile.metadata)
self.assertEqual(self.response['profile']['name'], profile.name)
self.assertEqual(self.response['profile']['spec'], profile.spec)
self.assertEqual(self.response['profile']['type'], profile.type)
self.assertEqual("7fa885cd-fa39-4531-a42d-780af95c84a4", profile.id)
self.assertEqual({}, profile.metadata)
self.assertEqual("test_prof1", profile.name)
self.assertEqual("os.heat.stack-1.0", profile.type)
def test_profile_show_not_found(self):
arglist = ['my_profile']
@@ -121,40 +130,31 @@ class TestProfileShow(TestProfile):
class TestProfileList(TestProfile):
columns = ['id', 'name', 'type', 'created_at']
data = {"profiles": [
{
"created_at": "2016-02-17T13:01:05",
"domain": None,
"id": "757347e0-6526-4a77-a16d-e099fecde123",
"metadata": {},
"name": "my_profile",
"project": "5f1cc92b578e4e25a3b284179cf20a9b",
"spec": {
"properties": {
"flavor": 1,
"name": "cirros_server"
},
"type": "os.nova.server",
"version": 1
},
"type": "os.nova.server-1.0",
"updated_at": None,
"user": "2d7aca950f3e465d8ef0c81720faf6ff"
}
]}
defaults = {
'limit': None,
'marker': None,
'sort': None,
'global_project': False,
}
def setUp(self):
super(TestProfileList, self).setUp()
self.cmd = osc_profile.ListProfile(self.app, None)
self.mock_client.profiles = mock.Mock(
return_value=self.data)
fake_profile = mock.Mock(
created_at="2015-03-01T14:28:25",
domain_id=None,
id="7fa885cd-fa39-4531-a42d-780af95c84a4",
metadata={},
project_id="42d9e9663331431f97b75e25136307ff",
spec={"foo": 'bar'},
type="os.heat.stack-1.0",
updated_at=None,
user_id="5e5bf8027826429c96af157f68dc9072"
)
fake_profile.name = "test_profile"
fake_profile.to_dict = mock.Mock(return_value={})
self.mock_client.profiles = mock.Mock(return_value=[fake_profile])
self.defaults = {
'limit': None,
'marker': None,
'sort': None,
'global_project': False,
}
self.columns = ['id', 'name', 'type', 'created_at']
def test_profile_list_defaults(self):
arglist = []
@@ -189,8 +189,6 @@ class TestProfileList(TestProfile):
self.assertEqual(self.columns, columns)
def test_profile_list_sort_invalid_key(self):
self.mock_client.profiles = mock.Mock(
return_value=self.data)
kwargs = copy.deepcopy(self.defaults)
kwargs['sort'] = 'bad_key'
arglist = ['--sort', 'bad_key']
@@ -200,8 +198,6 @@ class TestProfileList(TestProfile):
self.cmd.take_action, parsed_args)
def test_profile_list_sort_invalid_direction(self):
self.mock_client.profiles = mock.Mock(
return_value=self.data)
kwargs = copy.deepcopy(self.defaults)
kwargs['sort'] = 'id:bad_direction'
arglist = ['--sort', 'id:bad_direction']
@@ -221,6 +217,7 @@ class TestProfileList(TestProfile):
class TestProfileDelete(TestProfile):
def setUp(self):
super(TestProfileDelete, self).setUp()
self.cmd = osc_profile.DeleteProfile(self.app, None)
@@ -296,50 +293,46 @@ class TestProfileDelete(TestProfile):
class TestProfileCreate(TestProfile):
spec_path = 'senlinclient/tests/test_specs/nova_server.yaml'
response = {"profile": {
"created_at": "2016-02-17T12:10:57",
"domain": None,
"id": "e3057c77-a178-4265-bafd-16b2fae50eea",
"metadata": {},
"name": "pro-nova",
"project": "5f1cc92b578e4e25a3b284179cf20a9b",
"spec": {"properties": {
"flavor": 1,
"image": "cirros-0.3.4-x86_64-uec",
"name": "cirros_server"},
"type": "os.nova.server",
"version": 1.0},
"type": "os.nova.server-1.0",
"updated_at": None,
"user": "2d7aca950f3e465d8ef0c81720faf6ff"}}
defaults = {
"spec": {
"version": 1.0,
"type": "os.nova.server",
"properties": {
"flavor": 1,
"name": "cirros_server",
"image": "cirros-0.3.4-x86_64-uec"
},
},
"name": "my_profile",
"metadata": {}
}
def setUp(self):
super(TestProfileCreate, self).setUp()
self.cmd = osc_profile.CreateProfile(self.app, None)
self.mock_client.create_profile = mock.Mock(
return_value=sdk_profile.Profile(**self.response['profile']))
self.mock_client.get_profile = mock.Mock(
return_value=sdk_profile.Profile(**self.response['profile']))
fake_profile = mock.Mock(
created_at="2015-03-01T14:28:25",
domain_id=None,
id="7fa885cd-fa39-4531-a42d-780af95c84a4",
metadata={},
project_id="42d9e9663331431f97b75e25136307ff",
spec={"foo": 'bar'},
type="os.heat.stack-1.0",
updated_at=None,
user_id="5e5bf8027826429c96af157f68dc9072"
)
fake_profile.name = "test_profile"
fake_profile.to_dict = mock.Mock(return_value={})
self.mock_client.create_profile = mock.Mock(return_value=fake_profile)
self.mock_client.get_profile = mock.Mock(return_value=fake_profile)
utils.get_dict_properties = mock.Mock(return_value='')
self.defaults = {
"spec": {
"version": 1.0,
"type": "os.nova.server",
"properties": {
"flavor": 1,
"name": "cirros_server",
"image": "cirros-0.3.4-x86_64-uec"
},
},
"name": "my_profile",
"metadata": {}
}
def test_profile_create_defaults(self):
arglist = ['my_profile', '--spec-file', self.spec_path]
parsed_args = self.check_parser(self.cmd, arglist, [])
self.cmd.take_action(parsed_args)
self.mock_client.create_profile.assert_called_with(**self.defaults)
def test_profile_create_metadata(self):
@@ -354,52 +347,43 @@ class TestProfileCreate(TestProfile):
class TestProfileUpdate(TestProfile):
response = {"profile": {
"created_at": "2016-02-17T12:10:57",
"domain": None,
"id": "e3057c77-a178-4265-bafd-16b2fae50eea",
"metadata": {
"nk1": "nv1",
"nk2": "nv2",
},
"name": "new_profile",
"project": "5f1cc92b578e4e25a3b284179cf20a9b",
"spec": {"properties": {
"flavor": 1,
"image": "cirros-0.3.4-x86_64-uec",
"name": "cirros_server"},
"type": "os.nova.server",
"version": 1.0},
"type": "os.nova.server-1.0",
"updated_at": None,
"user": "2d7aca950f3e465d8ef0c81720faf6ff"}}
defaults = {
"name": "new_profile",
"metadata": {
"nk1": "nv1",
"nk2": "nv2",
}
}
def setUp(self):
super(TestProfileUpdate, self).setUp()
self.cmd = osc_profile.UpdateProfile(self.app, None)
self.mock_client.update_profile = mock.Mock(
return_value=sdk_profile.Profile(**self.response['profile']))
self.mock_client.get_profile = mock.Mock(
return_value=sdk_profile.Profile(**self.response['profile']))
self.mock_client.find_profile = mock.Mock(
return_value=sdk_profile.Profile(**self.response['profile']))
fake_profile = mock.Mock(
created_at="2015-03-01T14:28:25",
domain_id=None,
id="7fa885cd-fa39-4531-a42d-780af95c84a4",
metadata={},
project_id="42d9e9663331431f97b75e25136307ff",
spec={"foo": 'bar'},
type="os.heat.stack-1.0",
updated_at=None,
user_id="5e5bf8027826429c96af157f68dc9072"
)
fake_profile.name = "test_profile"
fake_profile.to_dict = mock.Mock(return_value={})
self.mock_client.update_profile = mock.Mock(return_value=fake_profile)
self.mock_client.get_profile = mock.Mock(return_value=fake_profile)
self.mock_client.find_profile = mock.Mock(return_value=fake_profile)
utils.get_dict_properties = mock.Mock(return_value='')
def test_profile_update_defaults(self):
arglist = ['--name', 'new_profile', '--metadata', 'nk1=nv1;nk2=nv2',
'e3057c77']
parsed_args = self.check_parser(self.cmd, arglist, [])
defaults = {
"name": "new_profile",
"metadata": {
"nk1": "nv1",
"nk2": "nv2",
}
}
self.cmd.take_action(parsed_args)
self.mock_client.update_profile.assert_called_with(
'e3057c77-a178-4265-bafd-16b2fae50eea', **self.defaults)
"7fa885cd-fa39-4531-a42d-780af95c84a4", **defaults)
def test_profile_update_not_found(self):
arglist = ['--name', 'new_profile', '--metadata', 'nk1=nv1;nk2=nv2',
@@ -416,23 +400,6 @@ class TestProfileUpdate(TestProfile):
class TestProfileValidate(TestProfile):
spec_path = 'senlinclient/tests/test_specs/nova_server.yaml'
response = {"profile": {
"created_at": None,
"domain": None,
"id": None,
"metadata": None,
"name": "validated_profile",
"project": "5f1cc92b578e4e25a3b284179cf20a9b",
"spec": {"properties": {
"flavor": 1,
"image": "cirros-0.3.4-x86_64-uec",
"name": "cirros_server"},
"type": "os.nova.server",
"version": 1.0},
"type": "os.nova.server-1.0",
"updated_at": None,
"user": "2d7aca950f3e465d8ef0c81720faf6ff"}}
defaults = {
"spec": {
"version": 1.0,
@@ -448,8 +415,21 @@ class TestProfileValidate(TestProfile):
def setUp(self):
super(TestProfileValidate, self).setUp()
self.cmd = osc_profile.ValidateProfile(self.app, None)
fake_profile = mock.Mock(
created_at=None,
domain_id=None,
id=None,
metadata={},
project_id="42d9e9663331431f97b75e25136307ff",
spec={"foo": 'bar'},
type="os.heat.stack-1.0",
updated_at=None,
user_id="5e5bf8027826429c96af157f68dc9072"
)
fake_profile.name = "test_profile"
fake_profile.to_dict = mock.Mock(return_value={})
self.mock_client.validate_profile = mock.Mock(
return_value=sdk_profile.Profile(**self.response['profile']))
return_value=fake_profile)
utils.get_dict_properties = mock.Mock(return_value='')
def test_profile_validate(self):
@@ -457,14 +437,13 @@ class TestProfileValidate(TestProfile):
parsed_args = self.check_parser(self.cmd, arglist, [])
self.cmd.take_action(parsed_args)
self.mock_client.validate_profile.assert_called_with(**self.defaults)
profile = self.mock_client.validate_profile(**self.defaults)
self.assertEqual(self.response['profile']['project'],
self.assertEqual("42d9e9663331431f97b75e25136307ff",
profile.project_id)
self.assertEqual(self.response['profile']['user'],
profile.user_id)
self.assertEqual(self.response['profile']['id'], profile.id)
self.assertEqual(self.response['profile']['metadata'],
profile.metadata)
self.assertEqual(self.response['profile']['name'], profile.name)
self.assertEqual(self.response['profile']['spec'], profile.spec)
self.assertEqual(self.response['profile']['type'], profile.type)
self.assertEqual("5e5bf8027826429c96af157f68dc9072", profile.user_id)
self.assertIsNone(profile.id)
self.assertEqual({}, profile.metadata)
self.assertEqual("test_profile", profile.name)
self.assertEqual("os.heat.stack-1.0", profile.type)

View File

@@ -11,7 +11,6 @@
# under the License.
import mock
from openstack.cluster.v1 import profile_type as sdk_profile_type
from openstack import exceptions as sdk_exc
from osc_lib import exceptions as exc
@@ -26,54 +25,57 @@ class TestProfileType(fakes.TestClusteringv1):
class TestProfileTypeList(TestProfileType):
expected_columns = ['name', 'version', 'support_status']
list_response = [
sdk_profile_type.ProfileType(
name='BBB', schema={'foo': 'bar'},
support_status={
"1.0": [{"status": "SUPPORTED", "since": "2016.10"}]
}
),
sdk_profile_type.ProfileType(
name='AAA', schema={'foo': 'bar'},
support_status={
"1.0": [{"status": "DEPRECATED", "since": "2016.01"}]
}
),
]
expected_rows = [
('AAA', '1.0', 'DEPRECATED since 2016.01'),
('BBB', '1.0', 'SUPPORTED since 2016.10')
]
def setUp(self):
super(TestProfileTypeList, self).setUp()
self.cmd = osc_profile_type.ProfileTypeList(self.app, None)
self.mock_client.profile_types = mock.Mock(
return_value=self.list_response)
pt1 = mock.Mock(
schema={'foo': 'bar'},
support_status={
"1.0": [{"status": "SUPPORTED", "since": "2016.10"}]
}
)
pt1.name = "BBB"
pt2 = mock.Mock(
schema={'foo': 'bar'},
support_status={
"1.0": [{"status": "DEPRECATED", "since": "2016.01"}]
}
)
pt2.name = "AAA"
self.mock_client.profile_types = mock.Mock(return_value=[pt1, pt2])
def test_profile_type_list(self):
arglist = []
parsed_args = self.check_parser(self.cmd, arglist, [])
expected_rows = [
('AAA', '1.0', 'DEPRECATED since 2016.01'),
('BBB', '1.0', 'SUPPORTED since 2016.10')
]
expected_columns = ['name', 'version', 'support_status']
columns, rows = self.cmd.take_action(parsed_args)
self.mock_client.profile_types.assert_called_with()
self.assertEqual(self.expected_columns, columns)
self.assertEqual(self.expected_rows, rows)
self.assertEqual(expected_columns, columns)
self.assertEqual(expected_rows, rows)
class TestProfileTypeShow(TestProfileType):
response = ({'name': 'os.heat.stack-1.0',
'schema': {
'foo': 'bar'}})
def setUp(self):
super(TestProfileTypeShow, self).setUp()
self.cmd = osc_profile_type.ProfileTypeShow(self.app, None)
self.mock_client.get_profile_type = mock.Mock(
return_value=sdk_profile_type.ProfileType(**self.response)
fake_profile_type = mock.Mock(
schema={'foo': 'bar'},
support_status={
"1.0": [{"status": "DEPRECATED", "since": "2016.01"}]
}
)
fake_profile_type.name = "os.heat.stack-1.0"
fake_profile_type.to_dict = mock.Mock(return_value={})
self.mock_client.get_profile_type = mock.Mock(
return_value=fake_profile_type)
def test_profile_type_show(self):
arglist = ['os.heat.stack-1.0']