263 lines
5.2 KiB
TypeScript
263 lines
5.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
encloseAuthChallenge,
|
|
encloseAuthResponse,
|
|
encloseClose,
|
|
encloseClosed,
|
|
encloseEOSE,
|
|
encloseEvent,
|
|
encloseNotice,
|
|
encloseOK,
|
|
encloseReq,
|
|
encloseSubscriptionEvent,
|
|
} from "./enclose";
|
|
|
|
describe("encloseEvent", () => {
|
|
const cases = [
|
|
{
|
|
name: "empty event",
|
|
event: "{}",
|
|
want: '["EVENT",{}]',
|
|
},
|
|
{
|
|
name: "invalid json",
|
|
event: "in[valid,]",
|
|
want: '["EVENT",in[valid,]]',
|
|
},
|
|
{
|
|
name: "populated event",
|
|
event: '{"id":"abc123","kind":1,"sig":"abc123"}',
|
|
want: '["EVENT",{"id":"abc123","kind":1,"sig":"abc123"}]',
|
|
},
|
|
];
|
|
|
|
cases.forEach((tc) => {
|
|
it(tc.name, () => {
|
|
const got = encloseEvent(tc.event);
|
|
expect(got).toEqual(tc.want);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("encloseOK", () => {
|
|
const cases = [
|
|
{
|
|
name: "successful event",
|
|
eventID: "abc123",
|
|
status: true,
|
|
message: "Event accepted",
|
|
want: '["OK","abc123",true,"Event accepted"]',
|
|
},
|
|
{
|
|
name: "rejected event",
|
|
eventID: "xyz789",
|
|
status: false,
|
|
message: "Invalid signature",
|
|
want: '["OK","xyz789",false,"Invalid signature"]',
|
|
},
|
|
{
|
|
name: "empty message",
|
|
eventID: "def456",
|
|
status: true,
|
|
message: "",
|
|
want: '["OK","def456",true,""]',
|
|
},
|
|
];
|
|
|
|
cases.forEach((tc) => {
|
|
it(tc.name, () => {
|
|
const got = encloseOK(tc.eventID, tc.status, tc.message);
|
|
expect(got).toEqual(tc.want);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("encloseReq", () => {
|
|
const cases = [
|
|
{
|
|
name: "single filter",
|
|
subID: "sub1",
|
|
filters: ['{"kinds":[1],"limit":10}'],
|
|
want: '["REQ","sub1",{"kinds":[1],"limit":10}]',
|
|
},
|
|
{
|
|
name: "multiple filters",
|
|
subID: "sub2",
|
|
filters: ['{"kinds":[1]}', '{"authors":["abc"]}'],
|
|
want: '["REQ","sub2",{"kinds":[1]},{"authors":["abc"]}]',
|
|
},
|
|
{
|
|
name: "no filters",
|
|
subID: "sub3",
|
|
filters: [],
|
|
want: '["REQ","sub3"]',
|
|
},
|
|
];
|
|
|
|
cases.forEach((tc) => {
|
|
it(tc.name, () => {
|
|
const got = encloseReq(tc.subID, tc.filters);
|
|
expect(got).toEqual(tc.want);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("encloseSubscriptionEvent", () => {
|
|
const cases = [
|
|
{
|
|
name: "basic event",
|
|
subID: "sub1",
|
|
event: '{"id":"abc123","kind":1}',
|
|
want: '["EVENT","sub1",{"id":"abc123","kind":1}]',
|
|
},
|
|
{
|
|
name: "empty event",
|
|
subID: "sub2",
|
|
event: "{}",
|
|
want: '["EVENT","sub2",{}]',
|
|
},
|
|
];
|
|
|
|
cases.forEach((tc) => {
|
|
it(tc.name, () => {
|
|
const got = encloseSubscriptionEvent(tc.subID, tc.event);
|
|
expect(got).toEqual(tc.want);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("encloseEOSE", () => {
|
|
const cases = [
|
|
{
|
|
name: "valid subscription ID",
|
|
subID: "sub1",
|
|
want: '["EOSE","sub1"]',
|
|
},
|
|
{
|
|
name: "empty subscription ID",
|
|
subID: "",
|
|
want: '["EOSE",""]',
|
|
},
|
|
];
|
|
|
|
cases.forEach((tc) => {
|
|
it(tc.name, () => {
|
|
const got = encloseEOSE(tc.subID);
|
|
expect(got).toEqual(tc.want);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("encloseClose", () => {
|
|
const cases = [
|
|
{
|
|
name: "valid subscription ID",
|
|
subID: "sub1",
|
|
want: '["CLOSE","sub1"]',
|
|
},
|
|
{
|
|
name: "empty subscription ID",
|
|
subID: "",
|
|
want: '["CLOSE",""]',
|
|
},
|
|
];
|
|
|
|
cases.forEach((tc) => {
|
|
it(tc.name, () => {
|
|
const got = encloseClose(tc.subID);
|
|
expect(got).toEqual(tc.want);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("encloseClosed", () => {
|
|
const cases = [
|
|
{
|
|
name: "with message",
|
|
subID: "sub1",
|
|
message: "Subscription complete",
|
|
want: '["CLOSED","sub1","Subscription complete"]',
|
|
},
|
|
{
|
|
name: "empty message",
|
|
subID: "sub2",
|
|
message: "",
|
|
want: '["CLOSED","sub2",""]',
|
|
},
|
|
];
|
|
|
|
cases.forEach((tc) => {
|
|
it(tc.name, () => {
|
|
const got = encloseClosed(tc.subID, tc.message);
|
|
expect(got).toEqual(tc.want);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("encloseNotice", () => {
|
|
const cases = [
|
|
{
|
|
name: "valid message",
|
|
message: "This is a notice",
|
|
want: '["NOTICE","This is a notice"]',
|
|
},
|
|
{
|
|
name: "empty message",
|
|
message: "",
|
|
want: '["NOTICE",""]',
|
|
},
|
|
];
|
|
|
|
cases.forEach((tc) => {
|
|
it(tc.name, () => {
|
|
const got = encloseNotice(tc.message);
|
|
expect(got).toEqual(tc.want);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("encloseAuthChallenge", () => {
|
|
const cases = [
|
|
{
|
|
name: "valid challenge",
|
|
challenge: "random-challenge-string",
|
|
want: '["AUTH","random-challenge-string"]',
|
|
},
|
|
{
|
|
name: "empty challenge",
|
|
challenge: "",
|
|
want: '["AUTH",""]',
|
|
},
|
|
];
|
|
|
|
cases.forEach((tc) => {
|
|
it(tc.name, () => {
|
|
const got = encloseAuthChallenge(tc.challenge);
|
|
expect(got).toEqual(tc.want);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("encloseAuthResponse", () => {
|
|
const cases = [
|
|
{
|
|
name: "valid event",
|
|
event: '{"id":"abc123","kind":22242}',
|
|
want: '["AUTH",{"id":"abc123","kind":22242}]',
|
|
},
|
|
{
|
|
name: "empty event",
|
|
event: "{}",
|
|
want: '["AUTH",{}]',
|
|
},
|
|
];
|
|
|
|
cases.forEach((tc) => {
|
|
it(tc.name, () => {
|
|
const got = encloseAuthResponse(tc.event);
|
|
expect(got).toEqual(tc.want);
|
|
});
|
|
});
|
|
});
|