mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
## Summary - simplify Add community into clear create and join paths - align community actions and icon editing across the rail, profile menu, and settings - consolidate invites around the member list and a reusable link dialog ## Testing - `pnpm check` - `pnpm test` (3,483 passed) - `pnpm run build:e2e` - focused Playwright coverage (34 passed) ## Snapshots | Add a community | Join an existing community | | --- | --- | |  |  | | Create a new community | Hosted community icon | | --- | --- | |  |  | | Invites | Invite link | | --- | --- | |  |  | --------- Signed-off-by: Wes <wesbillman@users.noreply.github.com> Co-authored-by: Wes <wesbillman@users.noreply.github.com> Co-authored-by: Carl <c7ebe626f000404285d3686e1dc74cc07cc60a9754a150041ba132e14bd3e2ec@buzz.block.builderlab.xyz>
115 lines
2.8 KiB
JavaScript
115 lines
2.8 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import {
|
|
canManageCommunityMembers,
|
|
loadRelayMembershipLookup,
|
|
shouldWarnMissingMembershipSnapshot,
|
|
} from "./relayMembers.ts";
|
|
|
|
test("open relays skip the membership snapshot request", async () => {
|
|
const lookup = await loadRelayMembershipLookup("a".repeat(64), false, () =>
|
|
assert.fail("open relays must not request a membership snapshot"),
|
|
);
|
|
|
|
assert.deepEqual(lookup, {
|
|
snapshotFound: false,
|
|
membershipRequired: false,
|
|
membership: null,
|
|
});
|
|
});
|
|
|
|
test("membership relays request their membership snapshot", async () => {
|
|
const pubkey = "a".repeat(64);
|
|
let requestCount = 0;
|
|
const lookup = await loadRelayMembershipLookup(pubkey, true, async () => {
|
|
requestCount += 1;
|
|
return {
|
|
created_at: 1,
|
|
tags: [["member", pubkey, "admin"]],
|
|
};
|
|
});
|
|
|
|
assert.equal(requestCount, 1);
|
|
assert.equal(lookup.snapshotFound, true);
|
|
assert.equal(lookup.membershipRequired, true);
|
|
assert.equal(lookup.membership?.role, "admin");
|
|
});
|
|
|
|
test("community member management is hidden on open relays", () => {
|
|
assert.equal(
|
|
canManageCommunityMembers({
|
|
snapshotFound: false,
|
|
membershipRequired: false,
|
|
membership: null,
|
|
}),
|
|
false,
|
|
);
|
|
});
|
|
|
|
test("community member management is visible to closed-relay admins and owners", () => {
|
|
for (const role of ["admin", "owner"]) {
|
|
assert.equal(
|
|
canManageCommunityMembers({
|
|
snapshotFound: true,
|
|
membershipRequired: true,
|
|
membership: { pubkey: "a".repeat(64), role },
|
|
}),
|
|
true,
|
|
);
|
|
}
|
|
});
|
|
|
|
test("community member management stays hidden while loading and from closed-relay non-admins", () => {
|
|
assert.equal(canManageCommunityMembers(undefined), false);
|
|
assert.equal(
|
|
canManageCommunityMembers({
|
|
snapshotFound: true,
|
|
membershipRequired: true,
|
|
membership: { pubkey: "a".repeat(64), role: "member" },
|
|
}),
|
|
false,
|
|
);
|
|
assert.equal(
|
|
canManageCommunityMembers({
|
|
snapshotFound: true,
|
|
membershipRequired: true,
|
|
membership: null,
|
|
}),
|
|
false,
|
|
);
|
|
});
|
|
|
|
test("missing snapshot warns when the relay requires membership", () => {
|
|
assert.equal(
|
|
shouldWarnMissingMembershipSnapshot({
|
|
snapshotFound: false,
|
|
membershipRequired: true,
|
|
membership: null,
|
|
}),
|
|
true,
|
|
);
|
|
});
|
|
|
|
test("missing snapshot is normal on an open relay", () => {
|
|
assert.equal(
|
|
shouldWarnMissingMembershipSnapshot({
|
|
snapshotFound: false,
|
|
membershipRequired: false,
|
|
membership: null,
|
|
}),
|
|
false,
|
|
);
|
|
});
|
|
|
|
test("an available snapshot never warns", () => {
|
|
assert.equal(
|
|
shouldWarnMissingMembershipSnapshot({
|
|
snapshotFound: true,
|
|
membershipRequired: true,
|
|
membership: null,
|
|
}),
|
|
false,
|
|
);
|
|
});
|