Path: blob/develop/tests/functional/servicecatalog/test_generate_createprovisioningartifact.py
1567 views
# Copyright 2012-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.1#2# Licensed under the Apache License, Version 2.0 (the "License"). You3# may not use this file except in compliance with the License. A copy of4# the License is located at5#6# http://aws.amazon.com/apache2.0/7#8# or in the "license" file accompanying this file. This file is9# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF10# ANY KIND, either express or implied. See the License for the specific11# language governing permissions and limitations under the License.121314import os1516from awscli.customizations.servicecatalog.utils \17import get_s3_path18from awscli.testutils import mock, BaseAWSCommandParamsTest192021class TestGenerateProvisioningArtifact(BaseAWSCommandParamsTest):22prefix = "servicecatalog generate provisioning-artifact "2324def get_expected_result(self):25expected_url = 'https://s3.amazonaws.com/{0}/{1}'. \26format(self.bucket_name, get_s3_path(self.template_path))27return {28'IdempotencyToken': mock.ANY,29'Parameters': {30'Description': self.provisioning_artifact_description,31'Info': {32'LoadTemplateFromURL': expected_url33},34'Name': self.provisioning_artifact_name,35'Type': self.provisioning_artifact_type36},37'ProductId': self.product_id38}3940def init_params(self):41self.obj_key = 'development-environment.template'42self.template_path = os.path.join(os.path.dirname(__file__),43self.obj_key)44self.bucket_name = 'bucket_name'45self.provisioning_artifact_name = 'prov_art_name'46self.provisioning_artifact_description = 'prov_art_desc'47self.provisioning_artifact_type = 'CLOUD_FORMATION_TEMPLATE'48self.product_id = 'prod-1234567890abc'4950def build_cmd_line(self):51cmd_line = self.prefix52if self.template_path:53cmd_line += ' --file-path %s' % self.template_path54if self.bucket_name:55cmd_line += ' --bucket-name %s' % self.bucket_name56if self.provisioning_artifact_name:57cmd_line += ' --provisioning-artifact-name %s' \58% self.provisioning_artifact_name59if self.provisioning_artifact_description:60cmd_line += ' --provisioning-artifact-description %s' \61% self.provisioning_artifact_description62if self.provisioning_artifact_type:63cmd_line += ' --provisioning-artifact-type %s' \64% self.provisioning_artifact_type65if self.product_id:66cmd_line += ' --product-id %s' % self.product_id67return cmd_line6869def setUp(self):70super(TestGenerateProvisioningArtifact, self).setUp()71self.init_params()7273def test_generate_provisioning_artifact_success(self):74self.cmd_line = self.build_cmd_line()75expected_result = self.get_expected_result()7677self.assert_params_for_cmd(self.cmd_line,78expected_result,79expected_rc=0)8081def test_generate_provisioning_artifact_success_unicode(self):82self.provisioning_artifact_name = u'\u05d1\u05e8\u05d9\u05e6\u05e7'83self.provisioning_artifact_description = u'\u00fd\u00a9\u0194\u0292'84self.cmd_line = self.build_cmd_line()85expected_result = self.get_expected_result()8687self.assert_params_for_cmd(self.cmd_line,88expected_result,89expected_rc=0)9091def test_generate_provisioning_artifact_invalid_path(self):92self.template_path = os.path.join('invalid', 'template', 'file')93self.cmd_line = self.build_cmd_line()94self.assert_params_for_cmd(95self.cmd_line,96expected_rc=255,97stderr_contains='cannot be found')9899def test_generate_provisioning_artifact_invalid_pa_type(self):100self.provisioning_artifact_type = 'invalid_provisioning type'101self.cmd_line = self.build_cmd_line()102self.assert_params_for_cmd(103self.cmd_line,104expected_rc=2,105stderr_contains='--provisioning-artifact-type: Invalid choice')106107def test_generate_provisioning_artifact_missing_file_path(self):108self.template_path = None109self.cmd_line = self.build_cmd_line()110self.assert_params_for_cmd(111self.cmd_line,112expected_rc=2,113stderr_contains='--file-path')114115def test_generate_provisioning_artifact_missing_bucket_name(self):116self.bucket_name = None117self.cmd_line = self.build_cmd_line()118self.assert_params_for_cmd(119self.cmd_line,120expected_rc=2,121stderr_contains='--bucket-name')122123def test_generate_provisioning_artifact_missing_pa_name(self):124self.provisioning_artifact_name = None125self.cmd_line = self.build_cmd_line()126self.assert_params_for_cmd(127self.cmd_line,128expected_rc=2,129stderr_contains='--provisioning-artifact-name')130131def test_generate_provisioning_artifact_missing_pa_description(self):132self.provisioning_artifact_description = None133self.cmd_line = self.build_cmd_line()134self.assert_params_for_cmd(135self.cmd_line,136expected_rc=2,137stderr_contains='--provisioning-artifact-description')138139def test_generate_provisioning_artifact_missing_pa_type(self):140self.provisioning_artifact_type = None141self.cmd_line = self.build_cmd_line()142self.assert_params_for_cmd(143self.cmd_line,144expected_rc=2,145stderr_contains='--provisioning-artifact-type')146147148