Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aws
GitHub Repository: aws/aws-cli
Path: blob/develop/tests/functional/ec2/test_modify_instance_attribute.py
1567 views
1
#!/usr/bin/env python
2
# Copyright 2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
#
4
# Licensed under the Apache License, Version 2.0 (the "License"). You
5
# may not use this file except in compliance with the License. A copy of
6
# the License is located at
7
#
8
# http://aws.amazon.com/apache2.0/
9
#
10
# or in the "license" file accompanying this file. This file is
11
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
12
# ANY KIND, either express or implied. See the License for the specific
13
# language governing permissions and limitations under the License.
14
from awscli.testutils import BaseAWSCommandParamsTest
15
16
17
class TestModifyInstanceAttribute(BaseAWSCommandParamsTest):
18
19
prefix = 'ec2 modify-instance-attribute '
20
21
def setUp(self):
22
super(TestModifyInstanceAttribute, self).setUp()
23
self.expected_result = {
24
'InstanceId': 'i-1234',
25
'InstanceInitiatedShutdownBehavior': {'Value': 'terminate'}
26
}
27
28
def test_json_version(self):
29
cmdline = self.prefix
30
cmdline += '--instance-id i-1234 '
31
cmdline += '--instance-initiated-shutdown-behavior {"Value":"terminate"}'
32
self.assert_params_for_cmd(cmdline, self.expected_result)
33
34
def test_shorthand_version(self):
35
cmdline = self.prefix
36
cmdline += '--instance-id i-1234 '
37
cmdline += '--instance-initiated-shutdown-behavior Value=terminate'
38
self.assert_params_for_cmd(cmdline, self.expected_result)
39
40
def test_value_not_needed(self):
41
# For structs of a single param value, you can skip the keep name,
42
# so instead of Value=terminate, you can just say terminate.
43
cmdline = self.prefix
44
cmdline += '--instance-id i-1234 '
45
cmdline += '--instance-initiated-shutdown-behavior terminate'
46
self.assert_params_for_cmd(cmdline, self.expected_result)
47
48
def test_boolean_value_in_top_level_true(self):
49
# Just like everything else in argparse, the last value provided
50
# for a destination has precedence.
51
cmdline = self.prefix
52
cmdline += '--instance-id i-1234 '
53
cmdline += '--ebs-optimized Value=true'
54
result = {'InstanceId': 'i-1234',
55
'EbsOptimized': {'Value': True}}
56
self.assert_params_for_cmd(cmdline, result)
57
58
def test_boolean_value_is_top_level_false(self):
59
cmdline = self.prefix
60
cmdline += '--instance-id i-1234 '
61
cmdline += '--ebs-optimized Value=false'
62
result = {'InstanceId': 'i-1234',
63
'EbsOptimized': {'Value': False}}
64
self.assert_params_for_cmd(cmdline, result)
65
66
def test_boolean_value_in_top_level_true_json(self):
67
# Just like everything else in argparse, the last value provided
68
# for a destination has precedence.
69
cmdline = self.prefix
70
cmdline += '--instance-id i-1234 '
71
cmdline += '--ebs-optimized {"Value":true}'
72
result = {'InstanceId': 'i-1234',
73
'EbsOptimized': {'Value': True}}
74
self.assert_params_for_cmd(cmdline, result)
75
76
def test_boolean_value_is_top_level_false_json(self):
77
cmdline = self.prefix
78
cmdline += '--instance-id i-1234 '
79
cmdline += '--ebs-optimized {"Value":false}'
80
result = {'InstanceId': 'i-1234',
81
'EbsOptimized': {'Value': False}}
82
self.assert_params_for_cmd(cmdline, result)
83
84
def test_boolean_param_top_level_true_no_value(self):
85
cmdline = self.prefix
86
cmdline += '--instance-id i-1234 '
87
cmdline += '--ebs-optimized'
88
result = {'InstanceId': 'i-1234',
89
'EbsOptimized': {'Value': True}}
90
self.assert_params_for_cmd(cmdline, result)
91
92
def test_boolean_param_top_level_false_no_value(self):
93
cmdline = self.prefix
94
cmdline += '--instance-id i-1234 '
95
cmdline += '--no-ebs-optimized'
96
result = {'InstanceId': 'i-1234',
97
'EbsOptimized': {'Value': False}}
98
self.assert_params_for_cmd(cmdline, result)
99
100
def test_mix_value_non_value_boolean_param(self):
101
cmdline = self.prefix
102
cmdline += '--instance-id i-1234 '
103
# Can't mix non-value + value version of the arg.
104
cmdline += '--no-ebs-optimized '
105
cmdline += '--ebs-optimized Value=true'
106
self.assert_params_for_cmd(cmdline, expected_rc=255,
107
stderr_contains='Cannot specify both')
108
109
def test_mix_non_value_bools_not_allowed(self):
110
cmdline = self.prefix
111
cmdline += '--instance-id i-1234 '
112
# Can't mix non-value + value version of the arg.
113
cmdline += '--no-ebs-optimized '
114
cmdline += '--ebs-optimized '
115
self.assert_params_for_cmd(cmdline, expected_rc=255,
116
stderr_contains='Cannot specify both')
117
118
119
if __name__ == "__main__":
120
unittest.main()
121
122