Changeset 8a474ab in Klonkt for test/gates-family.test.js
- Timestamp:
- 09/23/2026 12:13:31 PM (6 hours ago)
- Branches:
- main
- Children:
- 0ad37a0
- Parents:
- fa24f7b
- File:
-
- 1 edited
-
test/gates-family.test.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
test/gates-family.test.js
rfa24f7b r8a474ab 175 175 db.prepare("UPDATE sites SET gate_replies = NULL WHERE slug = 'kind'").run(); 176 176 }); 177 178 // ── De soort-poorten: ook bij het VERSTUREN, en film heeft er nu een ────── 179 // 180 // Twee gaten die naast elkaar stonden en elkaar versterkten (shaer-qc9o en 181 // shaer-mxh2). gate_images en gate_music golden alleen bij het SERVEREN: wat 182 // een ward niet te zien kreeg mocht hij wel plaatsen, dus het stond bij 183 // iedereen behalve bij hemzelf. En film had helemaal geen poort, dus de 184 // zwaarste soort van de drie was de enige die altijd door mocht. 185 // 186 // Samen betekende dat: een kind met plaatjes en muziek dicht kon een half uur 187 // video de wereld in sturen, en het paneel van de guardian zei dat alles wat 188 // er te sluiten viel gesloten was. 189 190 const PUBLIC = 'https://www.w3.org/ns/activitystreams#Public'; 191 const beeld = { type: 'Document', mediaType: 'image/jpeg', url: 'https://klonkt.test/media/x.jpg' }; 192 const film = { type: 'Document', mediaType: 'video/mp4', url: 'https://klonkt.test/media/x.mp4' }; 193 const geluid = { type: 'Audio', mediaType: 'audio/mpeg', url: 'https://klonkt.test/media/x.mp3' }; 194 195 /** Alle poorten open, behalve die je noemt. Zo toetst elke zaak zijn eigen 196 * weigering en niet een die van een vorige toets bleef staan. */ 197 function poorten(dicht = {}) { 198 const kolommen = ['gate_compose', 'gate_replies', 'gate_messages', 'gate_images', 'gate_music', 'gate_video']; 199 const zet = kolommen.map((k) => `${k} = ${dicht[k] === 0 ? 0 : 1}`).join(', '); 200 db.prepare(`UPDATE sites SET ${zet} WHERE slug = 'kind'`).run(); 201 } 202 203 test('film wordt bij het serveren weggeknipt als de video-poort dicht is', () => { 204 const atts = [beeld, geluid, film]; 205 assert.deepEqual(AP.gateAttachments(atts, { video: false }).map((a) => a.mediaType), ['image/jpeg', 'audio/mpeg']); 206 // Ook als hij als AS2-Video binnenkomt zonder mediaType: de soort staat dan 207 // in `type`, en een poort die alleen naar mediaType kijkt mist hem. 208 assert.equal(AP.gateAttachments([{ type: 'Video', url: 'https://x/v' }], { video: false }), undefined); 209 }); 210 211 test('een bijlage van een dichte soort wordt aan de outbox geweigerd', async () => { 212 for (const [kolom, bijlage, fout] of [ 213 ['gate_images', beeld, 'gated_images'], 214 ['gate_music', geluid, 'gated_music'], 215 ['gate_video', film, 'gated_video'], 216 ]) { 217 poorten({ [kolom]: 0 }); 218 const post = { type: 'Create', object: { type: 'Note', content: '<p>kijk</p>', to: [PUBLIC], attachment: [bijlage] } }; 219 const uit = await AP.ingestOutboxActivity(site(), user, post); 220 assert.equal(uit.status, 403, `${kolom} dicht hoort te weigeren`); 221 assert.equal(uit.error, fout); 222 } 223 }); 224 225 test('een dichte poort raakt alleen zijn eigen soort', async () => { 226 poorten({ gate_images: 0 }); 227 const post = { type: 'Create', object: { type: 'Note', content: '<p>luister</p>', to: [PUBLIC], attachment: [geluid] } }; 228 const uit = await AP.ingestOutboxActivity(site(), user, post); 229 assert.notEqual(uit.error, 'gated_images', 'muziek hoort niet op de beeldpoort te stuiten'); 230 }); 231 232 test('de reddingsboei gaat door een dichte beeldpoort heen', async () => { 233 // Een hulpvraag draagt vaak juist een schermafdruk: dat is het bewijs van 234 // waar het kind van schrikt. Een dichte beeldpoort mag precies het kanaal 235 // niet sluiten dat hem veilig houdt. 236 poorten({ gate_images: 0, gate_video: 0, gate_music: 0 }); 237 const boei = { 238 type: 'Create', 239 object: { 240 type: 'Note', content: '<p>help</p>', 'shaer:helpRequest': true, 241 to: ['https://elders.test/u/oma'], attachment: [beeld], 242 }, 243 }; 244 const uit = await AP.ingestOutboxActivity(site(), user, boei); 245 assert.notEqual(uit.error, 'gated_images', 'de boei hoort door elke dichte deur heen te gaan'); 246 });
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)