Ejemplo n.º 1
0
    def test_validate_entrypoint(self):
        r = validate_request_type({"entrypoint": "abc"}, JobSubmitRequest)
        assert r.entrypoint == "abc"

        with pytest.raises(TypeError, match="required positional argument"):
            validate_request_type({}, JobSubmitRequest)

        with pytest.raises(TypeError, match="must be a string"):
            validate_request_type({"entrypoint": 123}, JobSubmitRequest)
Ejemplo n.º 2
0
    def test_validate_job_id(self):
        r = validate_request_type({"entrypoint": "abc"}, JobSubmitRequest)
        assert r.entrypoint == "abc"
        assert r.job_id is None

        r = validate_request_type({
            "entrypoint": "abc",
            "job_id": "123"
        }, JobSubmitRequest)
        assert r.entrypoint == "abc"
        assert r.job_id == "123"

        with pytest.raises(TypeError, match="must be a string"):
            validate_request_type({
                "entrypoint": 123,
                "job_id": 1
            }, JobSubmitRequest)
Ejemplo n.º 3
0
 async def _parse_and_validate_request(self, req: Request,
                                       request_type: dataclass) -> Any:
     """Parse request and cast to request type. If parsing failed, return a
     Response object with status 400 and stacktrace instead.
     """
     try:
         return validate_request_type(await req.json(), request_type)
     except Exception as e:
         logger.info(f"Got invalid request type: {e}")
         return Response(text=traceback.format_exc(),
                         status=aiohttp.web.HTTPBadRequest.status_code)
Ejemplo n.º 4
0
    def test_validate_runtime_env(self):
        r = validate_request_type({"entrypoint": "abc"}, JobSubmitRequest)
        assert r.entrypoint == "abc"
        assert r.runtime_env is None

        r = validate_request_type(
            {
                "entrypoint": "abc",
                "runtime_env": {
                    "hi": "hi2"
                }
            }, JobSubmitRequest)
        assert r.entrypoint == "abc"
        assert r.runtime_env == {"hi": "hi2"}

        with pytest.raises(TypeError, match="must be a dict"):
            validate_request_type({
                "entrypoint": "abc",
                "runtime_env": 123
            }, JobSubmitRequest)

        with pytest.raises(TypeError, match="keys must be strings"):
            validate_request_type(
                {
                    "entrypoint": "abc",
                    "runtime_env": {
                        1: "hi"
                    }
                }, JobSubmitRequest)
Ejemplo n.º 5
0
    def test_validate_metadata(self):
        r = validate_request_type({"entrypoint": "abc"}, JobSubmitRequest)
        assert r.entrypoint == "abc"
        assert r.metadata is None

        r = validate_request_type(
            {
                "entrypoint": "abc",
                "metadata": {
                    "hi": "hi2"
                }
            }, JobSubmitRequest)
        assert r.entrypoint == "abc"
        assert r.metadata == {"hi": "hi2"}

        with pytest.raises(TypeError, match="must be a dict"):
            validate_request_type({
                "entrypoint": "abc",
                "metadata": 123
            }, JobSubmitRequest)

        with pytest.raises(TypeError, match="keys must be strings"):
            validate_request_type({
                "entrypoint": "abc",
                "metadata": {
                    1: "hi"
                }
            }, JobSubmitRequest)

        with pytest.raises(TypeError, match="values must be strings"):
            validate_request_type({
                "entrypoint": "abc",
                "metadata": {
                    "hi": 1
                }
            }, JobSubmitRequest)