def test_names_not_match(self): th = TrueHeaders(dummy_headers_dict) self.assertEqual(th.getDiff(TrueHeaders(dummy_headers_dict2)), ['Header3']) th = TrueHeaders(dummy_headers_dict3) self.assertEqual(th.getDiff(TrueHeaders(dummy_headers_dict2)), ['Header3', 'Header4'])
def check_for_tampering(self, data): """ Here we do checks to verify if the request we made has been tampered with. We have 3 categories of tampering: * **total** when the response is not a json object and therefore we were not able to reach the ooniprobe test backend * **request_line_capitalization** when the HTTP Request line (e.x. GET / HTTP/1.1) does not match the capitalization we set. * **header_field_number** when the number of headers we sent does not match with the ones the backend received * **header_name_capitalization** when the header field names do not match those that we sent. * **header_field_value** when the header field value does not match with the one we transmitted. """ log.msg("Checking for tampering on %s" % self.url) self.report['tampering'] = { 'total': False, 'request_line_capitalization': False, 'header_name_capitalization': False, 'header_field_value': False, 'header_field_number': False } try: response = json.loads(data) except ValueError: self.report['tampering']['total'] = True return request_request_line = "%s / HTTP/1.1" % self.request_method try: response_request_line = response['request_line'] response_headers_dict = response['headers_dict'] except KeyError: self.report['tampering']['total'] = True return if request_request_line != response_request_line: self.report['tampering']['request_line_capitalization'] = True request_headers = TrueHeaders(self.request_headers) diff = request_headers.getDiff(TrueHeaders(response_headers_dict), ignore=['Connection']) if diff: self.report['tampering']['header_field_name'] = True else: self.report['tampering']['header_field_name'] = False self.report['tampering']['header_name_diff'] = list(diff) log.msg(" total: %(total)s" % self.report['tampering']) log.msg(" request_line_capitalization: %(request_line_capitalization)s" % self.report['tampering']) log.msg(" header_name_capitalization: %(header_name_capitalization)s" % self.report['tampering']) log.msg(" header_field_value: %(header_field_value)s" % self.report['tampering']) log.msg(" header_field_number: %(header_field_number)s" % self.report['tampering'])
def test_names_match_expect_ignore(self): th = TrueHeaders(dummy_headers_dict) self.assertEqual(th.getDiff(TrueHeaders(dummy_headers_dict2), ignore=['Header3']), [])
def test_names_match(self): th = TrueHeaders(dummy_headers_dict) self.assertEqual(th.getDiff(TrueHeaders(dummy_headers_dict)), [])
def check_for_tampering(self, data): """ Here we do checks to verify if the request we made has been tampered with. We have 3 categories of tampering: * **total** when the response is not a json object and therefore we were not able to reach the ooniprobe test backend * **request_line_capitalization** when the HTTP Request line (e.x. GET / HTTP/1.1) does not match the capitalization we set. * **header_field_number** when the number of headers we sent does not match with the ones the backend received * **header_name_capitalization** when the header field names do not match those that we sent. * **header_field_value** when the header field value does not match with the one we transmitted. """ log.msg("Checking for tampering on %s" % self.url) self.report['tampering'] = { 'total': False, 'request_line_capitalization': False, 'header_name_capitalization': False, 'header_field_value': False, 'header_field_number': False } try: response = json.loads(data) except ValueError: self.report['tampering']['total'] = True return request_request_line = "%s / HTTP/1.1" % self.request_method try: response_request_line = response['request_line'] response_headers_dict = response['headers_dict'] except KeyError: self.report['tampering']['total'] = True return if request_request_line != response_request_line: self.report['tampering']['request_line_capitalization'] = True request_headers = TrueHeaders(self.request_headers) diff = request_headers.getDiff(TrueHeaders(response_headers_dict), ignore=['Connection']) if diff: self.report['tampering']['header_field_name'] = True else: self.report['tampering']['header_field_name'] = False self.report['tampering']['header_name_diff'] = list(diff) log.msg(" total: %(total)s" % self.report['tampering']) log.msg( " request_line_capitalization: %(request_line_capitalization)s" % self.report['tampering']) log.msg( " header_name_capitalization: %(header_name_capitalization)s" % self.report['tampering']) log.msg( " header_field_value: %(header_field_value)s" % self.report['tampering']) log.msg( " header_field_number: %(header_field_number)s" % self.report['tampering'])
def test_names_match_expect_ignore(self): th = TrueHeaders(dummy_headers_dict) self.assertEqual(th.getDiff(TrueHeaders(dummy_headers_dict2), ignore=['Header3']), set())
def test_names_match(self): th = TrueHeaders(dummy_headers_dict) self.assertEqual(th.getDiff(TrueHeaders(dummy_headers_dict)), set())