def test_render_POST_unexpired_with_qrcode(self):
        request = DummyRequest([self.pagename])
        request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)
        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')

        resource = server.CaptchaFetchResource(self.hmacKey,
                                               self.publicKey,
                                               self.secretKey,
                                               self.captchaDir,
                                               useForwardedHeader=False)
        image, challenge = resource.getCaptchaImage(request)

        data = {
            'data': [{
                'id': '2',
                'type': 'moat-solution',
                'version': server.MOAT_API_VERSION,
                'transport': 'obfs4',
                'challenge': challenge,
                'solution': self.solution,
                'qrcode': 'true',
            }]
        }
        encoded_data = json.dumps(data)
        request = self.create_POST_with_data(encoded_data)
        request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)
        request.requestHeaders.addRawHeader('X-Forwarded-For', '3.3.3.3')

        response = self.resource.render(request)
        decoded = json.loads(response)

        self.assertTrue(decoded)
        self.assertIsNotNone(decoded.get('data'))

        datas = decoded['data']
        self.assertEqual(len(datas), 1)

        data = datas[0]
        self.assertIsNotNone(data['qrcode'])
        self.assertIsNotNone(data['bridges'])
        self.assertEqual(data['version'], server.MOAT_API_VERSION)
        self.assertEqual(data['type'], 'moat-bridges')
        self.assertEqual(data['id'], '3')
    def create_valid_POST_make_new_challenge(self):
        request = DummyRequest([self.pagename])
        request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)
        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')

        resource = server.CaptchaFetchResource(self.hmacKey, self.publicKey,
                                               self.secretKey, self.captchaDir,
                                               useForwardedHeader=False)
        image, challenge = resource.getCaptchaImage(request)

        request = self.create_valid_POST_with_challenge(challenge)
        request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)
        request.requestHeaders.addRawHeader('X-Forwarded-For', '3.3.3.3')

        return request
    def test_render_POST_unexpired_with_qrcode(self):
        request = DummyRequest([self.pagename])
        request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)
        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')

        resource = server.CaptchaFetchResource(self.hmacKey, self.publicKey,
                                               self.secretKey, self.captchaDir,
                                               useForwardedHeader=False)
        image, challenge = resource.getCaptchaImage(request)

        data = {
            'data': [{
                'id': '2',
                'type': 'moat-solution',
                'version': server.MOAT_API_VERSION,
                'transport': 'obfs4',
                'challenge': challenge,
                'solution': self.solution,
                'qrcode': 'true',
            }]
        }
        encoded_data = json.dumps(data)
        request = self.create_POST_with_data(encoded_data)
        request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)
        request.requestHeaders.addRawHeader('X-Forwarded-For', '3.3.3.3')

        response = self.resource.render(request)
        decoded = json.loads(response)

        self.assertTrue(decoded)
        self.assertIsNotNone(decoded.get('data'))

        datas = decoded['data']
        self.assertEqual(len(datas), 1)

        data = datas[0]
        self.assertIsNotNone(data['qrcode'])
        self.assertIsNotNone(data['bridges'])
        self.assertEqual(data['version'], server.MOAT_API_VERSION)
        self.assertEqual(data['type'], 'moat-bridges')
        self.assertEqual(data['id'], '3')
 def createRequestWithIPs(self):
     """Set the IP address returned from ``request.getClientIP()`` to
     '3.3.3.3', and the IP address reported in the 'X-Forwarded-For' header
     to '2.2.2.2'.
     """
     request = DummyRequest([''])
     request.headers.update({'x-forwarded-for': '2.2.2.2'})
     # See :api:`twisted.test.requesthelper.DummyRequest.getClientIP`
     request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)
     request.method = b'GET'
     return request
    def create_valid_POST_make_new_challenge(self):
        request = DummyRequest([self.pagename])
        request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)
        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')

        resource = server.CaptchaFetchResource(self.hmacKey,
                                               self.publicKey,
                                               self.secretKey,
                                               self.captchaDir,
                                               useForwardedHeader=False)
        image, challenge = resource.getCaptchaImage(request)

        request = self.create_valid_POST_with_challenge(challenge)
        request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)
        request.requestHeaders.addRawHeader('X-Forwarded-For', '3.3.3.3')

        return request
Ejemplo n.º 6
0
 def createRequestWithIPs(self):
     """Set the IP address returned from ``request.getClientIP()`` to
     '3.3.3.3', and the IP address reported in the 'X-Forwarded-For' header
     to '2.2.2.2'.
     """
     request = DummyRequest([self.pagename])
     # Since we do not set ``request.getClientIP`` here like we do in some
     # of the other unittests, an exception would be raised here if
     # ``getBridgesForRequest()`` is unable to get the IP address from this
     # 'X-Forwarded-For' header (because ``ip`` would get set to ``None``).
     request.headers.update({'x-forwarded-for': '2.2.2.2'})
     # See :api:`twisted.test.requesthelper.DummyRequest.getClientIP`
     request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)
     request.method = b'GET'
     return request
Ejemplo n.º 7
0
 def createRequestWithIPs(self):
     """Set the IP address returned from ``request.getClientIP()`` to
     '3.3.3.3', and the IP address reported in the 'X-Forwarded-For' header
     to '2.2.2.2'.
     """
     request = DummyRequest([self.pagename])
     # Since we do not set ``request.getClientIP`` here like we do in some
     # of the other unittests, an exception would be raised here if
     # ``getBridgesForRequest()`` is unable to get the IP address from this
     # 'X-Forwarded-For' header (because ``ip`` would get set to ``None``).
     request.headers.update({'x-forwarded-for': '2.2.2.2'})
     # See :api:`twisted.test.requesthelper.DummyRequest.getClientIP`
     request.client = requesthelper.IPv4Address('TCP', '3.3.3.3', 443)
     request.method = b'GET'
     return request