|
import { HttpResponse, http, RequestHandler } from "msw"; |
|
import { |
|
HOST_URL, |
|
API_INFO_URL, |
|
CONFIG_URL, |
|
RUNTIME_URL, |
|
SLEEPTIME_URL, |
|
UPLOAD_URL, |
|
BROKEN_CONNECTION_MSG, |
|
LOGIN_URL |
|
} from "../constants"; |
|
import { |
|
response_api_info, |
|
config_response, |
|
whoami_response, |
|
duplicate_response, |
|
hardware_sleeptime_response, |
|
discussions_response, |
|
runtime_response |
|
} from "./test_data"; |
|
|
|
const root_url = "https://huggingface.co"; |
|
|
|
export const direct_space_url = "https://hmb-hello-world.hf.space"; |
|
const private_space_url = "https://hmb-secret-world.hf.space"; |
|
const private_auth_space_url = "https://hmb-private-auth-space.hf.space"; |
|
|
|
const server_error_space_url = "https://hmb-server-error.hf.space"; |
|
const upload_server_test_space_url = "https://hmb-server-test.hf.space"; |
|
const auth_app_space_url = "https://hmb-auth-space.hf.space"; |
|
const unauth_app_space_url = "https://hmb-unauth-space.hf.space"; |
|
const invalid_auth_space_url = "https://hmb-invalid-auth-space.hf.space"; |
|
|
|
const server_error_reference = "hmb/server_error"; |
|
const app_reference = "hmb/hello_world"; |
|
const broken_app_reference = "hmb/bye_world"; |
|
const duplicate_app_reference = "gradio/hello_world"; |
|
const private_app_reference = "hmb/secret_world"; |
|
const server_test_app_reference = "hmb/server_test"; |
|
const auth_app_reference = "hmb/auth_space"; |
|
const unauth_app_reference = "hmb/unauth_space"; |
|
const invalid_auth_app_reference = "hmb/invalid_auth_space"; |
|
const private_auth_app_reference = "hmb/private_auth_space"; |
|
|
|
export const handlers: RequestHandler[] = [ |
|
|
|
http.get(`${root_url}/api/spaces/${app_reference}/${HOST_URL}`, () => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
subdomain: "hmb-hello-world", |
|
host: "https://hmb-hello-world.hf.space" |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
}), |
|
http.get(`${root_url}/api/spaces/${broken_app_reference}/${HOST_URL}`, () => { |
|
return new HttpResponse(null, { |
|
status: 404, |
|
headers: { |
|
"Content-Type": "application/json", |
|
hf_token: "hf_123" |
|
} |
|
}); |
|
}), |
|
http.get( |
|
`${root_url}/api/spaces/${private_auth_app_reference}/${HOST_URL}`, |
|
() => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
subdomain: "hmb-private-auth-space", |
|
host: "https://hmb-private-auth-space.hf.space" |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
} |
|
), |
|
http.get( |
|
`${root_url}/api/spaces/${private_app_reference}/${HOST_URL}`, |
|
({ request }) => { |
|
const token = request.headers.get("authorization")?.substring(7); |
|
|
|
if (!token || token !== "hf_123") { |
|
return new HttpResponse(null, { |
|
status: 401, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
} |
|
|
|
return new HttpResponse( |
|
JSON.stringify({ |
|
subdomain: private_app_reference, |
|
host: private_space_url |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
} |
|
), |
|
http.get( |
|
`${root_url}/api/spaces/${server_error_reference}/${HOST_URL}`, |
|
() => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
subdomain: "hmb-server-test", |
|
host: "https://hmb-server-test.hf.space" |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
} |
|
), |
|
http.get( |
|
`${root_url}/api/spaces/${server_test_app_reference}/${HOST_URL}`, |
|
() => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
subdomain: "hmb-server-test", |
|
host: "https://hmb-server-test.hf.space" |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
} |
|
), |
|
http.get(`${root_url}/api/spaces/${auth_app_reference}/${HOST_URL}`, () => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
subdomain: "hmb-auth-space", |
|
host: "https://hmb-auth-space.hf.space" |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
}), |
|
http.get( |
|
`${root_url}/api/spaces/${invalid_auth_app_reference}/${HOST_URL}`, |
|
() => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
subdomain: "hmb-invalid-auth-space", |
|
host: "https://hmb-invalid-auth-space.hf.space" |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
} |
|
), |
|
http.get( |
|
`${root_url}/api/spaces/${duplicate_app_reference}/${HOST_URL}`, |
|
() => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
subdomain: "gradio-hello-world", |
|
host: "https://gradio-hello-world.hf.space" |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
} |
|
), |
|
http.get(`${root_url}/api/spaces/${unauth_app_reference}/${HOST_URL}`, () => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
subdomain: "hmb-unath-space", |
|
host: "https://hmb-unauth-space.hf.space" |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
}), |
|
|
|
http.get(`${direct_space_url}/${API_INFO_URL}`, () => { |
|
return new HttpResponse(JSON.stringify(response_api_info), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.get(`${upload_server_test_space_url}/${API_INFO_URL}`, () => { |
|
return new HttpResponse(JSON.stringify(response_api_info), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.get(`${private_space_url}/${API_INFO_URL}`, () => { |
|
return new HttpResponse(JSON.stringify(response_api_info), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.get(`${server_error_space_url}/${API_INFO_URL}`, () => { |
|
return new HttpResponse(JSON.stringify(response_api_info), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.get(`${auth_app_space_url}/${API_INFO_URL}`, async () => { |
|
return new HttpResponse(JSON.stringify(response_api_info), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.get(`${private_auth_space_url}/${API_INFO_URL}`, async () => { |
|
return new HttpResponse(JSON.stringify(response_api_info), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
|
|
http.get(`${direct_space_url}/${CONFIG_URL}`, () => { |
|
return new HttpResponse(JSON.stringify(config_response), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.get(`${private_space_url}/${CONFIG_URL}`, () => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
...config_response, |
|
root: "https://hmb-secret-world.hf.space" |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
}), |
|
http.get(`${upload_server_test_space_url}/${CONFIG_URL}`, () => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
...config_response, |
|
root: "https://hmb-server-test.hf.space" |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
}), |
|
http.get(`${private_auth_space_url}/${CONFIG_URL}`, () => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
...config_response, |
|
root: "https://hmb-private-auth-space.hf.space" |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
}), |
|
http.get(`${direct_space_url}/${CONFIG_URL}`, () => { |
|
return new HttpResponse(JSON.stringify(config_response), { |
|
status: 500, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.get(`${server_error_space_url}/${CONFIG_URL}`, () => { |
|
return new HttpResponse(JSON.stringify(config_response), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.get(`${invalid_auth_space_url}/${CONFIG_URL}`, () => { |
|
return new HttpResponse(JSON.stringify({ detail: "Unauthorized" }), { |
|
status: 401, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.get(`${auth_app_space_url}/${CONFIG_URL}`, ({ request }) => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
...config_response, |
|
root: "https://hmb-auth-space.hf.space", |
|
space_id: "hmb/auth_space" |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
}), |
|
http.get(`${unauth_app_space_url}/${CONFIG_URL}`, () => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
detail: "Unauthorized" |
|
}), |
|
{ |
|
status: 401, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
}), |
|
|
|
http.get(`${root_url}/api/whoami-v2`, () => { |
|
return new HttpResponse(JSON.stringify(whoami_response), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json", |
|
"hf-token": "hf_123" |
|
} |
|
}); |
|
}), |
|
|
|
http.post( |
|
`${root_url}/api/spaces/${duplicate_app_reference}/duplicate`, |
|
({ request }) => { |
|
if (request.headers.get("authorization")?.substring(7) !== "hf_123") { |
|
throw new HttpResponse(null, { |
|
status: 401, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
} |
|
return new HttpResponse(JSON.stringify(duplicate_response), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
} |
|
), |
|
|
|
http.post(`${root_url}/api/spaces/${app_reference}/${SLEEPTIME_URL}`, () => { |
|
return new HttpResponse(JSON.stringify(hardware_sleeptime_response), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.post( |
|
`${root_url}/api/spaces/${server_test_app_reference}/${SLEEPTIME_URL}`, |
|
() => { |
|
throw new HttpResponse(null, { |
|
status: 500, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
} |
|
), |
|
|
|
http.get( |
|
`${root_url}/api/spaces/${broken_app_reference}/${RUNTIME_URL}`, |
|
() => { |
|
return new HttpResponse(null, { |
|
status: 404, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
} |
|
), |
|
http.get(`${root_url}/api/spaces/${app_reference}/${RUNTIME_URL}`, () => { |
|
return new HttpResponse(JSON.stringify(hardware_sleeptime_response), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
|
|
http.get(`${direct_space_url}/queue/data`, () => { |
|
return new HttpResponse(JSON.stringify({ event_id: "123" }), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.post(`${direct_space_url}/queue/join`, () => { |
|
return new HttpResponse(JSON.stringify({ event_id: "123" }), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
|
|
http.post(`${direct_space_url}/${UPLOAD_URL}`, () => { |
|
return new HttpResponse(JSON.stringify(["lion.jpg"]), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.post(`${upload_server_test_space_url}/${UPLOAD_URL}`, () => { |
|
throw new HttpResponse(JSON.parse("Internal Server Error"), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
|
|
http.head(`${root_url}/api/spaces/${app_reference}/discussions`, () => { |
|
return new HttpResponse(JSON.stringify(discussions_response), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.head( |
|
`${root_url}/api/spaces/${broken_app_reference}/discussions`, |
|
() => { |
|
throw new HttpResponse( |
|
JSON.parse("Discussions are disabled for this repo"), |
|
{ |
|
status: 403, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
} |
|
), |
|
|
|
http.get(`${root_url}/api/spaces/${app_reference}`, () => { |
|
return new HttpResponse( |
|
JSON.stringify({ id: app_reference, runtime: runtime_response }), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
}), |
|
http.get(`${root_url}/api/spaces/hmb/paused_space`, () => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
id: app_reference, |
|
runtime: { ...runtime_response, stage: "PAUSED" } |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
}), |
|
http.get(`${root_url}/api/spaces/hmb/building_space`, () => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
id: app_reference, |
|
runtime: { ...runtime_response, stage: "BUILDING" } |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
}), |
|
http.get(`${root_url}/api/spaces/hmb/stopped_space`, () => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
id: app_reference, |
|
runtime: { ...runtime_response, stage: "STOPPED" } |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
}), |
|
http.get(`${root_url}/api/spaces/hmb/failed_space`, () => { |
|
throw new HttpResponse(null, { |
|
status: 500, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.get(`${root_url}/api/spaces/${unauth_app_reference}`, () => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
id: unauth_app_reference, |
|
runtime: { ...runtime_response } |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
}), |
|
|
|
http.get(`${root_url}/api/spaces/${app_reference}/jwt`, () => { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
token: "jwt_123" |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
} |
|
); |
|
}), |
|
http.get(`${root_url}/api/spaces/${broken_app_reference}/jwt`, () => { |
|
return new HttpResponse(null, { |
|
status: 500, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
|
|
http.post(`${direct_space_url}`, () => { |
|
return new HttpResponse(JSON.stringify({}), { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.post(`${private_space_url}`, () => { |
|
return new HttpResponse(JSON.stringify(BROKEN_CONNECTION_MSG), { |
|
status: 500, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
|
|
http.get(`*/heartbeat/*`, () => { |
|
return new HttpResponse(null, { |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
|
|
http.post(`${auth_app_space_url}/${LOGIN_URL}`, async ({ request }) => { |
|
let username; |
|
let password; |
|
|
|
await request.formData().then((data) => { |
|
username = data.get("username"); |
|
password = data.get("password"); |
|
}); |
|
|
|
if (username === "admin" && password === "pass1234") { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
success: true |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json", |
|
"Set-Cookie": |
|
"access-token-123=abc; HttpOnly; Path=/; SameSite=none; Secure", |
|
|
|
"Set-Cookie": |
|
"access-token-unsecure-123=abc; HttpOnly; Path=/; SameSite=none; Secure" |
|
} |
|
} |
|
); |
|
} |
|
|
|
return new HttpResponse(null, { |
|
status: 401, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.post(`${invalid_auth_space_url}/${LOGIN_URL}`, async () => { |
|
return new HttpResponse(null, { |
|
status: 401, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}), |
|
http.post(`${private_auth_space_url}/${LOGIN_URL}`, async ({ request }) => { |
|
let username; |
|
let password; |
|
|
|
await request.formData().then((data) => { |
|
username = data.get("username"); |
|
password = data.get("password"); |
|
}); |
|
|
|
if (username === "admin" && password === "pass1234") { |
|
return new HttpResponse( |
|
JSON.stringify({ |
|
success: true |
|
}), |
|
{ |
|
status: 200, |
|
headers: { |
|
"Content-Type": "application/json", |
|
"Set-Cookie": |
|
"access-token-123=abc; HttpOnly; Path=/; SameSite=none; Secure", |
|
|
|
"Set-Cookie": |
|
"access-token-unsecure-123=abc; HttpOnly; Path=/; SameSite=none; Secure" |
|
} |
|
} |
|
); |
|
} |
|
|
|
return new HttpResponse(null, { |
|
status: 401, |
|
headers: { |
|
"Content-Type": "application/json" |
|
} |
|
}); |
|
}) |
|
]; |
|
|