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)
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)
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)
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)
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)