def create_POST_with_data(self, data):
        request = DummyRequest([self.pagename])
        request.requestHeaders.addRawHeader('Content-Type', 'application/vnd.api+json')
        request.requestHeaders.addRawHeader('Accept', 'application/vnd.api+json')
        request.method = b'POST'
        request.writeContent(data)

        return request
    def create_POST_with_data(self, data):
        request = DummyRequest([self.pagename])
        request.requestHeaders.addRawHeader('Content-Type',
                                            'application/vnd.api+json')
        request.requestHeaders.addRawHeader('Accept',
                                            'application/vnd.api+json')
        request.method = b'POST'
        request.writeContent(data)

        return request
    def test_checkRequestHeaders_accept_with_media_parameters(self):
        data = {
            'data': [{
                'type': 'client-transports',
                'version': server.MOAT_API_VERSION,
                'supported': ['obfs4'],
            }]
        }
        encoded_data = json.dumps(data)

        request = DummyRequest([self.pagename])
        request.requestHeaders.addRawHeader('Accept', 'application/vnd.api+json;mp3')
        request.method = b'POST'
        request.writeContent(encoded_data)
    def test_checkRequestHeaders_accept_with_media_parameters(self):
        data = {
            'data': [{
                'type': 'client-transports',
                'version': server.MOAT_API_VERSION,
                'supported': ['obfs4'],
            }]
        }
        encoded_data = json.dumps(data)

        request = DummyRequest([self.pagename])
        request.requestHeaders.addRawHeader('Accept',
                                            'application/vnd.api+json;mp3')
        request.method = b'POST'
        request.writeContent(encoded_data)
Beispiel #5
0
        def create_moat_request():
            encoded_data = json.dumps({
                'data': [{
                    'id': '2',
                    'type': 'moat-solution',
                    'version': server.MOAT_API_VERSION,
                    'transport': 'obfs4',
                    'solution': 'Tvx74PMy',
                    'qrcode': False,
                }]
            })

            request = DummyRequest(["fetch"])
            request.requestHeaders.addRawHeader('Content-Type',
                                                'application/vnd.api+json')
            request.requestHeaders.addRawHeader('Accept',
                                                'application/vnd.api+json')
            request.requestHeaders.addRawHeader('X-Forwarded-For', '3.3.3.3')
            request.headers['X-Forwarded-For'.lower()] = '3.3.3.3'
            request.method = b'POST'
            request.writeContent(encoded_data)

            return request
Beispiel #6
0
class CSPResourceTests(unittest.TestCase):
    """Tests for :class:`bridgedb.HTTPServer.CSPResource`."""
    def setUp(self):
        self.pagename = b'foo.html'
        self.request = DummyRequest([self.pagename])
        self.request.method = b'GET'

        server.setFQDN('bridges.torproject.org')

    def test_CSPResource_setCSPHeader(self):
        """Setting the CSP header on a request should work out just peachy,
        like no errors or other bad stuff happening.
        """
        resource = server.CSPResource()
        resource.setCSPHeader(self.request)

    def test_render_POST_ascii(self):
        """Calling ``CSPResource.render_POST()`` should log whatever stuff was
        sent in the body of the POST request.
        """
        self.request.method = b'POST'
        self.request.writeContent('lah dee dah')
        self.request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)

        resource = server.CSPResource()
        page = resource.render_POST(self.request)

        self.assertIn('<html>', str(page))

    def test_render_POST_no_client_IP(self):
        """Calling ``CSPResource.render_POST()`` should log whatever stuff was
        sent in the body of the POST request, regardless of whether we were
        able to determine the client's IP address.
        """
        self.request.method = b'POST'
        self.request.writeContent('lah dee dah')

        resource = server.CSPResource()
        page = resource.render_POST(self.request)

        self.assertIn('<html>', str(page))

    def test_render_POST_unicode(self):
        """Calling ``CSPResource.render_POST()`` should log whatever stuff was
        sent in the body of the POST request, even if it's unicode.
        """
        self.request.method = b'POST'
        self.request.writeContent(('南京大屠杀是中国抗日战争初期侵华日军在中华民国首都南京犯下的'
                                   '大規模屠殺、強姦以及纵火、抢劫等战争罪行与反人类罪行。'))
        self.request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)

        resource = server.CSPResource()
        page = resource.render_POST(self.request)

        self.assertIn('<html>', str(page))

    def test_render_POST_weird_request(self):
        """Calling ``CSPResource.render_POST()`` without a strange content
        object which doesn't have a ``content`` attribute should trigger the
        ``except Exception`` clause.
        """
        self.request.method = b'GET'
        del self.request.content

        resource = server.CSPResource()
        page = resource.render_POST(self.request)

        self.assertIn('<html>', str(page))
class CSPResourceTests(unittest.TestCase):
    """Tests for :class:`bridgedb.HTTPServer.CSPResource`."""

    def setUp(self):
        self.pagename = b'foo.html'
        self.request = DummyRequest([self.pagename])
        self.request.method = b'GET'

        server.setFQDN('bridges.torproject.org')

    def test_CSPResource_setCSPHeader(self):
        """Setting the CSP header on a request should work out just peachy,
        like no errors or other bad stuff happening.
        """
        resource = server.CSPResource()
        resource.setCSPHeader(self.request)

    def test_render_POST_ascii(self):
        """Calling ``CSPResource.render_POST()`` should log whatever stuff was
        sent in the body of the POST request.
        """
        self.request.method = b'POST'
        self.request.writeContent('lah dee dah')
        self.request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)

        resource = server.CSPResource()
        page = resource.render_POST(self.request)

        self.assertIn('<html>', str(page))

    def test_render_POST_no_client_IP(self):
        """Calling ``CSPResource.render_POST()`` should log whatever stuff was
        sent in the body of the POST request, regardless of whether we were
        able to determine the client's IP address.
        """
        self.request.method = b'POST'
        self.request.writeContent('lah dee dah')

        resource = server.CSPResource()
        page = resource.render_POST(self.request)

        self.assertIn('<html>', str(page))

    def test_render_POST_unicode(self):
        """Calling ``CSPResource.render_POST()`` should log whatever stuff was
        sent in the body of the POST request, even if it's unicode.
        """
        self.request.method = b'POST'
        self.request.writeContent(
            ('南京大屠杀是中国抗日战争初期侵华日军在中华民国首都南京犯下的'
             '大規模屠殺、強姦以及纵火、抢劫等战争罪行与反人类罪行。'))
        self.request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)

        resource = server.CSPResource()
        page = resource.render_POST(self.request)

        self.assertIn('<html>', str(page))

    def test_render_POST_weird_request(self):
        """Calling ``CSPResource.render_POST()`` without a strange content
        object which doesn't have a ``content`` attribute should trigger the
        ``except Exception`` clause.
        """
        self.request.method = b'GET'
        del self.request.content

        resource = server.CSPResource()
        page = resource.render_POST(self.request)

        self.assertIn('<html>', str(page))