Beispiel #1
0
    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)
            )
Beispiel #2
0
    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
Beispiel #3
0
    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"
Beispiel #4
0
 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
Beispiel #5
0
 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()
Beispiel #6
0
def test_caseless_literal():
    class CL(base.CaselessLiteral):
        TOK = "foo"

    v = CL("foo")
    assert v.expr()
    assert v.values(language.Settings())
Beispiel #7
0
 def test_render(self):
     s = cStringIO.StringIO()
     r = parse_request("GET:'/foo'")
     assert language.serve(
         r,
         s,
         language.Settings(request_host = "foo.com")
     )
Beispiel #8
0
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")
Beispiel #9
0
def render(r, settings=language.Settings()):
    r = r.resolve(settings)
    s = cStringIO.StringIO()
    assert language.serve(r, s, settings)
    return s.getvalue()
Beispiel #10
0
 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"
Beispiel #11
0
 def testlen(x):
     s = cStringIO.StringIO()
     language.serve(x, s, language.Settings())
     assert x.length(language.Settings()) == len(s.getvalue())
Beispiel #12
0
 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"
Beispiel #14
0
 def test_path_generator(self):
     r = parse_request("GET:@100").freeze(language.Settings())
     assert len(r.spec()) > 100
Beispiel #15
0
 def test_freeze(self):
     r = parse_request("GET:/:b@100").freeze(language.Settings())
     assert len(r.spec()) > 100
Beispiel #16
0
 def test_expr(self):
     v = language.WS("foo")
     assert v.expr()
     assert v.values(language.Settings())
Beispiel #17
0
def default_settings():
    return language.Settings(request_host="foo.com",
                             protocol=netlib.http.http2.HTTP2Protocol(
                                 tcp.TCPClient(('localhost', 1234))))
Beispiel #18
0
 def test_freeze(self):
     v = language.ValueGenerate(100, "b", "ascii")
     f = v.freeze(language.Settings())
     assert len(f.val) == 100