Changeset 1a2f206 in Klonkt for test/c2s-compose.test.js


Ignore:
Timestamp:
07/30/2026 11:17:05 PM (6 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
ef519a3
Parents:
55eca8b
Message:

Follow: gesigneerd resolven, fouten naar de app, guardians ingelicht, volg-QR

Robins meldingen (31-7). Vier dingen aan de volg-kant.

Een: followActor haalde het actor-document anoniem op; een
authorized-fetch-instance weigert dat, waardoor volgen vanaf een boost
faalde. De fetch is nu gesigneerd als de eigen actor.

Twee: de C2S-ingest slikte followActor-fouten in en gaf altijd 202,
dus een mislukte follow zag er in de app uit als een gelukte. Fouten
komen nu als 502 follow_failed (met detail) bij de app aan, met test.

Drie: de guardians worden ingelicht als hun ward iemand gaat volgen:
een follow brengt nieuwe content het kind binnen, en het dorp hoort te
weten dat de deur openging. Een directe note per guardian,
best-effort. FEP-633c 5.3 gate't inkomende follows; deze uitgaande
melding is Shaer-beleid (spec-vraag als bead).

Vier: GET /ap/users/:slug/follow-qr.png serveert een QR-PNG van
share:social/follow/AP/@slug@host (npm qrcode, puur JS). Publiek met
opzet: er staat alleen de publieke handle in, en de plain image-loaders
van de apps dragen geen bearer.

Changed files:
src/services/ActivityPubService.js

  • followActor: signedGetJson voor het actor-doc; guardian-notice
  • C2S Follow-case: fouten door naar de app

src/routes/activitypub.js

  • follow-qr.png-route (cache 1 dag)

package.json / package-lock.json

  • qrcode-dependency

test/c2s-compose.test.js

  • onbereikbare follow geeft 502 follow_failed/unreachable

-robo
Co-Authored-By: Claude Opus 4.8 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/c2s-compose.test.js

    r55eca8b r1a2f206  
    208208});
    209209
     210test('a failed follow REACHES the app as an error, not a fake 202', async () => {
     211  // Following from a boost silently failed (Robins melding, 31-7): the C2S
     212  // ingest swallowed followActor's error. An unreachable actor must say so.
     213  const r = await AP.ingestOutboxActivity(site, user, {
     214    type: 'Follow', object: 'https://unresolvable.invalid/u/niemand',
     215  });
     216  assert.equal(r.status, 502);
     217  assert.equal(r.error, 'follow_failed');
     218  assert.equal(r.detail, 'unreachable');
     219});
     220
    210221test('selfAuthor: the byline for your own outbox notes', () => {
    211222  // The owner's app reads its own posts from the outbox, which carried no
Note: See TracChangeset for help on using the changeset viewer.