class RecordTransportFullTestCase(unittest.TestCase): def setUp(self): self.name = os.tmpnam() self.t = RecordTransport([{}], recfile=self.name, connection_class=DummyConnection) self.args = ('GET', '/myindex', None, None) def test_record_works_normally_if_no_file(self): self.t.recfile = None self.t.perform_request(*self.args) calls = self.t.get_connection().calls assert len(calls) == 1 assert calls[0][0] == self.args def test_record_works_normally_if_exception_raised_in_logging(self): self.t.format_request = mock.Mock() self.t.format_request.side_effect = Exception('BOOM!') self.t.perform_request(*self.args) calls = self.t.get_connection().calls assert len(calls) == 1 assert calls[0][0] == self.args def test_request_is_logged(self): self.t.perform_request(*self.args) calls = self.t.get_connection().calls assert len(calls) == 1 assert calls[0][0] == self.args with open(self.name, 'r') as rfile: contents = rfile.read() assert len(contents), 'Empty replay log contents' for item in self.args: if item: assert item in contents, '%s not found in replay log' % item
def setUp(self): with mock.patch('__builtin__.open') as mopen: mopen.return_value = os.tmpfile() self.t = RecordTransport([{}], recfile='dummy', connection_class=DummyConnection)
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
def setUp(self): self.name = os.tmpnam() self.t = RecordTransport([{}], recfile=self.name, connection_class=DummyConnection) self.args = ('GET', '/myindex', None, None)