diff --git a/src/webid/Agent.ts b/src/webid/Agent.ts index 82267f3..6429989 100644 --- a/src/webid/Agent.ts +++ b/src/webid/Agent.ts @@ -63,6 +63,10 @@ export class Agent extends TermWrapper { return SetFrom.subjectPredicate(this, SOLID.storage, NamedNodeAs.string, NamedNodeFrom.string) } + get oidcIssuer(): Set { + return SetFrom.subjectPredicate(this, SOLID.oidcIssuer, NamedNodeAs.string, NamedNodeFrom.string) + } + get email(): string | null { return this.hasEmail?.value ?? null } diff --git a/test/unit/agent.test.ts b/test/unit/agent.test.ts new file mode 100644 index 0000000..befde40 --- /dev/null +++ b/test/unit/agent.test.ts @@ -0,0 +1,33 @@ +import { DataFactory, Parser, Store } from "n3" +import assert from "node:assert" +import { describe, it } from "node:test" + +import { Agent } from "@solid/object" + +describe("Agent oidcIssuer", () => { + + const sampleRDF = ` +@prefix solid: . +@prefix foaf: . + + + a foaf:Person ; + solid:oidcIssuer , . +`; + + it("returns the set of solid:oidcIssuer values declared on the WebID", () => { + const store = new Store() + store.addQuads(new Parser().parse(sampleRDF)) + + const agent = new Agent( + DataFactory.namedNode("https://example.org/profile/card#me"), + store, + DataFactory + ) + + assert.deepStrictEqual( + new Set(agent.oidcIssuer), + new Set(["https://idp.example.org/", "https://idp.other.example/"]) + ) + }) +})