Пример #1
0
    def test_global_headers_from_client_overriden_by_gapipy_headers(self):
        """
        The client's "global_http_headers" should be included when generating
        HTTP headers for a request, but are overriden by some required headers
        added by gapipy.
        """
        self.client.api_language = 'human'

        # We'll set up some HTTP headers in our client config...
        header_value = "woob woob woob woob woob woob woob",
        self.client.global_http_headers = {
            'Accept-Language': header_value,
            'User-Agent': header_value,
            'X-Application-Key': header_value,
            'X-Zoidberg': header_value,
        }
        requestor = APIRequestor(self.client, self.resources)

        method = 'METHOD'
        additional_headers = {}

        # ... and ask for some request headers...
        request_headers = requestor._get_headers(method, additional_headers)

        # ... and we should find that gapipy has overridden some of those
        # headers...
        self.assertNotEqual(request_headers['Accept-Language'], header_value)
        self.assertNotEqual(request_headers['User-Agent'], header_value)
        self.assertNotEqual(request_headers['X-Application-Key'], header_value)

        # ... but we still other header values from the config that do not
        # collide with headers gapipy writes
        self.assertEqual(request_headers['X-Zoidberg'], header_value)
Пример #2
0
 def test_get_with_falsy_resource_id_does_not_raise_error(
         self, mock_request):
     requestor = APIRequestor(self.client, self.resources)
     requestor.get(0)
     mock_request.assert_called_once_with('/resources/0',
                                          'GET',
                                          additional_headers=None)
Пример #3
0
 def test_list_resource_with_parent(self, mock_request):
     parent = _Parent('parent', '1234', None)
     requestor = APIRequestor(self.client, self.resources, parent=parent)
     requestor.list_raw()
     mock_request.assert_called_once_with('/parent/1234/resources',
                                          'GET',
                                          params=None)
Пример #4
0
 def test_list_raw_uri_params_requestor_params(self, mock_request):
     params = {'param': 'value'}
     requestor = APIRequestor(self.client, self.resources, params=params)
     requestor.list_raw('/test_uri?')
     mock_request.assert_called_once_with('/test_uri?',
                                          'GET',
                                          params=params)
Пример #5
0
 def test_uuid_not_set(self, mock_request):
     self.client.uuid = False
     requestor = APIRequestor(self.client, self.resources)
     requestor.params = {'test': '1234'}
     requestor.list_raw()
     mock_request.assert_called_once_with('/resources',
                                          'GET',
                                          params={'test': '1234'})
Пример #6
0
 def test_uuid_with_other_params(self, mock_make_call):
     self.client.uuid = True
     requestor = APIRequestor(self.client, self.resources)
     requestor.params = {'test': '1234'}
     requestor.list_raw()
     params_arg = mock_make_call.call_args[0][-1]
     self.assertEqual(params_arg['test'], '1234')
     self.assertTrue('uuid' in params_arg)
Пример #7
0
 def test_uuid_with_other_params(self, mock_make_call):
     self.client.uuid = True
     requestor = APIRequestor(self.client, self.resources)
     requestor.params = {'test': '1234'}
     requestor.list_raw()
     params_arg = mock_make_call.call_args[0][-1]
     self.assertEqual(params_arg['test'], '1234')
     self.assertTrue('uuid' in params_arg)
Пример #8
0
    def _update(self, partial=False):
        request = APIRequestor(self._client, self)

        data = self.to_dict()
        if partial:
            # .items isn't effecient in Python 2
            data = {k: v for k, v in data.items() if self._raw_data.get(k) != v}

        return request.update(self.id, json.dumps(data), partial=partial)
Пример #9
0
 def test_get_with_null_resource_id_and_uri_raises_error(self, mock_request):
     requestor = APIRequestor(self.client, self.resources)
     error_msg = 'Need to provide at least one of `resource_id` or `uri` as argument'
     if sys.version_info.major < 3:
         with self.assertRaisesRegexp(ValueError, error_msg):
             requestor.get()
     else:
         with self.assertRaisesRegex(ValueError, error_msg):
             requestor.get()
Пример #10
0
    def test_list_generator(self, mock_list):
        mock_list.side_effect = [FIRST_PAGE_LIST_DATA, SECOND_PAGE_LIST_DATA]
        expected_calls = [
            call(None),
            call('http://localhost:5000/resources/?page=2'),
        ]

        requestor = APIRequestor(self.client, self.resources)
        resources = list(requestor.list())

        self.assertEqual(mock_list.mock_calls, expected_calls)
        self.assertEqual(len(resources), 6)
Пример #11
0
    def test_list_generator(self, mock_list):
        mock_list.side_effect = [FIRST_PAGE_LIST_DATA, SECOND_PAGE_LIST_DATA]
        expected_calls = [
            call(None),
            call('http://localhost:5000/resources/?page=2'),
        ]

        requestor = APIRequestor(self.client, self.resources)
        resources = list(requestor.list())

        self.assertEqual(mock_list.mock_calls, expected_calls)
        self.assertEqual(len(resources), 6)
Пример #12
0
    def _update(self, partial=False):
        request = APIRequestor(self._client, self)

        data = self.to_dict()
        if partial:
            # .items isn't effecient in Python 2
            data = {
                k: v
                for k, v in data.items() if self._raw_data.get(k) != v
            }

        return request.update(self.id, json.dumps(data), partial=partial)
Пример #13
0
    def test_global_headers_from_client(self):
        """
        The client's "global_http_headers" should be included when generating
        HTTP headers for a request.
        """
        header_name = "x-farnsworth"
        header_value = "here's where I keep assorted lengths of wire",
        self.client.global_http_headers = {header_name: header_value}
        requestor = APIRequestor(self.client, self.resources)

        method = 'METHOD'
        additional_headers = {}
        request_headers = requestor._get_headers(method, additional_headers)

        self.assertIn(header_name, request_headers)
        self.assertEqual(request_headers[header_name], header_value)
Пример #14
0
    def test_global_headers_from_client_overriden_by_additional_headers(self):
        """
        The client's "global_http_headers" should be included when generating
        HTTP headers for a request, but are overridable by headers added later.
        """
        header_name = "x-farnsworth"
        header_value = "here's where I keep assorted lengths of wire",
        self.client.global_http_headers = {header_name: header_value}
        requestor = APIRequestor(self.client, self.resources)

        method = 'METHOD'

        # If `_get_headers` is given an `additional_headers` value with the
        # same `header_name` as was in the client configs...
        request_headers = requestor._get_headers(method,
                                                 {header_name: 'good news'})

        # ... the value from `additional_headers` will be the one in the final
        # header-dict
        self.assertIn(header_name, request_headers)
        self.assertEqual(request_headers[header_name], 'good news')
Пример #15
0
    def _update(self, partial=False):
        request = APIRequestor(self._client, self)

        # payload to send
        data = self.to_dict()

        # when making a partial (PATCH) request, ensure we only include values
        # changed on self compared to the initial raw response received from
        # the G API.
        #
        # Added (2.35.0): If the change computed results in an empty data
        #                 dictionary we'll raise a EmptyPartialUpdateError
        if partial:
            data = {
                k: v
                for k, v in data.items() if self._raw_data.get(k) != v
            }
            if not data:
                raise EmptyPartialUpdateError

        return request.update(self.id, json.dumps(data), partial=partial)
Пример #16
0
 def test_get_with_null_resource_id_and_uri_raises_error(
         self, mock_request):
     requestor = APIRequestor(self.client, self.resources)
     error_msg = 'Need to provide at least one of `resource_id` or `uri` as argument'
     if sys.version_info.major < 3:
         with self.assertRaisesRegexp(ValueError, error_msg):
             requestor.get()
     else:
         with self.assertRaisesRegex(ValueError, error_msg):
             requestor.get()
Пример #17
0
 def options(cls, client):
     return APIRequestor(client, cls).options()
Пример #18
0
 def _create(self):
     request = APIRequestor(self._client, self)
     return request.create(self.to_json())
Пример #19
0
 def _create(self):
     request = APIRequestor(self._client, self)
     return request.create(self.to_json())
Пример #20
0
 def create(cls, client, data_dict):
     request = APIRequestor(client, cls)
     response = request.create(json.dumps(data_dict))
     return cls(response, client=client)
Пример #21
0
 def test_get_resource_by_id(self, mock_request):
     requestor = APIRequestor(self.client, self.resources)
     requestor.get(1234)
     mock_request.assert_called_once_with('/resources/1234', 'GET', additional_headers=None)
Пример #22
0
 def test_get_with_falsy_resource_id_does_not_raise_error(self, mock_request):
     requestor = APIRequestor(self.client, self.resources)
     requestor.get(0)
     mock_request.assert_called_once_with('/resources/0', 'GET', additional_headers=None)
Пример #23
0
 def test_uuid_set(self, mock_make_call):
     self.client.uuid = True
     requestor = APIRequestor(self.client, self.resources)
     requestor.list_raw()
     params_arg = mock_make_call.call_args[0][-1]
     self.assertTrue('uuid' in params_arg)
Пример #24
0
 def test_list_resource(self, mock_request):
     requestor = APIRequestor(self.client, self.resources)
     requestor.list_raw()
     mock_request.assert_called_once_with('/resources', 'GET', params=None)
Пример #25
0
 def test_list_resource(self, mock_request):
     requestor = APIRequestor(self.client, self.resources)
     requestor.list_raw()
     mock_request.assert_called_once_with('/resources', 'GET', params=None)
Пример #26
0
 def test_list_resource_with_parent(self, mock_request):
     parent = ('parent', '1234', None)
     requestor = APIRequestor(self.client, self.resources, parent=parent)
     requestor.list_raw()
     mock_request.assert_called_once_with(
         '/parent/1234/resources', 'GET', params=None)
Пример #27
0
 def test_get_resource_by_id(self, mock_request):
     requestor = APIRequestor(self.client, self.resources)
     requestor.get(1234)
     mock_request.assert_called_once_with('/resources/1234',
                                          'GET',
                                          additional_headers=None)
Пример #28
0
 def test_uuid_not_set(self, mock_request):
     self.client.uuid = False
     requestor = APIRequestor(self.client, self.resources)
     requestor.params = {'test': '1234'}
     requestor.list_raw()
     mock_request.assert_called_once_with('/resources', 'GET', params={'test': '1234'})
Пример #29
0
 def create(cls, client, data_dict, headers=None):
     request = APIRequestor(client, cls)
     response = request.create(json.dumps(data_dict), headers=headers)
     return cls(response, client=client)
Пример #30
0
 def test_list_raw_uri_params_no_requestor_params(self, mock_request):
     requestor = APIRequestor(self.client, self.resources)
     requestor.list_raw('/test_uri?')
     mock_request.assert_called_once_with('/test_uri?', 'GET', params=None)
Пример #31
0
 def create(cls, client, data_dict):
     request = APIRequestor(client, cls)
     response = request.create(json.dumps(data_dict))
     return cls(response, client=client)
Пример #32
0
 def test_uuid_set(self, mock_make_call):
     self.client.uuid = True
     requestor = APIRequestor(self.client, self.resources)
     requestor.list_raw()
     params_arg = mock_make_call.call_args[0][-1]
     self.assertTrue('uuid' in params_arg)