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:
@@ -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']
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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']
|
||||
|
||||
Reference in New Issue
Block a user