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