Skip to content

Commit

Permalink
Make getDiff take as required argument a TrueHeaders object instead o…
Browse files Browse the repository at this point in the history
…f a dict
  • Loading branch information
hellais committed Nov 29, 2012
1 parent 340e4b9 commit a3025bf
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 12 deletions.
3 changes: 2 additions & 1 deletion ooni/templates/httpt.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,10 @@ def addToReport(self, request, response=None, response_body=None, failure=None):
failure (instance): An instance of :class:twisted.internet.failure.Failure
"""
log.debug("Adding %s to report" % request)
request_headers = TrueHeaders(request['headers'])
request_response = {
'request': {
'headers': request['headers'],
'headers': list(request_headers.getAllRawHeaders()),
'body': request['body'],
'url': request['url'],
'method': request['method']
Expand Down
20 changes: 13 additions & 7 deletions ooni/utils/txagentwithsocks.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,18 +149,25 @@ def setRawHeaders(self, name, values):
self._rawHeaders[name.lower()]['name'] = name
self._rawHeaders[name.lower()]['values'] = values

def getDiff(self, header_dict, ignore=[]):
def getDiff(self, headers, ignore=[]):
"""
ignore: specify a list of header fields to ignore
Returns a set containing the header names that are not present in
header_dict or not present in self.
Args:
headers: a TrueHeaders object
ignore: specify a list of header fields to ignore
Returns:
a set containing the header names that are not present in
header_dict or not present in self.
"""
diff = set()
field_names = []

headers_a = copy(self)
headers_b = TrueHeaders(header_dict)
headers_b = copy(headers)
for name in ignore:
try:
del headers_a._rawHeaders[name.lower()]
Expand All @@ -176,8 +183,7 @@ def getDiff(self, header_dict, ignore=[]):
field_names.append(k)

for name in field_names:
if self.getRawHeaders(name) and \
name in header_dict:
if self.getRawHeaders(name) and headers.getRawHeaders(name):
pass
else:
diff.add(name)
Expand Down
8 changes: 4 additions & 4 deletions tests/test_trueheaders.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,18 @@
class TestTrueHeaders(unittest.TestCase):
def test_names_match(self):
th = TrueHeaders(dummy_headers_dict)
self.assertEqual(th.getDiff(dummy_headers_dict), set())
self.assertEqual(th.getDiff(TrueHeaders(dummy_headers_dict)), set())

def test_names_not_match(self):
th = TrueHeaders(dummy_headers_dict)
self.assertEqual(th.getDiff(dummy_headers_dict2), set(['Header3']))
self.assertEqual(th.getDiff(TrueHeaders(dummy_headers_dict2)), set(['Header3']))

th = TrueHeaders(dummy_headers_dict3)
self.assertEqual(th.getDiff(dummy_headers_dict2), set(['Header3', 'Header4']))
self.assertEqual(th.getDiff(TrueHeaders(dummy_headers_dict2)), set(['Header3', 'Header4']))

def test_names_match_expect_ignore(self):
th = TrueHeaders(dummy_headers_dict)
self.assertEqual(th.getDiff(dummy_headers_dict2, ignore=['Header3']), set())
self.assertEqual(th.getDiff(TrueHeaders(dummy_headers_dict2), ignore=['Header3']), set())



Expand Down

0 comments on commit a3025bf

Please sign in to comment.