def test_find(self): mock_request_1 = self._create_mock_request( 'http://www.example.com/test/path/?foo=bar') mock_request_2 = self._create_mock_request( 'http://www.stackoverflow.com/other/path/?x=y') mock_response = self._create_mock_resonse() storage = RequestStorage(base_dir=self.base_dir) request_id = storage.save_request(mock_request_1) storage.save_response(request_id, mock_response) storage.save_request(mock_request_2) self.assertEqual(storage.find('/test/path/')['id'], request_id) self.assertEqual(storage.find('/test/path/?foo=bar')['id'], request_id) self.assertEqual( storage.find('http://www.example.com/test/path/?foo=bar')['id'], request_id) self.assertEqual( storage.find('http://www.example.com/test/path/')['id'], request_id) self.assertIsNone(storage.find('/different/path')) self.assertIsNone(storage.find('/test/path/?x=y')) self.assertIsNone( storage.find('http://www.example.com/different/path/?foo=bar')) self.assertIsNone( storage.find('http://www.different.com/test/path/?foo=bar')) self.assertIsNone( storage.find('http://www.example.com/test/path/?x=y'))
def test_load_response(self): mock_request = self._create_mock_request() storage = RequestStorage(base_dir=self.base_dir) request_id = storage.save_request(mock_request) mock_response = self._create_mock_resonse() storage.save_response(request_id, mock_response) requests = storage.load_requests() self.assertIsNotNone(requests[0]['response'])
def test_load_response(self): request = self._create_request() storage = RequestStorage(base_dir=self.base_dir) storage.save_request(request) response = self._create_response() storage.save_response(request.id, response) requests = storage.load_requests() self.assertIsNotNone(requests[0].response)
def test_load_response_body(self): mock_request = self._create_mock_request() storage = RequestStorage(base_dir=self.base_dir) request_id = storage.save_request(mock_request, request_body=b'test request body') mock_response = self._create_mock_resonse() storage.save_response(request_id, mock_response, response_body=b'test response body') response_body = storage.load_response_body(request_id) self.assertEqual(response_body, b'test response body')
def test_load_response_body(self): body = b'test response body' request = self._create_request() storage = RequestStorage(base_dir=self.base_dir) storage.save_request(request) mock_response = self._create_response(body=body) storage.save_response(request.id, mock_response) response_body = storage.load_response_body(request.id) self.assertEqual(body, response_body)
def test_save_response_no_request(self): mock_request = self._create_mock_request() storage = RequestStorage(base_dir=self.base_dir) request_id = storage.save_request(mock_request) mock_response = self._create_mock_resonse() storage.clear_requests() storage.save_response(request_id, mock_response) response_file_path = self._get_stored_path(request_id, 'response') self.assertFalse(response_file_path)
def test_load_response_encoded_body_error(self): body = b'test response body' request = self._create_request() storage = RequestStorage(base_dir=self.base_dir) storage.save_request(request) response = self._create_response(body=body) response.headers['Content-Encoding'] = 'gzip' storage.save_response(request.id, response) response_body = storage.load_requests()[0].response.body self.assertEqual(body, response_body)
def test_find_similar_urls(self): request_1 = self._create_request('https://192.168.1.1/redfish/v1') request_2 = self._create_request('https://192.168.1.1/redfish') mock_response = self._create_response() storage = RequestStorage(base_dir=self.base_dir) storage.save_request(request_1) storage.save_response(request_1.id, mock_response) storage.save_request(request_2) storage.save_response(request_2.id, mock_response) self.assertEqual(request_1.id, storage.find('.*v1').id) self.assertEqual(request_2.id, storage.find('https://192.168.1.1/redfish$').id)
def test_load_response_body_encoded(self): io = BytesIO() with gzip.GzipFile(fileobj=io, mode='wb') as f: f.write(b'test response body') mock_request = self._create_mock_request() storage = RequestStorage(base_dir=self.base_dir) request_id = storage.save_request(mock_request, request_body=b'test request body') mock_response = self._create_mock_resonse() mock_response.headers['Content-Encoding'] = 'gzip' storage.save_response(request_id, mock_response, response_body=io.getvalue()) response_body = storage.load_response_body(request_id) self.assertEqual(response_body, b'test response body')
def test_load_response_encoded_body(self): body = b'test response body' io = BytesIO() with gzip.GzipFile(fileobj=io, mode='wb') as f: f.write(body) request = self._create_request() storage = RequestStorage(base_dir=self.base_dir) storage.save_request(request) response = self._create_response(body=io.getvalue()) response.headers['Content-Encoding'] = 'gzip' storage.save_response(request.id, response) response_body = storage.load_requests()[0].response.body self.assertEqual(body, response_body)
def test_save_response_with_body(self): body = b'some response body' request = self._create_request() storage = RequestStorage(base_dir=self.base_dir) storage.save_request(request) response = self._create_response(body=body) storage.save_response(request.id, response) response_file_path = self._get_stored_path(request.id, 'response') with open(response_file_path[0], 'rb') as loaded: loaded_response = pickle.load(loaded) self.assertEqual(b'some response body', loaded_response.body)
def test_save_response_with_body(self): mock_request = self._create_mock_request() storage = RequestStorage(base_dir=self.base_dir) request_id = storage.save_request(mock_request) mock_response = self._create_mock_resonse() response_body = b'some response body' storage.save_response(request_id, mock_response, response_body=response_body) response_body_path = self._get_stored_path(request_id, 'responsebody') with open(response_body_path[0], 'rb') as loaded: loaded_body = pickle.load(loaded) self.assertEqual(loaded_body, b'some response body')
def test_save_response(self): mock_request = self._create_mock_request() storage = RequestStorage(base_dir=self.base_dir) request_id = storage.save_request(mock_request) mock_response = self._create_mock_resonse() storage.save_response(request_id, mock_response) response_file_path = self._get_stored_path(request_id, 'response') with open(response_file_path[0], 'rb') as loaded: loaded_response = pickle.load(loaded) self.assertEqual(loaded_response['status_code'], 200) self.assertEqual(loaded_response['reason'], 'OK') self.assertEqual(loaded_response['headers'], { 'Content-Type': 'application/json', 'Content-Length': '500' })
def test_save_response(self): request = self._create_request() storage = RequestStorage(base_dir=self.base_dir) storage.save_request(request) response = self._create_response() storage.save_response(request.id, response) response_file_path = self._get_stored_path(request.id, 'response') with open(response_file_path[0], 'rb') as loaded: loaded_response = pickle.load(loaded) self.assertEqual(200, loaded_response.status_code) self.assertEqual('OK', loaded_response.reason) self.assertEqual( { 'Content-Type': 'application/json', 'Content-Length': '500' }, dict(loaded_response.headers))