예제 #1
0
 def test_get_aws_configuration_raises_exception_when_no_profile_found(self, confirm_mock, session_mock):
     confirm_mock.side_effect = [False]
     session_mock.return_value.profile_name = "default"
     session_mock.return_value.region_name = "us-west-2"
     session_mock.return_value.available_profiles = []
     with self.assertRaises(ResourceNotFound) as ctx:
         get_aws_configuration_choice()
     msg = "No configured AWS profile found."
     self.assertEqual(str(ctx.exception), msg)
예제 #2
0
 def test_get_aws_configuration_raises_exception_when_schema_service_not_available_in_region(
         self, prompt_mock, confirm_mock, session_mock):
     confirm_mock.side_effect = [True]
     prompt_mock.side_effect = ["2"]
     session_mock.return_value.profile_name = "default"
     session_mock.return_value.region_name = "ap-south-1"
     session_mock.return_value.available_profiles = [
         "default", "test-profile"
     ]
     with self.assertRaises(NotAvailableInRegion) as ctx:
         get_aws_configuration_choice()
     msg = "EventBridge Schemas are not yet available in ap-south-1. Please select one of ['us-east-1', 'us-east-2', 'us-west-2', 'eu-west-1', 'ap-northeast-1']"
     self.assertEqual(str(ctx.exception), msg)
예제 #3
0
 def test_get_aws_configuration_allow_free_text_region_value(
         self, prompt_mock, confirm_mock, session_mock):
     confirm_mock.side_effect = [False]
     prompt_mock.side_effect = ["2", "random-region"]
     session_mock.return_value.profile_name = "default"
     session_mock.return_value.region_name = "us-west-2"
     session_mock.return_value.available_profiles = [
         "default", "test-profile"
     ]
     session_mock.return_value.get_available_regions.return_value = [
         "us-east-1",
         "us-east-2",
         "us-west-2",
         "eu-west-1",
         "ap-northeast-1",
     ]
     aws_configuration_choice = get_aws_configuration_choice()
     self.assertEqual(aws_configuration_choice["profile"], "test-profile"),
     self.assertEqual(aws_configuration_choice["region"], "random-region")
     confirm_mock.assert_any_call(
         "\nDo you want to use the default AWS profile [default] and region [us-west-2]?",
         default=True)
     prompt_mock.assert_any_call("Profile", type=ANY, show_choices=False)
     prompt_mock.assert_any_call("Region [us-west-2]",
                                 type=ANY,
                                 show_choices=False)
예제 #4
0
 def test_get_aws_configuration_profile_is_set_to_none_for_default_selection(self, confirm_mock, session_mock):
     confirm_mock.side_effect = [True]
     session_mock.return_value.profile_name = "default"
     session_mock.return_value.region_name = "us-west-2"
     aws_configuration_choice = get_aws_configuration_choice()
     self.assertEqual(aws_configuration_choice["profile"], None)
     self.assertEqual(aws_configuration_choice["region"], "us-west-2")
     confirm_mock.assert_any_call(
         "\nDo you want to use the default AWS profile [default] and region [us-west-2]?", default=True
     )
예제 #5
0
    def test_get_aws_configuration_succeeds_with_default(self, prompt_mock, confirm_mock, session_mock):
        region = "us-east-2"
        confirm_mock.side_effect = [True]
        prompt_mock.side_effect = ["1", region]

        def profile_mock(**kwargs):
            session = Mock()
            session.profile_name = "default"
            session.available_profiles = ["test-profile-1", "test-profile-2"]
            session.get_available_regions.return_value = [
                "us-east-1",
                "us-east-2",
                "us-west-2",
                "eu-west-1",
                "ap-northeast-1",
            ]
            if "profile_name" in kwargs:
                session.profile_name = kwargs["profile_name"]
                session.region_name = region
            else:
                session.profile_name = "default"
                session.region_name = None
            return session

        session_mock.side_effect = profile_mock

        aws_configuration_choice = get_aws_configuration_choice()
        self.assertEqual(aws_configuration_choice["profile"], "test-profile-1")
        self.assertEqual(aws_configuration_choice["region"], region)

        # Since the region will be None, the user should not get prompted to confirm
        # whether to choose a different profile.
        self.assertFalse(confirm_mock.called)

        prompt_mock.assert_any_call("Profile", type=ANY, show_choices=False)
        prompt_mock.assert_any_call(f"Region [{region}]", type=ANY, show_choices=False)
def get_schemas_api_caller():
    aws_configuration = get_aws_configuration_choice()
    schemas_client = get_schemas_client(aws_configuration["profile"],
                                        aws_configuration["region"])
    return SchemasApiCaller(schemas_client)