import { describe, expect, it } from "vite-plus/test";import * as OpenApi from "effect/unstable/httpapi/OpenApi";import * as Schema from "effect/Schema"; import { RelayApi, RelayDeviceRegistrationRequest } from "./relay.ts"; const decodeDevice = Schema.decodeUnknownExit(RelayDeviceRegistrationRequest);const device = { deviceId: "device", label: "Phone", pushToken: "token", preferences: { notificationsEnabled: true, liveActivitiesEnabled: true, notifyOnApproval: true, notifyOnInput: true, notifyOnCompletion: true, notifyOnFailure: true, },}; describe("mobile device platforms", () => { it.each([ [23, "Failure"], [24, "Success"], [37, "Success"], ])("enforces the Android minimum without an upper bound (API %i)", (androidApiLevel, result) => { expect(decodeDevice({ ...device, platform: "android", androidApiLevel })._tag).toBe(result); }); it("accepts Android tokens without Apple routing and preserves older iOS registrations", () => { expect(decodeDevice({ ...device, platform: "android", androidApiLevel: 36 })._tag).toBe( "Success", ); expect(decodeDevice({ ...device, platform: "ios", iosMajorVersion: 18 })._tag).toBe("Success"); }); it("rejects missing platform versions and Apple activity tokens on Android", () => { expect(decodeDevice({ ...device, platform: "ios" })._tag).toBe("Failure"); expect(decodeDevice({ ...device, platform: "android" })._tag).toBe("Failure"); expect( decodeDevice({ ...device, platform: "android", androidApiLevel: 36, pushToStartToken: "apple-token", })._tag, ).toBe("Failure"); });}); describe("RelayApi security", () => { it("describes DPoP access tokens using the HTTP DPoP authorization scheme", () => { const document = OpenApi.fromApi(RelayApi); expect(document.components.securitySchemes?.relayDpop).toEqual({ type: "http", scheme: "DPoP", description: "DPoP-bound access token. Requests must also include the DPoP proof JWT header.", }); });});
import { describe, expect, it } from "vite-plus/test";
import * as OpenApi from "effect/unstable/httpapi/OpenApi";
import * as Schema from "effect/Schema";
import { RelayApi, RelayDeviceRegistrationRequest } from "./relay.ts";
const decodeDevice = Schema.decodeUnknownExit(RelayDeviceRegistrationRequest);
const device = {
deviceId: "device",
label: "Phone",
pushToken: "token",
preferences: {
notificationsEnabled: true,
liveActivitiesEnabled: true,
notifyOnApproval: true,
notifyOnInput: true,
notifyOnCompletion: true,
notifyOnFailure: true,
},
};
describe("mobile device platforms", () => {
it.each([
[23, "Failure"],
[24, "Success"],
[37, "Success"],
])("enforces the Android minimum without an upper bound (API %i)", (androidApiLevel, result) => {
expect(decodeDevice({ ...device, platform: "android", androidApiLevel })._tag).toBe(result);
});
it("accepts Android tokens without Apple routing and preserves older iOS registrations", () => {
expect(decodeDevice({ ...device, platform: "android", androidApiLevel: 36 })._tag).toBe(
"Success",
);
expect(decodeDevice({ ...device, platform: "ios", iosMajorVersion: 18 })._tag).toBe("Success");
});
it("rejects missing platform versions and Apple activity tokens on Android", () => {
expect(decodeDevice({ ...device, platform: "ios" })._tag).toBe("Failure");
expect(decodeDevice({ ...device, platform: "android" })._tag).toBe("Failure");
expect(
decodeDevice({
...device,
platform: "android",
androidApiLevel: 36,
pushToStartToken: "apple-token",
})._tag,
).toBe("Failure");
});
});
describe("RelayApi security", () => {
it("describes DPoP access tokens using the HTTP DPoP authorization scheme", () => {
const document = OpenApi.fromApi(RelayApi);
expect(document.components.securitySchemes?.relayDpop).toEqual({
type: "http",
scheme: "DPoP",
description: "DPoP-bound access token. Requests must also include the DPoP proof JWT header.",
});
});
});