Path: blob/develop/tests/functional/ec2/test_modify_instance_attribute.py
1567 views
#!/usr/bin/env python1# Copyright 2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.2#3# Licensed under the Apache License, Version 2.0 (the "License"). You4# may not use this file except in compliance with the License. A copy of5# the License is located at6#7# http://aws.amazon.com/apache2.0/8#9# or in the "license" file accompanying this file. This file is10# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF11# ANY KIND, either express or implied. See the License for the specific12# language governing permissions and limitations under the License.13from awscli.testutils import BaseAWSCommandParamsTest141516class TestModifyInstanceAttribute(BaseAWSCommandParamsTest):1718prefix = 'ec2 modify-instance-attribute '1920def setUp(self):21super(TestModifyInstanceAttribute, self).setUp()22self.expected_result = {23'InstanceId': 'i-1234',24'InstanceInitiatedShutdownBehavior': {'Value': 'terminate'}25}2627def test_json_version(self):28cmdline = self.prefix29cmdline += '--instance-id i-1234 '30cmdline += '--instance-initiated-shutdown-behavior {"Value":"terminate"}'31self.assert_params_for_cmd(cmdline, self.expected_result)3233def test_shorthand_version(self):34cmdline = self.prefix35cmdline += '--instance-id i-1234 '36cmdline += '--instance-initiated-shutdown-behavior Value=terminate'37self.assert_params_for_cmd(cmdline, self.expected_result)3839def test_value_not_needed(self):40# For structs of a single param value, you can skip the keep name,41# so instead of Value=terminate, you can just say terminate.42cmdline = self.prefix43cmdline += '--instance-id i-1234 '44cmdline += '--instance-initiated-shutdown-behavior terminate'45self.assert_params_for_cmd(cmdline, self.expected_result)4647def test_boolean_value_in_top_level_true(self):48# Just like everything else in argparse, the last value provided49# for a destination has precedence.50cmdline = self.prefix51cmdline += '--instance-id i-1234 '52cmdline += '--ebs-optimized Value=true'53result = {'InstanceId': 'i-1234',54'EbsOptimized': {'Value': True}}55self.assert_params_for_cmd(cmdline, result)5657def test_boolean_value_is_top_level_false(self):58cmdline = self.prefix59cmdline += '--instance-id i-1234 '60cmdline += '--ebs-optimized Value=false'61result = {'InstanceId': 'i-1234',62'EbsOptimized': {'Value': False}}63self.assert_params_for_cmd(cmdline, result)6465def test_boolean_value_in_top_level_true_json(self):66# Just like everything else in argparse, the last value provided67# for a destination has precedence.68cmdline = self.prefix69cmdline += '--instance-id i-1234 '70cmdline += '--ebs-optimized {"Value":true}'71result = {'InstanceId': 'i-1234',72'EbsOptimized': {'Value': True}}73self.assert_params_for_cmd(cmdline, result)7475def test_boolean_value_is_top_level_false_json(self):76cmdline = self.prefix77cmdline += '--instance-id i-1234 '78cmdline += '--ebs-optimized {"Value":false}'79result = {'InstanceId': 'i-1234',80'EbsOptimized': {'Value': False}}81self.assert_params_for_cmd(cmdline, result)8283def test_boolean_param_top_level_true_no_value(self):84cmdline = self.prefix85cmdline += '--instance-id i-1234 '86cmdline += '--ebs-optimized'87result = {'InstanceId': 'i-1234',88'EbsOptimized': {'Value': True}}89self.assert_params_for_cmd(cmdline, result)9091def test_boolean_param_top_level_false_no_value(self):92cmdline = self.prefix93cmdline += '--instance-id i-1234 '94cmdline += '--no-ebs-optimized'95result = {'InstanceId': 'i-1234',96'EbsOptimized': {'Value': False}}97self.assert_params_for_cmd(cmdline, result)9899def test_mix_value_non_value_boolean_param(self):100cmdline = self.prefix101cmdline += '--instance-id i-1234 '102# Can't mix non-value + value version of the arg.103cmdline += '--no-ebs-optimized '104cmdline += '--ebs-optimized Value=true'105self.assert_params_for_cmd(cmdline, expected_rc=255,106stderr_contains='Cannot specify both')107108def test_mix_non_value_bools_not_allowed(self):109cmdline = self.prefix110cmdline += '--instance-id i-1234 '111# Can't mix non-value + value version of the arg.112cmdline += '--no-ebs-optimized '113cmdline += '--ebs-optimized '114self.assert_params_for_cmd(cmdline, expected_rc=255,115stderr_contains='Cannot specify both')116117118if __name__ == "__main__":119unittest.main()120121122