mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-26 18:18:25 +00:00
Split language test suite: generators
Also remove some unused code
This commit is contained in:
parent
9109b3cc8c
commit
5b48c69a6a
@ -733,19 +733,3 @@ class _Message(object):
|
||||
|
||||
|
||||
Sep = pp.Optional(pp.Literal(":")).suppress()
|
||||
|
||||
|
||||
def read_file(settings, s):
|
||||
uf = settings.get("unconstrained_file_access")
|
||||
sd = settings.get("staticdir")
|
||||
if not sd:
|
||||
raise exceptions.FileAccessDenied("File access disabled.")
|
||||
sd = os.path.normpath(os.path.abspath(sd))
|
||||
s = s[1:]
|
||||
s = os.path.expanduser(s)
|
||||
s = os.path.normpath(os.path.abspath(os.path.join(sd, s)))
|
||||
if not uf and not s.startswith(sd):
|
||||
raise exceptions.FileAccessDenied("File access outside of configured directory")
|
||||
if not os.path.isfile(s):
|
||||
raise exceptions.FileAccessDenied("File not readable")
|
||||
return file(s, "rb").read()
|
||||
|
@ -347,7 +347,8 @@ class Pathoc(tcp.TCPClient):
|
||||
"""
|
||||
Performs a single request.
|
||||
|
||||
r: A language.http.Request object, or a string representing one request.
|
||||
r: A language.http.Request object, or a string representing one
|
||||
request.
|
||||
|
||||
Returns Response if we have a non-ignored response.
|
||||
|
||||
@ -386,7 +387,8 @@ class Pathoc(tcp.TCPClient):
|
||||
"""
|
||||
Performs a single request.
|
||||
|
||||
r: A language.http.Request object, or a string representing one request.
|
||||
r: A language.http.Request object, or a string representing one
|
||||
request.
|
||||
|
||||
Returns Response if we have a non-ignored response.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import os
|
||||
import cStringIO
|
||||
from libpathod import language
|
||||
from libpathod.language import generators, base, http, websockets, writer, exceptions
|
||||
from libpathod.language import base, http, websockets, writer, exceptions
|
||||
import tutils
|
||||
|
||||
language.TESTING = True
|
||||
@ -163,35 +163,6 @@ class TestMisc:
|
||||
g = v.get_generator({})
|
||||
assert g[:] == "val"
|
||||
|
||||
def test_randomgenerator(self):
|
||||
g = generators.RandomGenerator("bytes", 100)
|
||||
assert repr(g)
|
||||
assert len(g[:10]) == 10
|
||||
assert len(g[1:10]) == 9
|
||||
assert len(g[:1000]) == 100
|
||||
assert len(g[1000:1001]) == 0
|
||||
assert g[0]
|
||||
|
||||
def test_literalgenerator(self):
|
||||
g = generators.LiteralGenerator("one")
|
||||
assert repr(g)
|
||||
assert g[:] == "one"
|
||||
assert g[1] == "n"
|
||||
|
||||
def test_filegenerator(self):
|
||||
with tutils.tmpdir() as t:
|
||||
path = os.path.join(t, "foo")
|
||||
f = open(path, "wb")
|
||||
f.write("x"*10000)
|
||||
f.close()
|
||||
g = generators.FileGenerator(path)
|
||||
assert len(g) == 10000
|
||||
assert g[0] == "x"
|
||||
assert g[-1] == "x"
|
||||
assert g[0:5] == "xxxxx"
|
||||
assert repr(g)
|
||||
del g # remove all references to FileGenerator instance to close the file handle.
|
||||
|
||||
def test_value(self):
|
||||
assert base.Value.parseString("'val'")[0].val == "val"
|
||||
assert base.Value.parseString('"val"')[0].val == "val"
|
||||
@ -848,31 +819,3 @@ class TestResponse:
|
||||
tutils.raises("no websocket key", r.resolve, language.Settings())
|
||||
res = r.resolve(language.Settings(websocket_key="foo"))
|
||||
assert res.code.string() == "101"
|
||||
|
||||
|
||||
def test_read_file():
|
||||
tutils.raises(exceptions.FileAccessDenied, base.read_file, {}, "=/foo")
|
||||
p = tutils.test_data.path("data")
|
||||
d = dict(staticdir=p)
|
||||
assert base.read_file(d, "+./file").strip() == "testfile"
|
||||
assert base.read_file(d, "+file").strip() == "testfile"
|
||||
tutils.raises(
|
||||
exceptions.FileAccessDenied,
|
||||
base.read_file,
|
||||
d,
|
||||
"+./nonexistent"
|
||||
)
|
||||
tutils.raises(
|
||||
exceptions.FileAccessDenied,
|
||||
base.read_file,
|
||||
d,
|
||||
"+/nonexistent"
|
||||
)
|
||||
tutils.raises(
|
||||
exceptions.FileAccessDenied,
|
||||
base.read_file,
|
||||
d,
|
||||
"+../test_language.py"
|
||||
)
|
||||
d["unconstrained_file_access"] = True
|
||||
assert base.read_file(d, "+../test_language.py")
|
||||
|
38
test/test_language_generators.py
Normal file
38
test/test_language_generators.py
Normal file
@ -0,0 +1,38 @@
|
||||
import os
|
||||
|
||||
from libpathod.language import generators
|
||||
import tutils
|
||||
|
||||
|
||||
def test_randomgenerator():
|
||||
g = generators.RandomGenerator("bytes", 100)
|
||||
assert repr(g)
|
||||
assert len(g[:10]) == 10
|
||||
assert len(g[1:10]) == 9
|
||||
assert len(g[:1000]) == 100
|
||||
assert len(g[1000:1001]) == 0
|
||||
assert g[0]
|
||||
|
||||
|
||||
def test_literalgenerator():
|
||||
g = generators.LiteralGenerator("one")
|
||||
assert repr(g)
|
||||
assert g[:] == "one"
|
||||
assert g[1] == "n"
|
||||
|
||||
|
||||
def test_filegenerator():
|
||||
with tutils.tmpdir() as t:
|
||||
path = os.path.join(t, "foo")
|
||||
f = open(path, "wb")
|
||||
f.write("x" * 10000)
|
||||
f.close()
|
||||
g = generators.FileGenerator(path)
|
||||
assert len(g) == 10000
|
||||
assert g[0] == "x"
|
||||
assert g[-1] == "x"
|
||||
assert g[0:5] == "xxxxx"
|
||||
assert repr(g)
|
||||
# remove all references to FileGenerator instance to close the file
|
||||
# handle.
|
||||
del g
|
Loading…
Reference in New Issue
Block a user