def test_http_manual_redirect_put(self, mock_request): mock_request.side_effect = [ fakes.FakeHTTPResponse( 302, 'Found', {'location': 'http://example.com:9494/foo/bar'}, ''), fakes.FakeHTTPResponse(200, 'OK', {'content-type': 'application/json'}, '{}') ] client = http.HTTPClient('http://example.com:9494/foo') resp, body = client.process_request('', 'PUT', json={}) self.assertEqual(200, resp.status_code) mock_request.assert_has_calls([ mock.call('PUT', 'http://example.com:9494/foo', allow_redirects=False, headers={'User-Agent': 'python-glareclient'}, json={}), mock.call('PUT', 'http://example.com:9494/foo/bar', allow_redirects=False, headers={'User-Agent': 'python-glareclient'}, json={}) ])
def test_http_process_request_argument_passed_to_requests( self, mock_request): """Check that we have sent the proper arguments to requests.""" # Record a 200 mock_request.return_value = \ fakes.FakeHTTPResponse( 200, 'OK', {'content-type': 'application/json'}, '{}') client = http.HTTPClient('http://example.com:9494') client.verify_cert = True client.cert_file = 'RANDOM_CERT_FILE' client.key_file = 'RANDOM_KEY_FILE' client.auth_url = 'http://AUTH_URL' resp, body = client.process_request('', 'GET', data='text') self.assertEqual(200, resp.status_code) self.assertEqual({}, body) mock_request.assert_called_once_with('GET', 'http://example.com:9494', allow_redirects=False, cert=('RANDOM_CERT_FILE', 'RANDOM_KEY_FILE'), verify=True, data='text', headers={ 'X-Auth-Url': 'http://AUTH_URL', 'User-Agent': 'python-glareclient' })
def test_http_manual_redirect_error_without_location(self, mock_request): mock_request.return_value = \ fakes.FakeHTTPResponse( 302, 'Found', {}, '') client = http.HTTPClient('http://example.com:9494/foo') self.assertRaises(exc.InvalidEndpoint, client.process_request, '', 'DELETE') mock_request.assert_called_once_with( 'DELETE', 'http://example.com:9494/foo', allow_redirects=False, headers={'User-Agent': 'python-glareclient'})
def test_http_process_request_redirect(self, mock_request): # Record the 302 mock_request.side_effect = [ fakes.FakeHTTPResponse(302, 'Found', {'location': 'http://example.com:9494'}, ''), fakes.FakeHTTPResponse(200, 'OK', {}, '{}') ] client = http.HTTPClient('http://example.com:9494') resp, body = client.process_request('', 'GET') self.assertEqual(200, resp.status_code) self.assertEqual({}, body) mock_request.assert_has_calls([ mock.call('GET', 'http://example.com:9494', allow_redirects=False, headers={'User-Agent': 'python-glareclient'}), mock.call('GET', 'http://example.com:9494', allow_redirects=False, headers={'User-Agent': 'python-glareclient'}) ])
def test_http_raw_request(self, mock_request): headers = {'User-Agent': 'python-glareclient'} mock_request.return_value = \ fakes.FakeHTTPResponse( 200, 'OK', {}, '') client = http.HTTPClient('http://example.com:9494') resp = client.request('', 'GET') self.assertEqual(200, resp.status_code) self.assertEqual('', ''.join([x for x in resp.content])) mock_request.assert_called_with('GET', 'http://example.com:9494', allow_redirects=False, headers=headers)
def test_http_request_specify_timeout(self, mock_request): mock_request.return_value = \ fakes.FakeHTTPResponse( 200, 'OK', {'content-type': 'application/json'}, '{}') client = http.HTTPClient('http://example.com:9494', timeout='123') resp, body = client.process_request('', 'GET') self.assertEqual(200, resp.status_code) self.assertEqual({}, body) mock_request.assert_called_once_with( 'GET', 'http://example.com:9494', allow_redirects=False, headers={'User-Agent': 'python-glareclient'}, timeout=float(123))
def test_http_300_process_request(self, mock_request): mock_request.return_value = \ fakes.FakeHTTPResponse( 300, 'OK', {'content-type': 'application/json'}, '{}') client = http.HTTPClient('http://example.com:9494') e = self.assertRaises(exc.HTTPMultipleChoices, client.process_request, '', 'GET') # Assert that the raised exception can be converted to string self.assertIsNotNone(str(e)) # Record a 300 mock_request.assert_called_once_with( 'GET', 'http://example.com:9494', allow_redirects=False, headers={'User-Agent': 'python-glareclient'})
def test_http_process_request_invalid_json(self, mock_request): # Record a 200 mock_request.return_value = \ fakes.FakeHTTPResponse( 200, 'OK', {'content-type': 'application/json'}, 'invalid-json') client = http.HTTPClient('http://example.com:9494') resp, body = client.process_request('', 'GET') self.assertEqual(200, resp.status_code) self.assertIsNone(body) mock_request.assert_called_once_with( 'GET', 'http://example.com:9494', allow_redirects=False, headers={'User-Agent': 'python-glareclient'})
def test_http_process_request_non_json_resp_cont_type(self, mock_request): # Record a 200 mock_request.return_value = \ fakes.FakeHTTPResponse( 200, 'OK', {'content-type': 'not/json'}, '{}') client = http.HTTPClient('http://example.com:9494') resp, body = client.process_request('', 'GET', data='test-data') self.assertEqual(200, resp.status_code) mock_request.assert_called_once_with( 'GET', 'http://example.com:9494', data='test-data', allow_redirects=False, headers={'User-Agent': 'python-glareclient'})
def test_region_name(self, mock_request): # Record a 200 fake200 = fakes.FakeHTTPResponse(200, 'OK', {}, '') mock_request.return_value = fake200 client = http.HTTPClient('http://example.com:9494') client.region_name = 'RegionOne' resp = client.request('', 'GET') self.assertEqual(200, resp.status_code) mock_request.assert_called_once_with('GET', 'http://example.com:9494', allow_redirects=False, headers={ 'X-Region-Name': 'RegionOne', 'User-Agent': 'python-glareclient' })
def test_token_or_credentials(self, mock_request): # Record a 200 fake200 = fakes.FakeHTTPResponse(200, 'OK', {}, '') mock_request.side_effect = [fake200, fake200, fake200] # Replay, create client, assert client = http.HTTPClient('http://example.com:9494') resp = client.request('', 'GET') self.assertEqual(200, resp.status_code) client.username = '******' client.password = '******' resp = client.request('', 'GET') self.assertEqual(200, resp.status_code) client.auth_token = 'abcd1234' resp = client.request('', 'GET') self.assertEqual(200, resp.status_code) # no token or credentials mock_request.assert_has_calls([ mock.call('GET', 'http://example.com:9494', allow_redirects=False, headers={'User-Agent': 'python-glareclient'}), mock.call('GET', 'http://example.com:9494', allow_redirects=False, headers={ 'User-Agent': 'python-glareclient', 'X-Auth-Key': 'pass', 'X-Auth-User': '******' }), mock.call('GET', 'http://example.com:9494', allow_redirects=False, headers={ 'User-Agent': 'python-glareclient', 'X-Auth-Token': 'abcd1234' }) ])