Initial Commit
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import { describe, expect, it } from "@suaveplan/testing/runner";
|
||||
import {
|
||||
type AuthProvider,
|
||||
CapabilityTokenIssuer,
|
||||
CrossMeshTrustValidator,
|
||||
MeshMembershipVerifier,
|
||||
type TokenSigner,
|
||||
} from "../../src/index.js";
|
||||
|
||||
describe("auth end-to-end", () => {
|
||||
it("verifies join, issues token, validates trust across meshes", async () => {
|
||||
const authProvider: AuthProvider = {
|
||||
verifyToken: async () => ({
|
||||
identity: "alice",
|
||||
publicKeyHex: "deadbeef",
|
||||
}),
|
||||
};
|
||||
const verifier = new MeshMembershipVerifier({
|
||||
authProvider,
|
||||
meshId: "mesh-A",
|
||||
allowedCapabilities: ["host", "relay", "bridge"],
|
||||
});
|
||||
const signer: TokenSigner = {
|
||||
sign: async () => "sig",
|
||||
verify: async () => true,
|
||||
};
|
||||
const issuer = new CapabilityTokenIssuer({ signer, clock: () => 0 });
|
||||
|
||||
const result = await verifier.verifyJoinRequest({
|
||||
peerId: "alice",
|
||||
meshId: "mesh-A",
|
||||
authToken: "tok",
|
||||
publicKeyHex: "deadbeef",
|
||||
claimedCapabilities: ["host", "bridge"],
|
||||
});
|
||||
expect(result.assignedTier).toBe(0);
|
||||
|
||||
const token = await issuer.issue(
|
||||
result.peerId,
|
||||
"mesh-A",
|
||||
result.assignedTier,
|
||||
result.capabilities
|
||||
);
|
||||
await issuer.validate(token);
|
||||
|
||||
const trust = new CrossMeshTrustValidator();
|
||||
trust.add({
|
||||
fromMeshId: "mesh-A",
|
||||
toMeshId: "mesh-B",
|
||||
directions: ["relay", "backbone"],
|
||||
establishedAt: 0,
|
||||
});
|
||||
trust.assertTrusts("mesh-A", "mesh-B", "backbone");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user