Path: blob/develop/tests/unit/customizations/configure/test_get.py
1569 views
# Copyright 2016 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.12from awscli.testutils import unittest13from awscli.compat import StringIO1415from awscli.customizations.configure.get import ConfigureGetCommand1617from . import FakeSession181920class TestConfigureGetCommand(unittest.TestCase):2122def create_command(self, session):23stdout = StringIO()24stderr = StringIO()25command = ConfigureGetCommand(session, stdout, stderr)26return stdout, stderr, command2728def test_configure_get_command(self):29session = FakeSession({})30session.config['region'] = 'us-west-2'31stream, error_stream, config_get = self.create_command(session)32config_get(args=['region'], parsed_globals=None)33rendered = stream.getvalue()34self.assertEqual(rendered.strip(), 'us-west-2')3536def test_configure_get_command_no_exist(self):37no_vars_defined = {}38session = FakeSession(no_vars_defined)39stream, error_stream, config_get = self.create_command(session)40rc = config_get(args=['region'], parsed_globals=None)41rendered = stream.getvalue()42# If a config value does not exist, we don't print any output.43self.assertEqual(rendered, '')44# And we exit with an rc of 1.45self.assertEqual(rc, 1)4647def test_dotted_get(self):48session = FakeSession({})49session.full_config = {'preview': {'emr': 'true'}}50stream, error_stream, config_get = self.create_command(session)51config_get(args=['preview.emr'], parsed_globals=None)52rendered = stream.getvalue()53self.assertEqual(rendered.strip(), 'true')5455def test_dotted_get_with_profile(self):56session = FakeSession({})57session.full_config = {'profiles': {'emr-dev': {58'emr': {'instance_profile': 'my_ip'}}}}59session.config = {'emr': {'instance_profile': 'my_ip'}}60stream, error_stream, config_get = self.create_command(session)61config_get(args=['emr-dev.emr.instance_profile'], parsed_globals=None)62rendered = stream.getvalue()63self.assertEqual(rendered.strip(), 'my_ip')6465def test_get_from_profile(self):66session = FakeSession({})67session.full_config = {68'profiles': {'testing': {'aws_access_key_id': 'access_key'}}}69stream, error_stream, config_get = self.create_command(session)70config_get = ConfigureGetCommand(session, stream)71config_get(args=['profile.testing.aws_access_key_id'],72parsed_globals=None)73rendered = stream.getvalue()74self.assertEqual(rendered.strip(), 'access_key')7576def test_get_nested_attribute(self):77session = FakeSession({})78session.full_config = {79'profiles': {'testing': {'s3': {'signature_version': 's3v4'}}}}80stream, error_stream, config_get = self.create_command(session)81config_get(args=['profile.testing.s3.signature_version'],82parsed_globals=None)83rendered = stream.getvalue()84self.assertEqual(rendered.strip(), 's3v4')8586def test_get_nested_attribute_from_default(self):87session = FakeSession({})88session.full_config = {89'profiles': {'default': {'s3': {'signature_version': 's3v4'}}}}90stream, error_stream, config_get = self.create_command(session)91config_get(args=['default.s3.signature_version'],92parsed_globals=None)93rendered = stream.getvalue()94self.assertEqual(rendered.strip(), 's3v4')9596def test_get_nested_attribute_from_default_does_not_exist(self):97session = FakeSession({})98session.full_config = {'profiles': {}}99stream, error_stream, config_get = self.create_command(session)100config_get(args=['default.s3.signature_version'],101parsed_globals=None)102rendered = stream.getvalue()103self.assertEqual(rendered.strip(), '')104105def test_get_nested_attribute_from_implicit_default(self):106session = FakeSession({})107session.full_config = {108'profiles': {'default': {'s3': {'signature_version': 's3v4'}}}}109stream, error_stream, config_get = self.create_command(session)110config_get(args=['s3.signature_version'],111parsed_globals=None)112rendered = stream.getvalue()113self.assertEqual(rendered.strip(), 's3v4')114115def test_get_section_returns_error(self):116session = FakeSession({})117session.full_config = {118'profiles': {'default': {'s3': {'signature_version': 's3v4'}}}}119session.config = {'s3': {'signature_version': 's3v4'}}120stream, error_stream, config_get = self.create_command(session)121rc = config_get(args=['s3'], parsed_globals=None)122self.assertEqual(rc, 1)123124error_message = error_stream.getvalue()125expected_message = (126'varname (s3) must reference a value, not a section or '127'sub-section.')128self.assertEqual(error_message, expected_message)129self.assertEqual(stream.getvalue(), '')130131def test_get_non_string_returns_error(self):132# This should never happen, but we handle this case so we should133# test it.134session = FakeSession({})135session.full_config = {136'profiles': {'default': {'foo': object()}}}137stream, error_stream, config_get = self.create_command(session)138rc = config_get(args=['foo'], parsed_globals=None)139self.assertEqual(rc, 1)140self.assertEqual(stream.getvalue(), '')141self.assertEqual(error_stream.getvalue(), '')142143144