def testDumpsAndLoads(self): """ Data stored by an L{HTTPPlugin} can be dumped to and loaded from JSON. """ headers = Headers({'x-foo': ['bar']}) request = FakeRequest(uri='/objects', method='PUT', path='/objects?foo=bar', headers=headers) session = SampleSession('id', self.transact) session.start() try: session.http.trace(request) request.setHeader('foo', 'bar') request.setResponseCode(FORBIDDEN) finally: session.stop() data = session.dumps() loadedSession = SampleSession('another-id', self.transact) loadedSession.loads(data) self.assertEqual(loadedSession.http.uri, session.http.uri) self.assertEqual(loadedSession.http.path, session.http.path) self.assertEqual(loadedSession.http.method, session.http.method) self.assertEqual(loadedSession.http.requestHeaders, session.http.requestHeaders) self.assertEqual(loadedSession.http.responseHeaders, session.http.responseHeaders) self.assertEqual(loadedSession.http.code, session.http.code)
def testTrace(self): """ L{HTTPPlugin.trace} extracts and stores information from a request instance. """ headers = Headers({'x-hello': ['goodbye']}) request = FakeRequest(uri='/objects', method='PUT', path='/objects?foo=bar', headers=headers) session = SampleSession('id', self.transact) session.start() try: session.http.trace(request) request.setHeader('foo', 'bar') request.setResponseCode(FORBIDDEN) finally: session.stop() self.assertEqual('/objects', session.http.uri) self.assertEqual('/objects?foo=bar', session.http.path) self.assertEqual('PUT', session.http.method) self.assertEqual(headers, session.http.requestHeaders) self.assertEqual({'Foo': ['bar']}, dict(session.http.responseHeaders.getAllRawHeaders())) self.assertEqual(FORBIDDEN, session.http.code)