Example #1
0
class TestEndpointFeatures(TestEndpointBase):
    def test_timeout_can_be_specified(self):
        timeout_override = 120
        self.endpoint.timeout = timeout_override
        self.endpoint.make_request(self.op, request_dict())
        kwargs = self.http_session.send.call_args[1]
        self.assertEqual(kwargs['timeout'], timeout_override)

    def test_make_request_with_proxies(self):
        proxies = {'http': 'http://localhost:8888'}
        self.endpoint.proxies = proxies
        self.endpoint.make_request(self.op, request_dict())
        prepared_request = self.http_session.send.call_args[0][0]
        self.http_session.send.assert_called_with(prepared_request,
                                                  verify=True,
                                                  stream=False,
                                                  proxies=proxies,
                                                  timeout=DEFAULT_TIMEOUT)

    def test_make_request_with_no_auth(self):
        self.endpoint.auth = None
        self.endpoint.make_request(self.op, request_dict())

        # http_session should be used to send the request.
        self.assertTrue(self.http_session.send.called)
        prepared_request = self.http_session.send.call_args[0][0]
        self.assertNotIn('Authorization', prepared_request.headers)

    def test_make_request_no_signature_version(self):
        self.endpoint = Endpoint('us-west-2',
                                 'https://ec2.us-west-2.amazonaws.com/',
                                 user_agent='botoore',
                                 endpoint_prefix='ec2',
                                 event_emitter=self.event_emitter)
        self.endpoint.http_session = self.http_session

        self.endpoint.make_request(self.op, request_dict())

        # http_session should be used to send the request.
        self.assertTrue(self.http_session.send.called)
        prepared_request = self.http_session.send.call_args[0][0]
        self.assertNotIn('Authorization', prepared_request.headers)

    def test_make_request_injects_better_dns_error_msg(self):
        self.endpoint = Endpoint('us-west-2',
                                 'https://ec2.us-west-2.amazonaws.com/',
                                 user_agent='botoore',
                                 endpoint_prefix='ec2',
                                 event_emitter=self.event_emitter)
        self.endpoint.http_session = self.http_session
        fake_request = Mock(url='https://ec2.us-west-2.amazonaws.com')
        self.http_session.send.side_effect = ConnectionError(
            "Fake gaierror(8, node or host not known)", request=fake_request)
        with self.assertRaisesRegexp(EndpointConnectionError,
                                     'Could not connect'):
            self.endpoint.make_request(self.op, request_dict())
Example #2
0
 def test_make_request_injects_better_dns_error_msg(self):
     self.endpoint = Endpoint('https://ec2.us-west-2.amazonaws.com/',
                              endpoint_prefix='ec2',
                              event_emitter=self.event_emitter)
     self.endpoint.http_session = self.http_session
     fake_request = Mock(url='https://ec2.us-west-2.amazonaws.com')
     self.http_session.send.side_effect = ConnectionError(
         "Fake gaierror(8, node or host not known)", request=fake_request)
     with self.assertRaisesRegexp(EndpointConnectionError,
                                  'Could not connect'):
         self.endpoint.make_request(self.op, request_dict())
Example #3
0
    def test_make_request_no_signature_version(self):
        self.endpoint = Endpoint('https://ec2.us-west-2.amazonaws.com/',
                                 endpoint_prefix='ec2',
                                 event_emitter=self.event_emitter)
        self.endpoint.http_session = self.http_session

        self.endpoint.make_request(self.op, request_dict())

        # http_session should be used to send the request.
        self.assertTrue(self.http_session.send.called)
        prepared_request = self.http_session.send.call_args[0][0]
        self.assertNotIn('Authorization', prepared_request.headers)
Example #4
0
class TestEndpointFeatures(TestEndpointBase):

    def test_timeout_can_be_specified(self):
        timeout_override = 120
        self.endpoint.timeout = timeout_override
        self.endpoint.make_request(self.op, request_dict())
        kwargs = self.http_session.send.call_args[1]
        self.assertEqual(kwargs['timeout'], timeout_override)

    def test_make_request_with_proxies(self):
        proxies = {'http': 'http://localhost:8888'}
        self.endpoint.proxies = proxies
        self.endpoint.make_request(self.op, request_dict())
        prepared_request = self.http_session.send.call_args[0][0]
        self.http_session.send.assert_called_with(
            prepared_request, verify=True, stream=False,
            proxies=proxies, timeout=DEFAULT_TIMEOUT)

    def test_make_request_with_no_auth(self):
        self.endpoint.auth = None
        self.endpoint.make_request(self.op, request_dict())

        # http_session should be used to send the request.
        self.assertTrue(self.http_session.send.called)
        prepared_request = self.http_session.send.call_args[0][0]
        self.assertNotIn('Authorization', prepared_request.headers)

    def test_make_request_no_signature_version(self):
        self.endpoint = Endpoint(
            'us-west-2', 'https://ec2.us-west-2.amazonaws.com/',
            user_agent='botoore',
            endpoint_prefix='ec2', event_emitter=self.event_emitter)
        self.endpoint.http_session = self.http_session

        self.endpoint.make_request(self.op, request_dict())

        # http_session should be used to send the request.
        self.assertTrue(self.http_session.send.called)
        prepared_request = self.http_session.send.call_args[0][0]
        self.assertNotIn('Authorization', prepared_request.headers)

    def test_make_request_injects_better_dns_error_msg(self):
        self.endpoint = Endpoint(
            'us-west-2', 'https://ec2.us-west-2.amazonaws.com/',
            user_agent='botoore',
            endpoint_prefix='ec2', event_emitter=self.event_emitter)
        self.endpoint.http_session = self.http_session
        fake_request = Mock(url='https://ec2.us-west-2.amazonaws.com')
        self.http_session.send.side_effect = ConnectionError(
            "Fake gaierror(8, node or host not known)", request=fake_request)
        with self.assertRaisesRegexp(EndpointConnectionError,
                                     'Could not connect'):
            self.endpoint.make_request(self.op, request_dict())
Example #5
0
 def test_can_specify_proxies(self):
     proxies = {'http': 'http://foo.bar:1234'}
     endpoint = Endpoint('https://ec2.us-west-2.amazonaws.com',
                         'ec2',
                         self.event_emitter,
                         proxies=proxies)
     self.assertEqual(endpoint.proxies, proxies)
Example #6
0
 def setUp(self):
     self.service = Mock()
     self.service.session.user_agent.return_value = 'botocore-test'
     self.service.session.emit_first_non_none_response.return_value = None
     self.op = Mock()
     self.op.has_streaming_output = False
     self.op.metadata = {'protocol': 'json'}
     self.signature_version = True
     self.auth = Mock()
     self.event_emitter = Mock()
     self.event_emitter.emit.return_value = []
     self.factory_patch = patch('botocore.parsers.ResponseParserFactory')
     self.factory = self.factory_patch.start()
     self.endpoint = Endpoint('us-west-2',
                              'https://ec2.us-west-2.amazonaws.com/',
                              auth=self.auth,
                              user_agent='botoore',
                              signature_version='v4',
                              endpoint_prefix='ec2',
                              event_emitter=self.event_emitter)
     self.http_session = Mock()
     self.http_session.send.return_value = Mock(
         status_code=200,
         headers={},
         content=b'{"Foo": "bar"}',
     )
     self.endpoint.http_session = self.http_session
Example #7
0
 def test_can_specify_max_pool_connections(self):
     endpoint = Endpoint('https://ec2.us-west-2.amazonaws.com',
                         'ec2',
                         self.event_emitter,
                         max_pool_connections=50)
     # We can look in endpoint.http_session.adapters[0]._pool_maxsize,
     # but that feels like testing too much implementation detail.
     self.assertEqual(endpoint.max_pool_connections, 50)
class TestEndpointFeatures(TestEndpointBase):
    def test_timeout_can_be_specified(self):
        timeout_override = 120
        self.endpoint.timeout = timeout_override
        self.endpoint.make_request(self.op, request_dict())
        kwargs = self.http_session.send.call_args[1]
        self.assertEqual(kwargs['timeout'], timeout_override)

    def test_make_request_with_proxies(self):
        proxies = {'http': 'http://localhost:8888'}
        self.endpoint.proxies = proxies
        self.endpoint.make_request(self.op, request_dict())
        prepared_request = self.http_session.send.call_args[0][0]
        self.http_session.send.assert_called_with(prepared_request,
                                                  verify=True,
                                                  stream=False,
                                                  proxies=proxies,
                                                  timeout=DEFAULT_TIMEOUT)

    def test_make_request_with_no_auth(self):
        self.endpoint.auth = None
        self.endpoint.make_request(self.op, request_dict())

        # http_session should be used to send the request.
        self.assertTrue(self.http_session.send.called)
        prepared_request = self.http_session.send.call_args[0][0]
        self.assertNotIn('Authorization', prepared_request.headers)

    def test_make_request_no_signature_version(self):
        self.endpoint = Endpoint('us-west-2',
                                 'https://ec2.us-west-2.amazonaws.com/',
                                 user_agent='botoore',
                                 endpoint_prefix='ec2',
                                 event_emitter=self.event_emitter)
        self.endpoint.http_session = self.http_session

        self.endpoint.make_request(self.op, request_dict())

        # http_session should be used to send the request.
        self.assertTrue(self.http_session.send.called)
        prepared_request = self.http_session.send.call_args[0][0]
        self.assertNotIn('Authorization', prepared_request.headers)
Example #9
0
 def test_make_request_injects_better_dns_error_msg(self):
     self.endpoint = Endpoint(
         'https://ec2.us-west-2.amazonaws.com/',
         endpoint_prefix='ec2', event_emitter=self.event_emitter)
     self.endpoint.http_session = self.http_session
     fake_request = Mock(url='https://ec2.us-west-2.amazonaws.com')
     self.http_session.send.side_effect = ConnectionError(
         "Fake gaierror(8, node or host not known)", request=fake_request)
     with self.assertRaisesRegexp(EndpointConnectionError,
                                  'Could not connect'):
         self.endpoint.make_request(self.op, request_dict())
Example #10
0
    def test_make_request_no_signature_version(self):
        self.endpoint = Endpoint(
            'https://ec2.us-west-2.amazonaws.com/',
            endpoint_prefix='ec2',
            event_emitter=self.event_emitter)
        self.endpoint.http_session = self.http_session

        self.endpoint.make_request(self.op, request_dict())

        # http_session should be used to send the request.
        self.assertTrue(self.http_session.send.called)
        prepared_request = self.http_session.send.call_args[0][0]
        self.assertNotIn('Authorization', prepared_request.headers)
Example #11
0
 def setUp(self):
     self.op = Mock()
     self.op.has_streaming_output = False
     self.op.metadata = {'protocol': 'json'}
     self.event_emitter = Mock()
     self.event_emitter.emit.return_value = []
     self.factory_patch = patch(
         'botocore.parsers.ResponseParserFactory')
     self.factory = self.factory_patch.start()
     self.endpoint = Endpoint(
         'https://ec2.us-west-2.amazonaws.com/',
         endpoint_prefix='ec2',
         event_emitter=self.event_emitter)
     self.http_session = Mock()
     self.http_session.send.return_value = Mock(
         status_code=200, headers={}, content=b'{"Foo": "bar"}',
     )
     self.endpoint.http_session = self.http_session
Example #12
0
    def test_recreate_request(self):

        client = Lambda().client()
        operation_model = client._service_model.operation_model('Invoke')
        self.result = operation_model

        payload = {"name": "bbbbaaaa"}
        request_dict= {'url_path': '/2015-03-31/functions/temp_lambda_HL58KB/invocations',
                       'query_string': {},
                       'method': 'POST',
                       'headers': {},
                       'body': json.dumps(payload)}
        endpoint_url = 'https://lambda.eu-west-1.amazonaws.com'
        user_agent='Boto3/1.12.5 Python/3.8.1 Darwin/18.7.0 Botocore/1.15.5'

        from botocore.awsrequest import prepare_request_dict

        prepare_request_dict(request_dict=request_dict,endpoint_url=endpoint_url,user_agent=user_agent)
        request = client._endpoint.create_request(request_dict, operation_model)

        headers = {'User-Agent': b'Boto3/1.12.5 Python/3.8.1 Darwin/18.7.0 Botocore/1.15.5', 'X-Amz-Date': b'20200224T010440Z', 'Authorization': b'AWS4-HMAC-SHA256 Credential=AKIAURGGJDT3TXD5DCXK/20200224/eu-west-1/lambda/aws4_request, SignedHeaders=host;x-amz-date, Signature=3ea5c19cc097466202e71c4e3b4e306327709442138bfd6443b27a25cfd89c91', 'Content-Length': '15'}
        self.result = requests.post(request.url,json=payload,headers=request.headers).text
        #self.result = request.url
        #http_session = URLLib3Session()

        #self.result = http_session.send(request).text
        #self.result = request.headers.items()
        return
        from botocore.endpoint import Endpoint
        endpoint = Endpoint()
        self.params = { 'url_path': '/2015-03-31/functions/temp_lambda_HL58KB/invocations', 'query_string': {},
                        'method'  : 'POST',
                        'headers' : {'User-Agent': 'Boto3/1.12.5 Python/3.8.1 Darwin/18.7.0 Botocore/1.15.5'},
                        'body'    : b'{"name": "123"}',
                        'url'     : 'https://lambda.eu-west-1.amazonaws.com/2015-03-31/functions/temp_lambda_HL58KB/invocations',
                        'context' : {'client_region': 'eu-west-1',
                                    'client_config': None, 'has_streaming_input': True, 'auth_type': None}}
        #< botocore.config.Config object at0x10f5802e0 >
        self.result =42