def test_access_control(self): v = language.Value.parseString("<path")[0] with tutils.tmpdir() as t: p = os.path.join(t, "path") with open(p, "wb") as f: f.write("x" * 10000) assert v.get_generator(language.Settings(staticdir=t)) v = language.Value.parseString("<path2")[0] tutils.raises( language.FileAccessDenied, v.get_generator, language.Settings(staticdir=t) ) tutils.raises( "access disabled", v.get_generator, language.Settings() ) v = language.Value.parseString("</outside")[0] tutils.raises( "outside", v.get_generator, language.Settings(staticdir=t) )
def _test_messages(self, specs, message_klass): for i in specs: wf = parse_request(i) assert isinstance(wf, message_klass) assert wf assert wf.values(language.Settings()) assert wf.resolve(language.Settings()) spec = wf.spec() wf2 = parse_request(spec) assert wf2.spec() == spec
def test_websocket(self): r = parse_request('ws:/path/') res = r.resolve(language.Settings()) assert res.method.string().lower() == "get" assert res.tok(language.Path).value.val == "/path/" assert res.tok(language.Method).value.val.lower() == "get" assert utils.get_header("Upgrade", res.headers).value.val == "websocket" r = parse_request('ws:put:/path/') res = r.resolve(language.Settings()) assert r.method.string().lower() == "put" assert res.tok(language.Path).value.val == "/path/" assert res.tok(language.Method).value.val.lower() == "put" assert utils.get_header("Upgrade", res.headers).value.val == "websocket"
def tval(self, requests, showreq=False, showresp=False, explain=False, showssl=False, hexdump=False, timeout=None, ignorecodes=(), ignoretimeout=None, showsummary=True): s = cStringIO.StringIO() c = pathoc.Pathoc(("127.0.0.1", self.d.port), ssl=self.ssl, showreq=showreq, showresp=showresp, explain=explain, hexdump=hexdump, ignorecodes=ignorecodes, ignoretimeout=ignoretimeout, showsummary=showsummary, fp=s) c.connect(showssl=showssl, fp=s) if timeout: c.settimeout(timeout) for i in requests: r = language.parse_requests(i)[0] if explain: r = r.freeze(language.Settings()) try: c.request(r) except (http.HttpError, tcp.NetLibError), v: pass
def tval(self, requests, showreq=False, showresp=False, explain=False, showssl=False, hexdump=False, timeout=None, ignorecodes=(), ignoretimeout=None, showsummary=True): s = cStringIO.StringIO() c = pathoc.Pathoc(("127.0.0.1", self.d.port), ssl=self.ssl, showreq=showreq, showresp=showresp, explain=explain, hexdump=hexdump, ignorecodes=ignorecodes, ignoretimeout=ignoretimeout, showsummary=showsummary, fp=s) c.connect(showssl=showssl, fp=s) if timeout: c.settimeout(timeout) for i in requests: r = language.parse_pathoc(i).next() if explain: r = r.freeze(language.Settings()) try: c.request(r) except NetlibException: pass return s.getvalue()
def test_caseless_literal(): class CL(base.CaselessLiteral): TOK = "foo" v = CL("foo") assert v.expr() assert v.values(language.Settings())
def test_render(self): s = cStringIO.StringIO() r = parse_request("GET:'/foo'") assert language.serve( r, s, language.Settings(request_host = "foo.com") )
def test_intfield(): class TT(base.IntField): preamble = "t" names = {"one": 1, "two": 2, "three": 3} max = 4 e = TT.expr() v = e.parseString("tone")[0] assert v.value == 1 assert v.spec() == "tone" assert v.values(language.Settings()) v = e.parseString("t1")[0] assert v.value == 1 assert v.spec() == "t1" v = e.parseString("t4")[0] assert v.value == 4 assert v.spec() == "t4" tutils.raises("can't exceed", e.parseString, "t5")
def render(r, settings=language.Settings()): r = r.resolve(settings) s = cStringIO.StringIO() assert language.serve(r, s, settings) return s.getvalue()
def test_websockets(self): r = language.parse_response("ws") tutils.raises("no websocket key", r.resolve, language.Settings()) res = r.resolve(language.Settings(websocket_key="foo")) assert res.code.string() == "101"
def testlen(x): s = cStringIO.StringIO() language.serve(x, s, language.Settings()) assert x.length(language.Settings()) == len(s.getvalue())
def test_values(self): r = parse_request("wf:b'foo'") assert r.values(language.Settings())
def test_websockets(self): r = language.parse_pathod("ws").next() tutils.raises("no websocket key", r.resolve, language.Settings()) res = r.resolve(language.Settings(websocket_key="foo")) assert res.status_code.string() == "101"
def test_path_generator(self): r = parse_request("GET:@100").freeze(language.Settings()) assert len(r.spec()) > 100
def test_freeze(self): r = parse_request("GET:/:b@100").freeze(language.Settings()) assert len(r.spec()) > 100
def test_expr(self): v = language.WS("foo") assert v.expr() assert v.values(language.Settings())
def default_settings(): return language.Settings(request_host="foo.com", protocol=netlib.http.http2.HTTP2Protocol( tcp.TCPClient(('localhost', 1234))))
def test_freeze(self): v = language.ValueGenerate(100, "b", "ascii") f = v.freeze(language.Settings()) assert len(f.val) == 100