Exemple #1
0
    def _serialize_external_object(self, o):

        yield "System", "Python"

        if callable(o):
            yield "Type", "PythonFunction"
            try:
                # force tuple to avoid calling this method again on `map`.
                yield "Arguments", tuple(map(force_text, first(inspect.getfullargspec(o))))
            except TypeError:
                # this function can fail with TypeError unsupported callable
                pass
        else:
            yield "Type", "PythonObject"

        if hasattr(o, "__name__"):
            yield "Command", force_text(o.__name__)
        else:
            yield "Command", force_text(o.__class__.__name__)

        is_module = inspect.ismodule(o)

        yield "IsModule", is_module

        if not is_module:
            module = inspect.getmodule(o)
            if module:
                yield "Module", force_text(module.__name__)

        yield "IsClass", inspect.isclass(o),
        yield "IsFunction", inspect.isfunction(o),
        yield "IsMethod", inspect.ismethod(o),
        yield "IsCallable", callable(o),
Exemple #2
0
    def test_django_app(self):

        resp = self.client.get("/")

        self.assertEqual(resp.status_code, 200)
        self.assertEqual(resp.content, b"hello from django")

        resp = self.client.get("/form")

        self.assertEqual(resp.status_code, 200)
        self.assertEqual(first(resp["content-type"].split(";")), "text/html")

        resp = self.client.get("/api")

        self.assertEqual(resp.status_code, 400)
        self.assertEqual(resp["content-type"], "application/json")

        resp = self.client.get("/api?x=2")

        self.assertEqual(resp.status_code, 200)
        self.assertEqual(resp["content-type"], "application/json")
        self.assertEqual(json.loads(resp.content), {"x": "2"})

        resp = self.client.post("/api", {"x": SimpleUploadedFile("foo.txt", b"foobar")})

        self.assertEqual(resp.status_code, 200)
        self.assertEqual(resp["content-type"], "application/json")
        self.assertEqual(json.loads(resp.content), {"x": "foobar"})
Exemple #3
0
    def _serialize_external_object(self, o):

        yield "System", "Python"
        yield "Type", "PythonFunction"

        if hasattr(o, '__name__'):
            yield "Name", force_text(o.__name__)
        else:
            yield "Name", force_text(o.__class__.__name__)

        is_module = inspect.ismodule(o)

        yield "IsModule", is_module

        if not is_module:
            module = inspect.getmodule(o)
            if module:
                yield "Module", force_text(module.__name__)

        yield "IsClass", inspect.isclass(o),
        yield "IsFunction", inspect.isfunction(o),
        yield "IsMethod", inspect.ismethod(o),
        yield "IsCallable", callable(o),

        if callable(o):
            try:
                yield "Arguments", map(force_text,
                                       first(inspect.getargspec(o)))
            except TypeError:
                #this function can fail with TypeError unsupported callable
                pass
Exemple #4
0
    def formatted_time(self, function, *args, **opts):

        time = sum(
            first(timed(function)(*args, **opts))
            for i in range(self.repetitions))

        return "%.5f" % (time / self.repetitions)
def run_all(args, **opts):
    done = tuple(iterate(*args))
    if done and len(done) > 1:
        return asyncio.ensure_future(asyncio.wait(done), **opts)
    elif done:
        return asyncio.ensure_future(first(done), **opts)
    return done
    def demo_choices(self):

        yield None, "form.wl"

        for path in os.listdir(self.demo_path()):

            if os.path.isdir(path):
                yield path, path

            if is_wl_code(path):
                yield first(os.path.splitext(path)), path
def generate_http_response(session, request, expression):
    wl_req = django_request_meta(request)

    response = process_generate_httpresponse_expression(
        auto_wait(
            session.evaluate(
                make_generate_httpresponse_expression(wl_req, expression))))

    http = HttpResponse(content=response.get("BodyByteArray", b""),
                        status=response.get("StatusCode", 200))

    for rule in response.get("Headers", ()):
        http[first(rule.args)] = last(rule.args)

    return http
    async def test_aiohttp(self):

        for method, path, data in (
            ("GET", "/request/", []),
            ("GET", "/request/bar/bar?a=2", []),
            ("POST", "/request/some/random/path", {
                "a": "2"
            }),
        ):

            parsed = urlparse(path)

            resp = await self.client.request(method, path, data=data or None)

            self.assertEqual(resp.status, 200)
            self.assertEqual(
                await resp.json(),
                [method, "http", "127.0.0.1", parsed.path, parsed.query, data],
            )

        for cached in (True, False):

            root = cached and "/cached" or "/app"

            resp1 = await self.client.request("GET", root + "/random.wl")
            resp2 = await self.client.request("GET", root + "/random.wl")

            self.assertIsInstance(float(await resp1.text()), float)
            (cached and self.assertEqual
             or self.assertNotEqual)(await resp1.text(), await resp2.text())

        for loc, content in (
            ("", '"Hello from / in a folder!"'),
            ("/", '"Hello from / in a folder!"'),
            ("/index.wl", '"Hello from / in a folder!"'),
            ("/foo", '"Hello from foo"'),
            ("/foo/", '"Hello from foo"'),
            ("/foo/index.wl", '"Hello from foo"'),
            ("/foo/bar", '"Hello from foo/bar"'),
            ("/foo/bar", '"Hello from foo/bar"'),
            ("/foo/bar/index.wl", '"Hello from foo/bar"'),
            ("/foo/bar/something.wl", '"Hello from foo/bar/something"'),
        ):
            resp = await self.client.request("GET", root + loc)
            self.assertEqual(resp.status, 200)
            self.assertEqual(await resp.text(), content)

        for loc in ("/some-random-url", "/404", "/some-/nonsense"):
            resp = await self.client.request("GET", root + loc)
            self.assertEqual(resp.status, 404)

        for fmt in ("wxf", "mx", "m", "wl", "json"):

            resp = await self.client.request("GET", root + "some." + fmt)

            self.assertEqual(resp.status, 200)
            self.assertEqual(len(await resp.json()), 4)
            self.assertEqual((await resp.json())[0:3],
                             ["hello", "from", fmt.upper()])
            self.assertIsInstance((await resp.json())[-1], int)

            self.assertEqual(resp.headers["Content-Type"], "application/json")

        resp = await self.client.request("GET", "/")

        self.assertEqual(resp.status, 200)
        self.assertEqual(await resp.text(), "Hello from aiohttp")

        for root in ("", "/app"):

            resp = await self.client.request("GET", root + "/api")

            self.assertEqual(resp.status, 400)
            self.assertEqual((await resp.json())["Success"], False)
            self.assertEqual(resp.headers["Content-Type"], "application/json")

            resp = await self.client.request("GET", root + "/api?x=a")

            self.assertEqual(resp.status, 200)
            self.assertEqual((await resp.json())["x"], "a")
            self.assertEqual(resp.headers["Content-Type"], "application/json")

            resp = await self.client.request("GET", root + "/form")

            self.assertEqual(resp.status, 200)
            self.assertEqual(first(resp.headers["Content-Type"].split(";")),
                             "text/html")

            resp = await self.client.request("POST",
                                             root + "/form",
                                             data={"x": "foobar"})

            self.assertEqual(resp.status, 200)
            self.assertEqual((await resp.json())["x"], "foobar")
            self.assertEqual(resp.headers["Content-Type"], "application/json")

            data = FormData()
            data.add_field("x", b"foobar", filename="somefile.txt")

            resp = await self.client.request("POST", root + "form", data=data)

            self.assertEqual(resp.status, 200)
            self.assertEqual((await resp.json())["x"], "foobar")
            self.assertEqual(resp.headers["Content-Type"], "application/json")
    def formatted_time(self, *args, **opts):

        time = sum(
            first(self.export(*args, **opts)) for i in range(self.repetitions))

        return "%.5f" % (time / self.repetitions)