Пример #1
0
 def test_make_request_raises_error(self, requests_session_builder):
     mock_session = self._get_requests_session(requests_session_builder)
     mock_session.request.side_effect = requests.RequestException(
         'Mock error')
     client = TNCOClient('https://test.example.com', use_sessions=True)
     with self.assertRaises(TNCOClientError) as context:
         client.make_request(
             TNCOClientRequest(method='GET', endpoint='api/test'))
     self.assertEqual(str(context.exception), 'Mock error')
Пример #2
0
 def test_make_request_for_json_fails_when_cannot_parse(
         self, requests_session_builder):
     mock_session = self._get_requests_session(requests_session_builder)
     mock_session.request.return_value.json.side_effect = ValueError(
         'Mock error')
     client = TNCOClient('https://test.example.com', use_sessions=True)
     with self.assertRaises(TNCOClientError) as context:
         client.make_request_for_json(
             TNCOClientRequest(method='GET', endpoint='api/test'))
     self.assertEqual(str(context.exception),
                      'Failed to parse response to JSON: Mock error')
Пример #3
0
 def test_make_request(self, requests_session_builder):
     client = TNCOClient('https://test.example.com', use_sessions=True)
     response = client.make_request(
         TNCOClientRequest(method='GET', endpoint='api/test'))
     mock_session = self._get_requests_session(requests_session_builder)
     mock_session.request.assert_called_with(
         method='GET',
         url='https://test.example.com/api/test',
         headers={},
         verify=False)
     self.assertEqual(response, mock_session.request.return_value)
Пример #4
0
 def test_make_request_with_headers(self, requests_session_builder):
     client = TNCOClient('https://test.example.com', use_sessions=True)
     client.make_request(
         TNCOClientRequest(method='GET',
                           endpoint='api/test',
                           headers={'Accept': 'plain/text'}))
     mock_session = self._get_requests_session(requests_session_builder)
     mock_session.request.assert_called_with(
         method='GET',
         url='https://test.example.com/api/test',
         headers={'Accept': 'plain/text'},
         verify=False)
Пример #5
0
 def test_make_request_raises_http_error(self, requests_session_builder):
     mock_session = self._get_requests_session(requests_session_builder)
     mock_session.request.return_value.raise_for_status.side_effect = requests.HTTPError(
         'Mock http error', response=MagicMock(status_code=400))
     client = TNCOClient('https://test.example.com', use_sessions=True)
     with self.assertRaises(TNCOClientError) as context:
         client.make_request(
             TNCOClientRequest(method='GET', endpoint='api/test'))
     self.assertEqual(
         str(context.exception),
         'GET request to https://test.example.com/api/test failed: status=400, message=Mock http error'
     )
Пример #6
0
 def test_make_request_with_trace_ctx(self, requests_session_builder):
     from lmctl.utils.trace_ctx import trace_ctx
     with trace_ctx.scope(transaction_id='123456789'):
         client = TNCOClient('https://test.example.com', use_sessions=True)
         client.make_request(
             TNCOClientRequest(method='GET', endpoint='api/test'))
         mock_session = self._get_requests_session(requests_session_builder)
         mock_session.request.assert_called_with(
             method='GET',
             url='https://test.example.com/api/test',
             headers={'x-tracectx-transactionid': '123456789'},
             verify=False)
Пример #7
0
 def test_make_request_with_body(self, requests_session_builder):
     client = TNCOClient('https://test.example.com', use_sessions=True)
     client.make_request(
         TNCOClientRequest(method='POST',
                           endpoint='api/test',
                           body=json.dumps({'id': 'test'})))
     mock_session = self._get_requests_session(requests_session_builder)
     mock_session.request.assert_called_with(
         method='POST',
         url='https://test.example.com/api/test',
         data=json.dumps({'id': 'test'}),
         headers={},
         verify=False)
Пример #8
0
 def test_make_request_with_auth(self, requests_session_builder):
     mock_auth = self._build_mocked_auth_type()
     client = TNCOClient('https://test.example.com',
                         auth_type=mock_auth,
                         use_sessions=True)
     client.make_request(
         TNCOClientRequest(method='GET', endpoint='api/test'))
     mock_session = self._get_requests_session(requests_session_builder)
     mock_session.request.assert_called_with(
         method='GET',
         url='https://test.example.com/api/test',
         headers={'Authorization': f'Bearer {self.token}'},
         verify=False)
Пример #9
0
 def test_make_request_raises_http_error_with_yaml_body_read_localized_message(
         self, requests_session_builder):
     mock_session = self._get_requests_session(requests_session_builder)
     mock_response = MagicMock(status_code=400,
                               headers={'Content-Type': 'application/yaml'},
                               text='message: "This is the message"')
     mock_session.request.return_value.raise_for_status.side_effect = requests.HTTPError(
         'Mock http error', response=mock_response)
     client = TNCOClient('https://test.example.com', use_sessions=True)
     with self.assertRaises(TNCOClientError) as context:
         client.make_request(
             TNCOClientRequest(method='GET', endpoint='api/test'))
     self.assertEqual(
         str(context.exception),
         'GET request to https://test.example.com/api/test failed: status=400, message=This is the message'
     )
Пример #10
0
 def test_make_request_raises_http_error_with_unparsable_json_body(
         self, requests_session_builder):
     mock_session = self._get_requests_session(requests_session_builder)
     mock_response = MagicMock(status_code=400,
                               headers={'Content-Type': 'application/json'})
     mock_response.json.side_effect = ValueError('Cannot parse')
     mock_session.request.return_value.raise_for_status.side_effect = requests.HTTPError(
         'Mock http error', response=mock_response)
     client = TNCOClient('https://test.example.com', use_sessions=True)
     with self.assertRaises(TNCOClientError) as context:
         client.make_request(
             TNCOClientRequest(method='GET', endpoint='api/test'))
     self.assertEqual(
         str(context.exception),
         'GET request to https://test.example.com/api/test failed: status=400, message=Mock http error'
     )
Пример #11
0
 def test_make_request_with_auth_but_inject_current_auth_false(
         self, requests_session_builder):
     mock_auth = self._build_mocked_auth_type()
     client = TNCOClient('https://test.example.com',
                         auth_type=mock_auth,
                         use_sessions=True)
     client.make_request(
         TNCOClientRequest(method='GET',
                           endpoint='api/test',
                           inject_current_auth=False))
     mock_session = self._get_requests_session(requests_session_builder)
     mock_session.request.assert_called_with(
         method='GET',
         url='https://test.example.com/api/test',
         headers={},
         verify=False)
Пример #12
0
 def test_make_request_combines_trace_ctx_and_auth_and_user_supplied_headers(
         self, requests_session_builder):
     mock_auth = self._build_mocked_auth_type()
     from lmctl.utils.trace_ctx import trace_ctx
     with trace_ctx.scope(transaction_id='123456789'):
         client = TNCOClient('https://test.example.com',
                             auth_type=mock_auth,
                             use_sessions=True)
         client.make_request(
             TNCOClientRequest(method='GET',
                               endpoint='api/test',
                               headers={'Accept': 'plain/text'}))
         mock_session = self._get_requests_session(requests_session_builder)
         mock_session.request.assert_called_with(
             method='GET',
             url='https://test.example.com/api/test',
             headers={
                 'Accept': 'plain/text',
                 'Authorization': f'Bearer {self.token}',
                 'x-tracectx-transactionid': '123456789'
             },
             verify=False)
Пример #13
0
    def test_request_for_json(self):
        request = TNCOClientRequest.build_request_for_json(endpoint='api/test')
        self.assertEqual(request, TNCOClientRequest(
            endpoint='api/test',
            method='GET',
            headers={'Accept': 'application/json'}
        ))

        request = TNCOClientRequest.build_request_for_json(endpoint='api/test', method='POST')
        self.assertEqual(request, TNCOClientRequest(
            endpoint='api/test',
            method='POST',
            headers={'Accept': 'application/json'}
        ))

        request = TNCOClientRequest.build_request_for_json(endpoint='api/test', query_params={'Testing': True})
        self.assertEqual(request, TNCOClientRequest(
            endpoint='api/test',
            method='GET',
            headers={'Accept': 'application/json'},
            query_params={'Testing': True}
        ))
Пример #14
0
 def test_init_minimum(self):
     request = TNCOClientRequest(endpoint='api/test', method='POST')
     self.assertEqual(request, TNCOClientRequest(
         endpoint='api/test',
         method='POST'
     ))