a love letter to tangled (android, iOS, and a search API)
1package backfill
2
3import (
4 "os"
5 "path/filepath"
6 "testing"
7)
8
9func TestParseSeedFile(t *testing.T) {
10 dir := t.TempDir()
11 path := filepath.Join(dir, "seeds.txt")
12 content := "\n# comment\ndid:plc:one\nalice.tangled.sh\ndid:plc:one\n\n"
13 if err := os.WriteFile(path, []byte(content), 0o644); err != nil {
14 t.Fatalf("write seed file: %v", err)
15 }
16
17 entries, err := parseSeedFile(path)
18 if err != nil {
19 t.Fatalf("parse seed file: %v", err)
20 }
21 if len(entries) != 2 {
22 t.Fatalf("entries length: got %d want 2", len(entries))
23 }
24 if !entries[0].isDID {
25 t.Fatalf("first entry should be did")
26 }
27 if entries[1].isDID {
28 t.Fatalf("second entry should be handle")
29 }
30}
31
32func TestParseSeedInput_FilePath(t *testing.T) {
33 dir := t.TempDir()
34 path := filepath.Join(dir, "seeds.txt")
35 content := "did:plc:one\nhandle.example\n"
36 if err := os.WriteFile(path, []byte(content), 0o644); err != nil {
37 t.Fatalf("write seed file: %v", err)
38 }
39
40 entries, err := parseSeedInput(path)
41 if err != nil {
42 t.Fatalf("parse seed input from file: %v", err)
43 }
44 if len(entries) != 2 {
45 t.Fatalf("entries length: got %d want 2", len(entries))
46 }
47}
48
49func TestParseSeedInput_CommaSeparated(t *testing.T) {
50 entries, err := parseSeedInput("anirudh.fi, atprotocol.dev, did:plc:abc")
51 if err != nil {
52 t.Fatalf("parse comma-separated seeds: %v", err)
53 }
54 if len(entries) != 3 {
55 t.Fatalf("entries length: got %d want 3", len(entries))
56 }
57 if !entries[2].isDID {
58 t.Fatalf("expected third entry to be did")
59 }
60}
61
62func TestParseSeedInput_SingleInline(t *testing.T) {
63 entries, err := parseSeedInput("tangled.org")
64 if err != nil {
65 t.Fatalf("parse single inline seed: %v", err)
66 }
67 if len(entries) != 1 {
68 t.Fatalf("entries length: got %d want 1", len(entries))
69 }
70 if entries[0].raw != "tangled.org" {
71 t.Fatalf("entry: got %q", entries[0].raw)
72 }
73}