Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aws
GitHub Repository: aws/aws-cli
Path: blob/develop/tests/unit/customizations/configure/test_get.py
1569 views
1
# Copyright 2016 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
from awscli.testutils import unittest
14
from awscli.compat import StringIO
15
16
from awscli.customizations.configure.get import ConfigureGetCommand
17
18
from . import FakeSession
19
20
21
class TestConfigureGetCommand(unittest.TestCase):
22
23
def create_command(self, session):
24
stdout = StringIO()
25
stderr = StringIO()
26
command = ConfigureGetCommand(session, stdout, stderr)
27
return stdout, stderr, command
28
29
def test_configure_get_command(self):
30
session = FakeSession({})
31
session.config['region'] = 'us-west-2'
32
stream, error_stream, config_get = self.create_command(session)
33
config_get(args=['region'], parsed_globals=None)
34
rendered = stream.getvalue()
35
self.assertEqual(rendered.strip(), 'us-west-2')
36
37
def test_configure_get_command_no_exist(self):
38
no_vars_defined = {}
39
session = FakeSession(no_vars_defined)
40
stream, error_stream, config_get = self.create_command(session)
41
rc = config_get(args=['region'], parsed_globals=None)
42
rendered = stream.getvalue()
43
# If a config value does not exist, we don't print any output.
44
self.assertEqual(rendered, '')
45
# And we exit with an rc of 1.
46
self.assertEqual(rc, 1)
47
48
def test_dotted_get(self):
49
session = FakeSession({})
50
session.full_config = {'preview': {'emr': 'true'}}
51
stream, error_stream, config_get = self.create_command(session)
52
config_get(args=['preview.emr'], parsed_globals=None)
53
rendered = stream.getvalue()
54
self.assertEqual(rendered.strip(), 'true')
55
56
def test_dotted_get_with_profile(self):
57
session = FakeSession({})
58
session.full_config = {'profiles': {'emr-dev': {
59
'emr': {'instance_profile': 'my_ip'}}}}
60
session.config = {'emr': {'instance_profile': 'my_ip'}}
61
stream, error_stream, config_get = self.create_command(session)
62
config_get(args=['emr-dev.emr.instance_profile'], parsed_globals=None)
63
rendered = stream.getvalue()
64
self.assertEqual(rendered.strip(), 'my_ip')
65
66
def test_get_from_profile(self):
67
session = FakeSession({})
68
session.full_config = {
69
'profiles': {'testing': {'aws_access_key_id': 'access_key'}}}
70
stream, error_stream, config_get = self.create_command(session)
71
config_get = ConfigureGetCommand(session, stream)
72
config_get(args=['profile.testing.aws_access_key_id'],
73
parsed_globals=None)
74
rendered = stream.getvalue()
75
self.assertEqual(rendered.strip(), 'access_key')
76
77
def test_get_nested_attribute(self):
78
session = FakeSession({})
79
session.full_config = {
80
'profiles': {'testing': {'s3': {'signature_version': 's3v4'}}}}
81
stream, error_stream, config_get = self.create_command(session)
82
config_get(args=['profile.testing.s3.signature_version'],
83
parsed_globals=None)
84
rendered = stream.getvalue()
85
self.assertEqual(rendered.strip(), 's3v4')
86
87
def test_get_nested_attribute_from_default(self):
88
session = FakeSession({})
89
session.full_config = {
90
'profiles': {'default': {'s3': {'signature_version': 's3v4'}}}}
91
stream, error_stream, config_get = self.create_command(session)
92
config_get(args=['default.s3.signature_version'],
93
parsed_globals=None)
94
rendered = stream.getvalue()
95
self.assertEqual(rendered.strip(), 's3v4')
96
97
def test_get_nested_attribute_from_default_does_not_exist(self):
98
session = FakeSession({})
99
session.full_config = {'profiles': {}}
100
stream, error_stream, config_get = self.create_command(session)
101
config_get(args=['default.s3.signature_version'],
102
parsed_globals=None)
103
rendered = stream.getvalue()
104
self.assertEqual(rendered.strip(), '')
105
106
def test_get_nested_attribute_from_implicit_default(self):
107
session = FakeSession({})
108
session.full_config = {
109
'profiles': {'default': {'s3': {'signature_version': 's3v4'}}}}
110
stream, error_stream, config_get = self.create_command(session)
111
config_get(args=['s3.signature_version'],
112
parsed_globals=None)
113
rendered = stream.getvalue()
114
self.assertEqual(rendered.strip(), 's3v4')
115
116
def test_get_section_returns_error(self):
117
session = FakeSession({})
118
session.full_config = {
119
'profiles': {'default': {'s3': {'signature_version': 's3v4'}}}}
120
session.config = {'s3': {'signature_version': 's3v4'}}
121
stream, error_stream, config_get = self.create_command(session)
122
rc = config_get(args=['s3'], parsed_globals=None)
123
self.assertEqual(rc, 1)
124
125
error_message = error_stream.getvalue()
126
expected_message = (
127
'varname (s3) must reference a value, not a section or '
128
'sub-section.')
129
self.assertEqual(error_message, expected_message)
130
self.assertEqual(stream.getvalue(), '')
131
132
def test_get_non_string_returns_error(self):
133
# This should never happen, but we handle this case so we should
134
# test it.
135
session = FakeSession({})
136
session.full_config = {
137
'profiles': {'default': {'foo': object()}}}
138
stream, error_stream, config_get = self.create_command(session)
139
rc = config_get(args=['foo'], parsed_globals=None)
140
self.assertEqual(rc, 1)
141
self.assertEqual(stream.getvalue(), '')
142
self.assertEqual(error_stream.getvalue(), '')
143
144