@fedify/fedify
Version:
An ActivityPub server framework
193 lines (192 loc) • 4.2 kB
JavaScript
import "@js-temporal/polyfill";
import "urlpattern-polyfill";
globalThis.addEventListener = () => {};
import { t as assertEquals } from "../assert_equals-Ew3jOFa3.mjs";
import "../std__assert-CRDpx_HF.mjs";
import { t as assertThrows } from "../assert_throws-4NwKEy2q.mjs";
import { t as nodeInfoToJson } from "../types-J53Kw7so.mjs";
import { test } from "@fedify/fixture";
//#region src/nodeinfo/types.test.ts
test("nodeInfoToJson()", () => {
const validInfo = {
software: {
name: "software-name",
version: "1.2.3"
},
protocols: ["activitypub"],
usage: {
users: {
total: 100,
activeHalfyear: 50,
activeMonth: 10
},
localPosts: 1e3,
localComments: 1e4
}
};
assertEquals(nodeInfoToJson(validInfo), {
"$schema": "http://nodeinfo.diaspora.software/ns/schema/2.1#",
version: "2.1",
software: {
name: "software-name",
version: "1.2.3",
repository: void 0,
homepage: void 0
},
protocols: ["activitypub"],
services: {
inbound: [],
outbound: []
},
openRegistrations: false,
usage: {
localComments: 1e4,
localPosts: 1e3,
users: {
activeHalfyear: 50,
activeMonth: 10,
total: 100
}
},
metadata: {}
});
assertEquals(nodeInfoToJson({
...validInfo,
software: {
...validInfo.software,
repository: new URL("https://example.com/repo"),
homepage: new URL("https://example.com/home")
},
services: {
inbound: ["atom1.0", "imap"],
outbound: ["atom1.0", "smtp"]
},
openRegistrations: true
}), {
"$schema": "http://nodeinfo.diaspora.software/ns/schema/2.1#",
version: "2.1",
software: {
name: "software-name",
version: "1.2.3",
repository: "https://example.com/repo",
homepage: "https://example.com/home"
},
protocols: ["activitypub"],
services: {
inbound: ["atom1.0", "imap"],
outbound: ["atom1.0", "smtp"]
},
openRegistrations: true,
usage: {
localComments: 1e4,
localPosts: 1e3,
users: {
activeHalfyear: 50,
activeMonth: 10,
total: 100
}
},
metadata: {}
});
assertThrows(() => nodeInfoToJson({
...validInfo,
software: {
...validInfo.software,
name: "INVALID-NAME"
}
}), TypeError, "Invalid software name");
assertThrows(() => nodeInfoToJson({
...validInfo,
protocols: []
}), TypeError, "At least one protocol must be supported");
assertThrows(() => nodeInfoToJson({
...validInfo,
usage: {
...validInfo.usage,
users: {
...validInfo.usage.users,
total: -1
}
}
}), TypeError, "Invalid total users");
assertThrows(() => nodeInfoToJson({
...validInfo,
usage: {
...validInfo.usage,
users: {
...validInfo.usage.users,
total: 1.23
}
}
}), TypeError, "Invalid total users");
assertThrows(() => nodeInfoToJson({
...validInfo,
usage: {
...validInfo.usage,
users: {
...validInfo.usage.users,
activeHalfyear: -1
}
}
}), TypeError, "Invalid active halfyear users");
assertThrows(() => nodeInfoToJson({
...validInfo,
usage: {
...validInfo.usage,
users: {
...validInfo.usage.users,
activeHalfyear: 1.23
}
}
}), TypeError, "Invalid active halfyear users");
assertThrows(() => nodeInfoToJson({
...validInfo,
usage: {
...validInfo.usage,
users: {
...validInfo.usage.users,
activeMonth: -1
}
}
}), TypeError, "Invalid active month users");
assertThrows(() => nodeInfoToJson({
...validInfo,
usage: {
...validInfo.usage,
users: {
...validInfo.usage.users,
activeMonth: 1.23
}
}
}), TypeError, "Invalid active month users");
assertThrows(() => nodeInfoToJson({
...validInfo,
usage: {
...validInfo.usage,
localPosts: -1
}
}), TypeError, "Invalid local posts");
assertThrows(() => nodeInfoToJson({
...validInfo,
usage: {
...validInfo.usage,
localPosts: 1.23
}
}), TypeError, "Invalid local posts");
assertThrows(() => nodeInfoToJson({
...validInfo,
usage: {
...validInfo.usage,
localComments: -1
}
}), TypeError, "Invalid local comments");
assertThrows(() => nodeInfoToJson({
...validInfo,
usage: {
...validInfo.usage,
localComments: 1.23
}
}), TypeError, "Invalid local comments");
});
//#endregion
export {};