braid-blob 0.0.15 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/test/test.html CHANGED
@@ -31,10 +31,17 @@
31
31
  }
32
32
  </style>
33
33
  <script src="https://unpkg.com/braid-http@~1.3/braid-http-client.js"></script>
34
+ <script src="./tests.js"></script>
34
35
  <div id="summaryContainer"></div>
35
36
  <div id="testContainer"></div>
36
37
  <script type=module>
37
38
 
39
+ braid_fetch.enable_multiplex = false
40
+
41
+ // Parse URL parameters for filter
42
+ const urlParams = new URLSearchParams(window.location.search)
43
+ const filterArg = urlParams.get('filter') || urlParams.get('grep')
44
+
38
45
  let delay = 0
39
46
 
40
47
  function createTestDiv(testName) {
@@ -47,7 +54,7 @@ function createTestDiv(testName) {
47
54
 
48
55
  function updateTestResult(div, passed, message, got, expected) {
49
56
  div.className = `test ${passed ? "passed" : "failed"}`
50
-
57
+
51
58
  if (passed) {
52
59
  div.querySelector(".result").textContent = message
53
60
  div.querySelector(".result").style.fontSize = message.length > 400 ? 'xx-small' : message.length > 100 ? 'small' : ''
@@ -69,6 +76,11 @@ function updateSummaryBox(box, passed) {
69
76
  }
70
77
 
71
78
  async function runTest(testName, testFunction, expectedResult) {
79
+ // Apply filter if specified
80
+ if (filterArg && !testName.toLowerCase().includes(filterArg.toLowerCase())) {
81
+ return // Skip this test
82
+ }
83
+
72
84
  delay += 70
73
85
 
74
86
  await new Promise(done => setTimeout(done, delay))
@@ -89,666 +101,7 @@ async function runTest(testName, testFunction, expectedResult) {
89
101
  }
90
102
  }
91
103
 
92
- runTest(
93
- "test that peer.txt gets initialized on a fresh run",
94
- async () => {
95
- var r1 = await braid_fetch(`/eval`, {
96
- method: 'POST',
97
- body: `void (async () => {
98
- var db_name = 'test-db-' + Math.random().toString(36).slice(2)
99
-
100
- var new_bb = braid_blob.create_braid_blob()
101
- new_bb.db_folder = __dirname + '/' + db_name
102
-
103
- try {
104
- await new_bb.serve({}, {})
105
- } catch (e) {}
106
-
107
- await require('fs').promises.rm(new_bb.db_folder,
108
- { recursive: true, force: true })
109
-
110
- res.end(new_bb.peer)
111
-
112
- })()`
113
- })
114
- return '' + ((await r1.text()).length > 5)
115
- },
116
- 'true'
117
- )
118
-
119
- runTest(
120
- "test that peer is same the second time we run from same db folder",
121
- async () => {
122
- var r1 = await braid_fetch(`/eval`, {
123
- method: 'POST',
124
- body: `void (async () => {
125
- var db = __dirname + '/test-db-' + Math.random().toString(36).slice(2)
126
-
127
- var bb1 = braid_blob.create_braid_blob()
128
- bb1.db_folder = db
129
-
130
- try {
131
- await bb1.serve({}, {})
132
- } catch (e) {}
133
-
134
- var bb2 = braid_blob.create_braid_blob()
135
- bb2.db_folder = db
136
-
137
- try {
138
- await bb2.serve({}, {})
139
- } catch (e) {}
140
-
141
- await require('fs').promises.rm(db, { recursive: true, force: true })
142
-
143
- res.end('' + (bb1.peer === bb2.peer))
144
- })()`
145
- })
146
- return await r1.text()
147
- },
148
- 'true'
149
- )
150
-
151
- runTest(
152
- "test that we can set the peer of a braid_blob object",
153
- async () => {
154
- var r1 = await braid_fetch(`/eval`, {
155
- method: 'POST',
156
- body: `void (async () => {
157
- var db = __dirname + '/test-db-' + Math.random().toString(36).slice(2)
158
-
159
- var bb1 = braid_blob.create_braid_blob()
160
- bb1.db_folder = db
161
- bb1.peer = 'test_peer'
162
-
163
- try {
164
- await bb1.serve({}, {})
165
- } catch (e) {}
166
-
167
- await require('fs').promises.rm(db, { recursive: true, force: true })
168
-
169
- res.end(bb1.peer)
170
- })()`
171
- })
172
- return await r1.text()
173
- },
174
- 'test_peer'
175
- )
176
-
177
- runTest(
178
- "test that PUTing with shorter event id doesn't do anything.",
179
- async () => {
180
- var key = 'test-' + Math.random().toString(36).slice(2)
181
-
182
- var r = await braid_fetch(`/${key}`, {
183
- method: 'PUT',
184
- version: ['11'],
185
- body: 'xyz'
186
- })
187
- if (!r.ok) throw 'got: ' + r.statusCode
188
-
189
- var r = await braid_fetch(`/${key}`, {
190
- method: 'PUT',
191
- version: ['9'],
192
- body: 'abc'
193
- })
194
- if (!r.ok) throw 'got: ' + r.statusCode
195
-
196
- var r = await braid_fetch(`/${key}`)
197
- return await r.text()
198
- },
199
- 'xyz'
200
- )
201
-
202
- runTest(
203
- "test that we ignore stuff after the ? in a url",
204
- async () => {
205
- var key = 'test-' + Math.random().toString(36).slice(2)
206
-
207
- var r = await braid_fetch(`/${key}?blah`, {
208
- method: 'PUT',
209
- version: ['11'],
210
- body: 'yo!'
211
- })
212
- if (!r.ok) throw 'got: ' + r.statusCode
213
-
214
- var r = await braid_fetch(`/${key}`)
215
- return await r.text()
216
- },
217
- 'yo!'
218
- )
219
-
220
- runTest(
221
- "test that we ignore stuff after the # in a url",
222
- async () => {
223
- var key = 'test-' + Math.random().toString(36).slice(2)
224
-
225
- var r = await braid_fetch(`/${key}#blah?bloop`, {
226
- method: 'PUT',
227
- version: ['11'],
228
- body: 'hi!'
229
- })
230
- if (!r.ok) throw 'got: ' + r.statusCode
231
-
232
- var r = await braid_fetch(`/${key}`)
233
- return await r.text()
234
- },
235
- 'hi!'
236
- )
237
-
238
- runTest(
239
- "test send an update to another peer",
240
- async () => {
241
- var key = 'test-' + Math.random().toString(36).slice(2)
242
-
243
- var r = await braid_fetch(`/${key}`, {
244
- method: 'PUT',
245
- headers: {'Content-Type': 'text/plain'},
246
- version: ['1'],
247
- body: 'xyz'
248
- })
249
- if (!r.ok) throw 'got: ' + r.statusCode
250
-
251
- var a = new AbortController()
252
- var r = await braid_fetch(`/${key}`, {
253
- signal: a.signal,
254
- subscribe: true,
255
- peer: key
256
- })
257
-
258
- var p = new Promise(done => {
259
- r.subscribe(update => {
260
- if (update.version?.[0] !== '2') return
261
- done(update.body_text)
262
- a.abort()
263
- })
264
- })
265
-
266
- var r = await braid_fetch(`/${key}`, {
267
- method: 'PUT',
268
- headers: {'Content-Type': 'text/plain'},
269
- version: ['2'],
270
- body: 'abc'
271
- })
272
- if (!r.ok) throw 'got: ' + r.statusCode
273
-
274
- return await p
275
- },
276
- 'abc'
277
- )
278
-
279
- runTest(
280
- "test having multiple subs",
281
- async () => {
282
- var key = 'test-' + Math.random().toString(36).slice(2)
283
- var key2 = 'test2-' + Math.random().toString(36).slice(2)
284
-
285
- var r = await braid_fetch(`/${key}`, {
286
- method: 'PUT',
287
- headers: {'Content-Type': 'text/plain'},
288
- version: ['1'],
289
- body: 'xyz'
290
- })
291
- if (!r.ok) throw 'got: ' + r.statusCode
292
-
293
- var a = new AbortController()
294
- var r = await braid_fetch(`/${key}`, {
295
- signal: a.signal,
296
- subscribe: true,
297
- peer: key
298
- })
299
-
300
- var p = new Promise(done => {
301
- r.subscribe(update => {
302
- if (update.version?.[0] !== '2') return
303
- done(update.body_text)
304
- })
305
- })
306
-
307
- var r = await braid_fetch(`/${key2}`, {
308
- method: 'PUT',
309
- headers: {'Content-Type': 'text/plain'},
310
- version: ['1'],
311
- body: 'xyz2'
312
- })
313
- if (!r.ok) throw 'got: ' + r.statusCode
314
-
315
- var a = new AbortController()
316
- var r = await braid_fetch(`/${key2}`, {
317
- signal: a.signal,
318
- subscribe: true,
319
- peer: key2
320
- })
321
-
322
- var p2 = new Promise(done => {
323
- r.subscribe(update => {
324
- if (update.version?.[0] !== '2') return
325
- done(update.body_text)
326
- })
327
- })
328
-
329
- var r = await braid_fetch(`/${key}`, {
330
- method: 'PUT',
331
- headers: {'Content-Type': 'text/plain'},
332
- version: ['2'],
333
- body: 'abc'
334
- })
335
- if (!r.ok) throw 'got: ' + r.statusCode
336
-
337
- var r = await braid_fetch(`/${key2}`, {
338
- method: 'PUT',
339
- headers: {'Content-Type': 'text/plain'},
340
- version: ['2'],
341
- body: 'abc2'
342
- })
343
- if (!r.ok) throw 'got: ' + r.statusCode
344
-
345
- var ret = await Promise.all([p, p2])
346
- a.abort()
347
- return 'got: ' + ret
348
-
349
- },
350
- 'got: abc,abc2'
351
- )
352
-
353
- runTest(
354
- "test getting a 406",
355
- async () => {
356
- var key = 'test-' + Math.random().toString(36).slice(2)
357
-
358
- var r = await braid_fetch(`/${key}`, {
359
- method: 'PUT',
360
- headers: {'Content-Type': 'text/plain'},
361
- version: ['1'],
362
- parents: [],
363
- body: 'xyz'
364
- })
365
- if (!r.ok) throw 'got: ' + r.statusCode
366
-
367
- var r = await braid_fetch(`/${key}`, {
368
- headers: {Accept: 'text/html'}
369
- })
370
- return r.status + ' ' + await r.text()
371
- },
372
- '406 Content-Type of text/plain not in Accept: text/html'
373
- )
374
-
375
- runTest(
376
- "test deleting something",
377
- async () => {
378
- var key = 'test-' + Math.random().toString(36).slice(2)
379
-
380
- var r = await braid_fetch(`/${key}`, {
381
- method: 'PUT',
382
- version: ['1'],
383
- parents: [],
384
- body: 'xyz'
385
- })
386
- if (!r.ok) throw 'got: ' + r.statusCode
387
-
388
- var r = await braid_fetch(`/${key}`, {
389
- method: 'DELETE',
390
- })
391
- if (!r.ok) throw 'got: ' + r.statusCode
392
-
393
- var r = await braid_fetch(`/${key}`)
394
- return r.status
395
- },
396
- '404'
397
- )
398
-
399
- runTest(
400
- "test deleting something that doesn't exist",
401
- async () => {
402
- var key = 'test-' + Math.random().toString(36).slice(2)
403
-
404
- var r = await braid_fetch(`/${key}`, {
405
- method: 'DELETE',
406
- })
407
- if (!r.ok) throw 'got: ' + r.statusCode
408
-
409
- return r.status
410
- },
411
- '204'
412
- )
413
-
414
- runTest(
415
- "test that subscribe returns current-version header",
416
- async () => {
417
- var key = 'test-' + Math.random().toString(36).slice(2)
418
-
419
- var r = await braid_fetch(`/${key}`, {
420
- method: 'PUT',
421
- version: ['1'],
422
- parents: [],
423
- body: 'xyz'
424
- })
425
- if (!r.ok) throw 'got: ' + r.statusCode
426
-
427
- var a = new AbortController()
428
- var r = await braid_fetch(`/${key}`, {
429
- signal: a.signal,
430
- subscribe: true
431
- })
432
- a.abort()
433
- return r.headers.get('current-version')
434
- },
435
- '"1"'
436
- )
437
-
438
- runTest(
439
- "test that subscribe returns version as string-number in array",
440
- async () => {
441
- var key = 'test-' + Math.random().toString(36).slice(2)
442
-
443
- var r = await braid_fetch(`/${key}`, {
444
- method: 'PUT',
445
- version: ['1'],
446
- parents: [],
447
- body: 'xyz'
448
- })
449
- if (!r.ok) throw 'got: ' + r.statusCode
450
-
451
- var a = new AbortController()
452
- var r = await braid_fetch(`/${key}`, {
453
- signal: a.signal,
454
- subscribe: true
455
- })
456
-
457
- var x = await new Promise(done => {
458
- r.subscribe(update => {
459
- done(update.version)
460
- })
461
- })
462
-
463
- a.abort()
464
- return JSON.stringify(x)
465
- },
466
- '["1"]'
467
- )
468
-
469
- runTest(
470
- "test that subscribe's update's versions are string-number in array",
471
- async () => {
472
- var key = 'test-' + Math.random().toString(36).slice(2)
473
-
474
- var r = await braid_fetch(`/${key}`, {
475
- method: 'PUT',
476
- version: ['4'],
477
- body: 'xyz'
478
- })
479
- if (!r.ok) throw 'got: ' + r.statusCode
480
-
481
- var a = new AbortController()
482
- var r = await braid_fetch(`/${key}`, {
483
- signal: a.signal,
484
- subscribe: true,
485
- parents: ['0']
486
- })
487
-
488
- var p = new Promise(done => {
489
- r.subscribe(update => {
490
- done(update.version)
491
- })
492
- })
493
-
494
- var ret = await p
495
- a.abort()
496
- return JSON.stringify(ret)
497
- },
498
- '["4"]'
499
- )
500
-
501
- runTest(
502
- "test that non-subscribe returns version header",
503
- async () => {
504
- var key = 'test-' + Math.random().toString(36).slice(2)
505
-
506
- var r = await braid_fetch(`/${key}`, {
507
- method: 'PUT',
508
- version: ['2'],
509
- parents: [],
510
- body: 'xyz'
511
- })
512
- if (!r.ok) throw 'got: ' + r.statusCode
513
-
514
- var r = await braid_fetch(`/${key}`)
515
- return r.headers.get('version')
516
- },
517
- '"2"'
518
- )
519
-
520
- runTest(
521
- "test that PUTing at version [] doesn't do anything.",
522
- async () => {
523
- var key = 'test-' + Math.random().toString(36).slice(2)
524
-
525
- var r = await braid_fetch(`/${key}`, {
526
- method: 'PUT',
527
- version: [],
528
- parents: [],
529
- body: 'xyz'
530
- })
531
- if (!r.ok) throw 'got: ' + r.statusCode
532
-
533
- var r = await braid_fetch(`/${key}`)
534
- return r.status
535
- },
536
- '404'
537
- )
538
-
539
- runTest(
540
- "test that subscribe sends no version if parents is big enough.",
541
- async () => {
542
- var key = 'test-' + Math.random().toString(36).slice(2)
543
-
544
- var r = await braid_fetch(`/${key}`, {
545
- method: 'PUT',
546
- version: ['3'],
547
- parents: [],
548
- body: 'xyz'
549
- })
550
- if (!r.ok) throw 'got: ' + r.statusCode
551
-
552
- var a = new AbortController()
553
- var r = await braid_fetch(`/${key}`, {
554
- signal: a.signal,
555
- subscribe: true,
556
- parents: ['3']
557
- })
558
-
559
- var received_update = false
560
- var promise_a = new Promise(done => {
561
- r.subscribe(async (update) => {
562
- received_update = true
563
- done()
564
- })
565
- })
566
-
567
- var promise_b = new Promise(done => setTimeout(done, 300))
568
-
569
- await Promise.race([promise_a, promise_b])
570
- a.abort()
571
-
572
- return '' + received_update
573
- },
574
- 'false'
575
- )
576
-
577
- runTest(
578
- "test that subscribe sends 404 if there is no file.",
579
- async () => {
580
- var key = 'test-' + Math.random().toString(36).slice(2)
581
-
582
- var r = await braid_fetch(`/${key}`, {
583
- subscribe: true,
584
- })
585
- return r.status
586
- },
587
- '404'
588
- )
589
-
590
- runTest(
591
- "test that we get 404 when file doesn't exist, on GET without subscribe.",
592
- async () => {
593
- var key = 'test-' + Math.random().toString(36).slice(2)
594
-
595
- var r = await braid_fetch(`/${key}`)
596
-
597
- return `${r.status}`
598
- },
599
- '404'
600
- )
601
-
602
- runTest(
603
- "test second subscription to same key",
604
- async () => {
605
- var key = 'test-' + Math.random().toString(36).slice(2)
606
-
607
- var r = await braid_fetch(`/${key}`, {
608
- method: 'PUT',
609
- version: ['3'],
610
- parents: [],
611
- body: 'xyz'
612
- })
613
- if (!r.ok) throw 'got: ' + r.statusCode
614
-
615
- var a = new AbortController()
616
- var r = await braid_fetch(`/${key}`, {
617
- signal: a.signal,
618
- subscribe: true,
619
- parents: ['3']
620
- })
621
-
622
- var a2 = new AbortController()
623
- var r2 = await braid_fetch(`/${key}`, {
624
- signal: a2.signal,
625
- subscribe: true,
626
- parents: ['2']
627
- })
628
-
629
- var body = await new Promise(done => {
630
- r2.subscribe((update) => done(update.body_text))
631
- })
632
-
633
- a.abort()
634
- a2.abort()
635
- return body
636
- },
637
- 'xyz'
638
- )
639
-
640
- runTest(
641
- "test PUTing when server already has blob",
642
- async () => {
643
- var key = 'test-' + Math.random().toString(36).slice(2)
644
-
645
- var r = await braid_fetch(`/${key}`, {
646
- method: 'PUT',
647
- version: ['3'],
648
- parents: [],
649
- body: 'xyz'
650
- })
651
- if (!r.ok) throw 'got: ' + r.statusCode
652
-
653
- var r = await braid_fetch(`/${key}`, {
654
- method: 'PUT',
655
- version: ['4'],
656
- parents: [],
657
- body: 'XYZ'
658
- })
659
- if (!r.ok) throw 'got: ' + r.statusCode
660
-
661
- return await (await braid_fetch(`/${key}`)).text()
662
- },
663
- 'XYZ'
664
- )
665
-
666
- runTest(
667
- "test PUTing when server has newer version",
668
- async () => {
669
- var key = 'test-' + Math.random().toString(36).slice(2)
670
-
671
- var r = await braid_fetch(`/${key}`, {
672
- method: 'PUT',
673
- version: ['3'],
674
- parents: [],
675
- body: 'xyz'
676
- })
677
- if (!r.ok) throw 'got: ' + r.statusCode
678
-
679
- var r = await braid_fetch(`/${key}`, {
680
- method: 'PUT',
681
- version: ['2'],
682
- parents: [],
683
- body: 'XYZ'
684
- })
685
- if (!r.ok) throw 'got: ' + r.statusCode
686
-
687
- return r.headers.get('version')
688
- },
689
- '"3"'
690
- )
691
-
692
- runTest(
693
- "test that version we get back is the version we set",
694
- async () => {
695
- var key = 'test-' + Math.random().toString(36).slice(2)
696
-
697
- var r = await braid_fetch(`/${key}`, {
698
- method: 'PUT',
699
- version: ['1760077018883'],
700
- parents: [],
701
- body: 'xyz'
702
- })
703
- if (!r.ok) throw 'got: ' + r.statusCode
704
-
705
- var r = await braid_fetch(`/${key}`)
706
- return r.headers.get('version')
707
- },
708
- '"1760077018883"'
709
- )
710
-
711
- runTest(
712
- "test that subscribe gets back editable:true.",
713
- async () => {
714
- var key = 'test-' + Math.random().toString(36).slice(2)
715
-
716
- var r = await braid_fetch(`/${key}`, {
717
- method: 'PUT',
718
- body: 'xyz'
719
- })
720
- if (!r.ok) throw 'got: ' + r.statusCode
721
-
722
- var a = new AbortController()
723
- var r = await braid_fetch(`/${key}`, {
724
- signal: a.signal,
725
- subscribe: true,
726
- parents: ['3']
727
- })
728
-
729
- var ret = r.headers.get('editable')
730
- a.abort()
731
- return '' + ret
732
- },
733
- 'true'
734
- )
735
-
736
- runTest(
737
- "test that we can override editable on the server.",
738
- async () => {
739
- var r1 = await braid_fetch(`/eval`, {
740
- method: 'POST',
741
- subscribe: true,
742
- body: `void (async () => {
743
- req.method = 'GET'
744
- res.setHeader('editable', 'false')
745
- braid_blob.serve(req, res, {key: ':test'})
746
- })()`
747
- })
748
- return r1.headers.get('editable')
749
-
750
- },
751
- 'false'
752
- )
104
+ // Load and run all tests from the shared tests.js file
105
+ defineTests(runTest, braid_fetch)
753
106
 
754
107
  </script>