Пример #1
0
    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)
Пример #2
0
    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)