Ejemplo n.º 1
0
    def test_disabling_env_var_not_true(self):
        url = 'https://example.com/'
        env = {'AWS_EC2_METADATA_DISABLED': 'false'}

        self.add_imds_token_response()
        self.add_get_region_imds_response()

        fetcher = InstanceMetadataRegionFetcher(base_url=url, env=env)
        result = fetcher.retrieve_region()

        expected_result = 'us-mars-1'
        self.assertEqual(result, expected_result)
Ejemplo n.º 2
0
 def test_empty_response_is_retried(self):
     # Response for creds that has a 200 status code but is empty.
     # This should be retried.
     self.add_imds_response(body=b'')
     self.add_get_region_imds_response()
     result = InstanceMetadataRegionFetcher(
         num_attempts=2).retrieve_region()
     expected_result = 'us-mars-1'
     self.assertEqual(result, expected_result)
Ejemplo n.º 3
0
 def test_http_connection_errors_is_retried(self):
     # Connection related errors should be retried
     self.add_imds_token_response()
     self.add_imds_connection_error(ConnectionClosedError(endpoint_url=''))
     self.add_get_region_imds_response()
     result = InstanceMetadataRegionFetcher(
         num_attempts=2).retrieve_region()
     expected_result = 'us-mars-1'
     self.assertEqual(result, expected_result)
Ejemplo n.º 4
0
 def test_empty_response_for_region_is_retried(self):
     # Response for role name that have a non 200 status code should
     # be retried.
     self.add_imds_response(body=b'')
     self.add_get_region_imds_response()
     result = InstanceMetadataRegionFetcher(
         num_attempts=2).retrieve_region()
     expected_result = 'us-mars-1'
     self.assertEqual(result, expected_result)
Ejemplo n.º 5
0
    def test_includes_user_agent_header(self):
        user_agent = 'my-user-agent'
        self.add_imds_token_response()
        self.add_get_region_imds_response()

        InstanceMetadataRegionFetcher(user_agent=user_agent).retrieve_region()

        headers = self._send.call_args[0][0].headers
        self.assertEqual(headers['User-Agent'], user_agent)
Ejemplo n.º 6
0
 def test_non_200_response_is_retried(self):
     # Response for creds that has a 200 status code but has an empty
     # body should be retried.
     self.add_imds_token_response()
     self.add_imds_response(status_code=429,
                            body=b'{"message": "Slow down"}')
     self.add_get_region_imds_response()
     result = InstanceMetadataRegionFetcher(
         num_attempts=2).retrieve_region()
     expected_result = 'us-mars-1'
     self.assertEqual(result, expected_result)
Ejemplo n.º 7
0
 def test_exhaust_retries_on_region_request(self):
     self.add_imds_token_response()
     self.add_imds_response(status_code=400, body=b'')
     result = InstanceMetadataRegionFetcher(
         num_attempts=1).retrieve_region()
     self.assertEqual(result, None)
Ejemplo n.º 8
0
 def test_disabled_by_environment_mixed_case(self):
     env = {'AWS_EC2_METADATA_DISABLED': 'tRuE'}
     fetcher = InstanceMetadataRegionFetcher(env=env)
     result = fetcher.retrieve_region()
     self.assertIsNone(result)
     self._send.assert_not_called()