Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aws
GitHub Repository: aws/aws-cli
Path: blob/develop/tests/functional/servicecatalog/test_generate_createprovisioningartifact.py
1567 views
1
# Copyright 2012-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
#
3
# Licensed under the Apache License, Version 2.0 (the "License"). You
4
# may not use this file except in compliance with the License. A copy of
5
# the License is located at
6
#
7
# http://aws.amazon.com/apache2.0/
8
#
9
# or in the "license" file accompanying this file. This file is
10
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
# ANY KIND, either express or implied. See the License for the specific
12
# language governing permissions and limitations under the License.
13
14
15
import os
16
17
from awscli.customizations.servicecatalog.utils \
18
import get_s3_path
19
from awscli.testutils import mock, BaseAWSCommandParamsTest
20
21
22
class TestGenerateProvisioningArtifact(BaseAWSCommandParamsTest):
23
prefix = "servicecatalog generate provisioning-artifact "
24
25
def get_expected_result(self):
26
expected_url = 'https://s3.amazonaws.com/{0}/{1}'. \
27
format(self.bucket_name, get_s3_path(self.template_path))
28
return {
29
'IdempotencyToken': mock.ANY,
30
'Parameters': {
31
'Description': self.provisioning_artifact_description,
32
'Info': {
33
'LoadTemplateFromURL': expected_url
34
},
35
'Name': self.provisioning_artifact_name,
36
'Type': self.provisioning_artifact_type
37
},
38
'ProductId': self.product_id
39
}
40
41
def init_params(self):
42
self.obj_key = 'development-environment.template'
43
self.template_path = os.path.join(os.path.dirname(__file__),
44
self.obj_key)
45
self.bucket_name = 'bucket_name'
46
self.provisioning_artifact_name = 'prov_art_name'
47
self.provisioning_artifact_description = 'prov_art_desc'
48
self.provisioning_artifact_type = 'CLOUD_FORMATION_TEMPLATE'
49
self.product_id = 'prod-1234567890abc'
50
51
def build_cmd_line(self):
52
cmd_line = self.prefix
53
if self.template_path:
54
cmd_line += ' --file-path %s' % self.template_path
55
if self.bucket_name:
56
cmd_line += ' --bucket-name %s' % self.bucket_name
57
if self.provisioning_artifact_name:
58
cmd_line += ' --provisioning-artifact-name %s' \
59
% self.provisioning_artifact_name
60
if self.provisioning_artifact_description:
61
cmd_line += ' --provisioning-artifact-description %s' \
62
% self.provisioning_artifact_description
63
if self.provisioning_artifact_type:
64
cmd_line += ' --provisioning-artifact-type %s' \
65
% self.provisioning_artifact_type
66
if self.product_id:
67
cmd_line += ' --product-id %s' % self.product_id
68
return cmd_line
69
70
def setUp(self):
71
super(TestGenerateProvisioningArtifact, self).setUp()
72
self.init_params()
73
74
def test_generate_provisioning_artifact_success(self):
75
self.cmd_line = self.build_cmd_line()
76
expected_result = self.get_expected_result()
77
78
self.assert_params_for_cmd(self.cmd_line,
79
expected_result,
80
expected_rc=0)
81
82
def test_generate_provisioning_artifact_success_unicode(self):
83
self.provisioning_artifact_name = u'\u05d1\u05e8\u05d9\u05e6\u05e7'
84
self.provisioning_artifact_description = u'\u00fd\u00a9\u0194\u0292'
85
self.cmd_line = self.build_cmd_line()
86
expected_result = self.get_expected_result()
87
88
self.assert_params_for_cmd(self.cmd_line,
89
expected_result,
90
expected_rc=0)
91
92
def test_generate_provisioning_artifact_invalid_path(self):
93
self.template_path = os.path.join('invalid', 'template', 'file')
94
self.cmd_line = self.build_cmd_line()
95
self.assert_params_for_cmd(
96
self.cmd_line,
97
expected_rc=255,
98
stderr_contains='cannot be found')
99
100
def test_generate_provisioning_artifact_invalid_pa_type(self):
101
self.provisioning_artifact_type = 'invalid_provisioning type'
102
self.cmd_line = self.build_cmd_line()
103
self.assert_params_for_cmd(
104
self.cmd_line,
105
expected_rc=2,
106
stderr_contains='--provisioning-artifact-type: Invalid choice')
107
108
def test_generate_provisioning_artifact_missing_file_path(self):
109
self.template_path = None
110
self.cmd_line = self.build_cmd_line()
111
self.assert_params_for_cmd(
112
self.cmd_line,
113
expected_rc=2,
114
stderr_contains='--file-path')
115
116
def test_generate_provisioning_artifact_missing_bucket_name(self):
117
self.bucket_name = None
118
self.cmd_line = self.build_cmd_line()
119
self.assert_params_for_cmd(
120
self.cmd_line,
121
expected_rc=2,
122
stderr_contains='--bucket-name')
123
124
def test_generate_provisioning_artifact_missing_pa_name(self):
125
self.provisioning_artifact_name = None
126
self.cmd_line = self.build_cmd_line()
127
self.assert_params_for_cmd(
128
self.cmd_line,
129
expected_rc=2,
130
stderr_contains='--provisioning-artifact-name')
131
132
def test_generate_provisioning_artifact_missing_pa_description(self):
133
self.provisioning_artifact_description = None
134
self.cmd_line = self.build_cmd_line()
135
self.assert_params_for_cmd(
136
self.cmd_line,
137
expected_rc=2,
138
stderr_contains='--provisioning-artifact-description')
139
140
def test_generate_provisioning_artifact_missing_pa_type(self):
141
self.provisioning_artifact_type = None
142
self.cmd_line = self.build_cmd_line()
143
self.assert_params_for_cmd(
144
self.cmd_line,
145
expected_rc=2,
146
stderr_contains='--provisioning-artifact-type')
147
148