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
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
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