Changeset 19a9a1e in Klonkt for test/ap-collection-paging.test.js


Ignore:
Timestamp:
08/15/2026 07:43:02 AM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
bec9001
Parents:
e1da6a1
Message:

Library: audience meesturen en de ongeordende collectievorm gebruiken

De 500 op /ap/users/dev/library kwam van open.audio, niet van ons, en de
oorzaak staat in hun bron (federation/serializers.py op develop):

LibrarySerializer.create() regel 1147

"privacy_level": privacy[validated_dataaudience]

audience staat als required=False in de serializer, dus als wij het
weglaten zit de sleutel niet in validated_data en is dat een KeyError --
een 500 op elke poging onze bibliotheek op te halen. Wij stuurden hem
niet.

Het veld is bovendien gewoon waar: alles in de bak is fedi_open. En bij
hen is het precies het verschil tussen privacy_level 'everyone' en 'me',
oftewel of onze nummers daar afspeelbaar zijn.

Daarnaast de vorm. Hun CollectionPageSerializer (regel 1157) accepteert
alleen CollectionPage met items; wij stuurden OrderedCollectionPage
met orderedItems, en dan komt er van de inhoud niets binnen. Dat is geen
dialect maar de andere helft van AS2: een platenkast heeft geen volgorde
die iets betekent, en hun LibrarySerializer accepteert als type ook alleen
as:Collection of fw:Library. De outbox is wél geordend en blijft zoals hij
was.

De eisen staan nu met bronverwijzing in test/ap-library.test.js, want ze
stonden nergens bij ons opgeschreven -- en het volgende dat gebeurt is
anders dat iemand dit 'opruimt' naar de gewone vorm.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/ap-collection-paging.test.js

    re1da6a1 r19a9a1e  
    8484    assert.notEqual(pagina.body.id, wortel.body.id, `${pad}: pagina deelt zijn id met de collectie`);
    8585
    86     // En hij mag niet zelf weer een `first` dragen -- dat is de lus waar
    87     // open.audio in liep.
    88     assert.equal(pagina.body.first, undefined, `${pad}: de pagina draagt zelf een first`);
     86    // Een pagina MAG `first` dragen (AS2: CollectionPage erft van Collection,
     87    // en Funkwhale eist het zelfs op library-pagina's). Wat niet mag is een
     88    // `next` naar zichzelf: dat is de lus, en die zit in de verwijzing die een
     89    // lezer volgt, niet in de aanwezigheid van het veld.
     90    assert.notEqual(pagina.body.next, eerste, `${pad}: next wijst naar de pagina zelf`);
     91
     92    // De items horen bij het type: geordend -> orderedItems, ongeordend ->
     93    // items. Een `Collection` met `orderedItems` is voor een strikte lezer leeg.
     94    const sleutel = pagina.body.type === 'CollectionPage' ? 'items' : 'orderedItems';
     95    assert.ok(Array.isArray(pagina.body[sleutel]), `${pad}: ${pagina.body.type} zonder ${sleutel}`);
    8996  });
    9097}
Note: See TracChangeset for help on using the changeset viewer.