Keep blank query values for flow hashing

This commit is contained in:
Terry Long 2015-04-02 22:10:01 -07:00
parent 41a1a0bef3
commit 6a24a4e3c5
2 changed files with 10 additions and 6 deletions

View File

@ -232,7 +232,7 @@ class ServerPlaybackState:
r = flow.request r = flow.request
_, _, path, _, query, _ = urlparse.urlparse(r.url) _, _, path, _, query, _ = urlparse.urlparse(r.url)
queriesArray = urlparse.parse_qsl(query) queriesArray = urlparse.parse_qsl(query, keep_blank_values=True)
key = [ key = [
str(r.port), str(r.port),

View File

@ -125,6 +125,10 @@ class TestServerPlaybackState:
r.request.path = "voing" r.request.path = "voing"
assert s._hash(r) != s._hash(r2) assert s._hash(r) != s._hash(r2)
r.request.path = "path?blank_value"
r2.request.path = "path?"
assert s._hash(r) != s._hash(r2)
def test_headers(self): def test_headers(self):
s = flow.ServerPlaybackState(["foo"], [], False, False, None, False, None, False) s = flow.ServerPlaybackState(["foo"], [], False, False, None, False, None, False)
r = tutils.tflow(resp=True) r = tutils.tflow(resp=True)
@ -197,12 +201,12 @@ class TestServerPlaybackState:
r2 = tutils.tflow(resp=True) r2 = tutils.tflow(resp=True)
r2.request.headers["Content-Type"] = ["application/x-www-form-urlencoded"] r2.request.headers["Content-Type"] = ["application/x-www-form-urlencoded"]
r2.request.content = "paramx=x&param1=1" r2.request.content = "paramx=x&param1=1"
# same parameters # same parameters
assert s._hash(r) == s._hash(r2) assert s._hash(r) == s._hash(r2)
# ignored parameters != # ignored parameters !=
r2.request.content = "paramx=x&param1=2" r2.request.content = "paramx=x&param1=2"
assert s._hash(r) == s._hash(r2) assert s._hash(r) == s._hash(r2)
# missing parameter # missing parameter
r2.request.content="paramx=x" r2.request.content="paramx=x"
assert s._hash(r) == s._hash(r2) assert s._hash(r) == s._hash(r2)
# ignorable parameter added # ignorable parameter added
@ -223,7 +227,7 @@ class TestServerPlaybackState:
r2 = tutils.tflow(resp=True) r2 = tutils.tflow(resp=True)
r2.request.headers["Content-Type"] = ["application/json"] r2.request.headers["Content-Type"] = ["application/json"]
r2.request.content = '{"param1":"1"}' r2.request.content = '{"param1":"1"}'
# same content # same content
assert s._hash(r) == s._hash(r2) assert s._hash(r) == s._hash(r2)
# distint content (note only x-www-form-urlencoded payload is analysed) # distint content (note only x-www-form-urlencoded payload is analysed)
r2.request.content = '{"param1":"2"}' r2.request.content = '{"param1":"2"}'
@ -238,7 +242,7 @@ class TestServerPlaybackState:
r2 = tutils.tflow(resp=True) r2 = tutils.tflow(resp=True)
r2.request.headers["Content-Type"] = ["application/x-www-form-urlencoded"] r2.request.headers["Content-Type"] = ["application/x-www-form-urlencoded"]
r2.request.content = "paramx=x" r2.request.content = "paramx=x"
# same parameters # same parameters
assert s._hash(r) == s._hash(r2) assert s._hash(r) == s._hash(r2)
def test_ignore_content(self): def test_ignore_content(self):