Fix bug in flow dumping, add unit test that should have caught this in the first place

This commit is contained in:
Aldo Cortesi 2014-11-06 10:35:00 +13:00
parent e732771c1c
commit 0fe83ce87b
2 changed files with 16 additions and 2 deletions

View file

@ -205,7 +205,7 @@ class DumpMaster(flow.FlowMaster):
elif self.o.flow_detail >= 3:
print >> self.outfile, str_request(f, self.showhost)
print >> self.outfile, self.indent(4, f.request.headers)
if utils.isBin(f.request.content):
if f.request.content != http.CONTENT_MISSING and utils.isBin(f.request.content):
d = netlib.utils.hexdump(f.request.content)
d = "\n".join("%s\t%s %s"%i for i in d)
print >> self.outfile, self.indent(4, d)

View file

@ -1,10 +1,12 @@
import os
from cStringIO import StringIO
from libmproxy import dump, flow, proxy
from libmproxy import dump, flow
from libmproxy.protocol import http
from libmproxy.proxy.primitives import Log
import tutils
import mock
def test_strfuncs():
t = tutils.tresp()
t.is_replay = True
@ -58,6 +60,18 @@ class TestDumpMaster:
assert m.handle_error(f)
assert "error" in cs.getvalue()
def test_missing_content(self):
cs = StringIO()
o = dump.Options(flow_detail=3)
m = dump.DumpMaster(None, o, outfile=cs)
f = tutils.tflow()
f.request.content = http.CONTENT_MISSING
m.handle_request(f)
f.response = tutils.tresp()
f.response.content = http.CONTENT_MISSING
m.handle_response(f)
assert "content missing" in cs.getvalue()
def test_replay(self):
cs = StringIO()