Skip to content

test: guard third-party Solid client interop in CI — @inrupt/solid-client drives Cistern 0.2.0 8/8 today #134

Description

@josepharuja

Measured result

@inrupt/solid-client@1.23.1 — the most widely used Solid client library — drives Cistern 0.2.0 with 8/8 passing and zero Cistern-specific code:

Operation Result
read root container as a dataset PASS
create container (saveSolidDatasetAt) PASS
write an RDF document (Thing + foaf:name) PASS
read back, exact round-trip of the value PASS
containment — parent lists the child PASS
binary upload (saveFileInContainer) PASS
binary read back (getFile) PASS
unauthenticated read refused PASS (401)

Auth was a custom fetch adding Authorization: Bearer <owner token>; Cistern has no Solid-OIDC yet, so there is no DPoP path to exercise. Run against ghcr.io/enrichmeai/cistern:0.2.0, both containers on one Docker network so minted IRIs matched.

Why this matters

  1. It is conformance evidence of a kind the CTH currently cannot give. cth/BASELINE.md reads 0/41 because the harness never reaches an assertion. A third-party client exercising the real protocol surface is the strongest external signal available today.
  2. It reduces the urgency of the TypeScript half of T7.9 Client SDKs — thin Java and TypeScript clients for applications #101. If the standard client already works, the argument for shipping our own JS client — a second toolchain in a JVM-native project, competing with Inrupt's — is much weaker. The Java client may still earn its place; the TS one needs re-justifying.
  3. It is a regression risk that nothing currently guards. Any change to content negotiation, containment serialisation, ETags or status codes could silently break the ecosystem's default client.

Scope

  • Adopt the probe as a CI job: start the built image, run the client against it, assert all operations.
  • Pin the client version; treat a failure as a conformance bug in Cistern, not in the test.
  • Document in docs/INTEGRATION.md that the standard client works, with the bearer-fetch snippet — this is a better answer to "is there an SDK?" than an SDK.

Known trap to document

@inrupt/solid-clientjsonld@5.2.0@digitalbazaar/http-clientesm@3.2.25, which hard-crashes Node 23 (native assertion in InternalModuleStat). Works on Node 20. A developer trying the obvious thing on current Node hits this before reaching Cistern — name the supported Node version.

DoD

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestphase-3ticketBacklog ticket (T<phase>.<n>)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions