class RecordTransportTestCase(unittest.TestCase): def setUp(self): with mock.patch('__builtin__.open') as mopen: mopen.return_value = os.tmpfile() self.t = RecordTransport([{}], recfile='dummy', connection_class=DummyConnection) def test_patched(self): assert self.t.recfile.name == '<tmpfile>' def test_format_request(self): rv = self.t.format_request('GET', '/my/url', {'x': 1}, '{"key": "value"}') lines = rv.split('\n') for line in lines: assert line.startswith(IN) or not line assert len(lines) == 3 assert '#> GET /my/url x=1' == lines[0] assert '#> {"key": "value"}' == lines[1] assert '' == lines[2] # ensure all ends with a newline def test_format_request_with_empty_params_and_body(self): rv = self.t.format_request('GET', '/my/url', None, None) lines = rv.split('\n') for line in lines: assert line.startswith(IN) or not line assert len(lines) == 3 assert '#> GET /my/url -' == lines[0] assert '#> -' == lines[1] assert '' == lines[2] # ensure all ends with a newline def test_format_response(self): rv = self.t.format_response(200, '{"key": "value"}') lines = rv.split('\n') for line in lines: assert line.startswith(OUT) or not line assert len(lines) == 3 assert '#< 200' == lines[0] assert '#< {"key": "value"}' == lines[1] assert '' == lines[2] # ensure all ends with a newline def test_recfile_as_path(self): with mock.patch('__builtin__.open') as mopen: self.t.prepare_output_file('/path') mopen.assert_called_once_with('/path', 'w') def test_recfile_as_file_obj(self): file_obj = os.tmpfile() with mock.patch('__builtin__.open') as mopen: rv = self.t.prepare_output_file(file_obj) assert not mopen.called assert rv == file_obj def test_perform_request_all_markers_in(self): self.t.format_request = mock.create_autospec(self.t.format_request) self.t.format_request.return_value = '#> GET /url -\n#> -\n' self.t.format_response = mock.create_autospec(self.t.format_response) self.t.format_response.return_value = '#< 200\n#< {"key": "value"}' self.t.perform_request('GET', '/url') self.t.recfile.seek(0) contents = self.t.recfile.read() assert IN in contents assert OUT in contents assert END in contents