add onboarding test to local
This commit is contained in:
parent
01243ce96c
commit
13e7cde723
@ -3,7 +3,8 @@ import { waitForService, baseUrl, doorName, buzzerNumber, key, buzzerUrl } from
|
|||||||
import { DoorStatus } from "../src/types/DoorStatus";
|
import { DoorStatus } from "../src/types/DoorStatus";
|
||||||
import { StatusResponse } from "../src/functions/api/door/status";
|
import { StatusResponse } from "../src/functions/api/door/status";
|
||||||
import { sleep } from "bun";
|
import { sleep } from "bun";
|
||||||
import { InfoResponseClient } from "../src/functions/api/door/info";
|
import { ONBOARDING_DOOR_NAME, ONBOARDING_DOOR_PIN } from "../src/schema/DoorConfig";
|
||||||
|
import { LogCallResponse } from "../src/functions/api/door/logCall";
|
||||||
|
|
||||||
// these tests should only run locally
|
// these tests should only run locally
|
||||||
if (process.env.STAGE === 'staging') {
|
if (process.env.STAGE === 'staging') {
|
||||||
@ -53,7 +54,7 @@ describe("unlock path works", () => {
|
|||||||
// unlock door with wrong code should be 401
|
// unlock door with wrong code should be 401
|
||||||
const badAuthResp = await fetch(baseUrl + `/api/door/auth?door=${doorName}&key=thisisthewrongkey`);
|
const badAuthResp = await fetch(baseUrl + `/api/door/auth?door=${doorName}&key=thisisthewrongkey`);
|
||||||
expect(badAuthResp.status).toBe(401);
|
expect(badAuthResp.status).toBe(401);
|
||||||
|
|
||||||
// unlock door with correct code should be 200
|
// unlock door with correct code should be 200
|
||||||
const authResp = await fetch(baseUrl + `/api/door/auth?door=${doorName}&key=${key}`);
|
const authResp = await fetch(baseUrl + `/api/door/auth?door=${doorName}&key=${key}`);
|
||||||
expect(authResp.status).toBe(200);
|
expect(authResp.status).toBe(200);
|
||||||
@ -73,15 +74,56 @@ describe("unlock path works", () => {
|
|||||||
test("auth works for timeout", async () => {
|
test("auth works for timeout", async () => {
|
||||||
// run status first, to make sure we are closed
|
// run status first, to make sure we are closed
|
||||||
const statusReset = await fetch(baseUrl + `/api/door/status?door=${doorName}`).then(res => res.json()) as StatusResponse;
|
const statusReset = await fetch(baseUrl + `/api/door/status?door=${doorName}`).then(res => res.json()) as StatusResponse;
|
||||||
|
|
||||||
// run auth with timeout specified
|
// run auth with timeout specified
|
||||||
const authResp = await fetch(baseUrl + `/api/door/auth?door=${doorName}&key=${key}&timeout=1`);
|
const authResp = await fetch(baseUrl + `/api/door/auth?door=${doorName}&key=${key}&timeout=1`);
|
||||||
|
|
||||||
// sleep 1s
|
// sleep 1s
|
||||||
await sleep(1_000);
|
await sleep(1_000);
|
||||||
|
|
||||||
// we should be closed, because we passed the timeout
|
// we should be closed, because we passed the timeout
|
||||||
const infoClosed = await fetch(baseUrl + `/api/door/info?door=${doorName}`).then(res => res.json()) as any;
|
const infoClosed = await fetch(baseUrl + `/api/door/info?door=${doorName}`).then(res => res.json()) as any;
|
||||||
expect(infoClosed.status).toBe(DoorStatus.CLOSED);
|
expect(infoClosed.status).toBe(DoorStatus.CLOSED);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("call log path works", () => {
|
||||||
|
test("call log returns nothing when onboarding is not enabled", async () => {
|
||||||
|
// run status first, to make sure we are closed
|
||||||
|
const statusReset = await fetch(baseUrl + `/api/door/status?door=${ONBOARDING_DOOR_NAME}`).then(res => res.json()) as StatusResponse;
|
||||||
|
|
||||||
|
// try to log call
|
||||||
|
const logCallRes = await fetch(baseUrl + `/api/door/callLog?caller=${buzzerNumber}`);
|
||||||
|
expect(logCallRes.status).toBe(400);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("call log returns 4 digit OTP when onboarding enabled", async () => {
|
||||||
|
// run status first, to make sure we are closed
|
||||||
|
const statusReset = await fetch(baseUrl + `/api/door/status?door=${ONBOARDING_DOOR_NAME}`).then(res => res.json()) as StatusResponse;
|
||||||
|
|
||||||
|
// run auth with timeout specified
|
||||||
|
const authResp = await fetch(baseUrl + `/api/door/auth?door=${ONBOARDING_DOOR_NAME}&key=${ONBOARDING_DOOR_PIN}`);
|
||||||
|
|
||||||
|
// try to log call
|
||||||
|
const logCallRes = await fetch(baseUrl + `/api/door/callLog?caller=${buzzerNumber}`);
|
||||||
|
expect(logCallRes.status).toBe(200);
|
||||||
|
|
||||||
|
const otp = (await logCallRes.json() as LogCallResponse).otp
|
||||||
|
expect(otp.length).toBe(4)
|
||||||
|
});
|
||||||
|
|
||||||
|
test("call log after door closed, should not return OTP", async () => {
|
||||||
|
// run status first, to make sure we are closed
|
||||||
|
const statusReset = await fetch(baseUrl + `/api/door/status?door=${ONBOARDING_DOOR_NAME}`).then(res => res.json()) as StatusResponse;
|
||||||
|
|
||||||
|
// run auth with timeout specified
|
||||||
|
const authResp = await fetch(baseUrl + `/api/door/auth?door=${ONBOARDING_DOOR_NAME}&key=${ONBOARDING_DOOR_PIN}&timeout=1`);
|
||||||
|
|
||||||
|
// sleep 1s
|
||||||
|
await sleep(1_000);
|
||||||
|
|
||||||
|
// try to log call
|
||||||
|
const logCallRes = await fetch(baseUrl + `/api/door/callLog?caller=${buzzerNumber}`);
|
||||||
|
expect(logCallRes.status).toBe(400);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user