This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

core / knotserver / xrpc / resolve_repo_did_test.go
2.5 kB 83 lines
1package xrpc 2 3import ( 4 "os" 5 "path/filepath" 6 "testing" 7) 8 9const ( 10 resolveOwnerDid = "did:plc:akshay" 11 resolveRepoDid = "did:plc:squid" 12 resolveStoredKey = "squidbot" 13) 14 15func setupResolveRepo(t *testing.T) (*Xrpc, string) { 16 t.Helper() 17 x := newTestXrpc(t) 18 scanPath := t.TempDir() 19 x.Config.Repo.ScanPath = scanPath 20 21 if err := x.Db.StoreRepoKey(resolveRepoDid, []byte("k256"), resolveOwnerDid, resolveStoredKey); err != nil { 22 t.Fatalf("StoreRepoKey: %v", err) 23 } 24 if err := os.MkdirAll(filepath.Join(scanPath, resolveRepoDid), 0o755); err != nil { 25 t.Fatalf("mkdir repo dir: %v", err) 26 } 27 return x, scanPath 28} 29 30func TestResolveRepoDID_PrefersRepoOverName(t *testing.T) { 31 x, scanPath := setupResolveRepo(t) 32 33 repo := resolveRepoDid 34 gotDid, gotPath, err := x.resolveRepoDID(&repo, resolveOwnerDid, "SquidBot") 35 if err != nil { 36 t.Fatalf("resolveRepoDID with repo set: %v", err) 37 } 38 if gotDid != resolveRepoDid { 39 t.Errorf("repoDid = %q, want %q", gotDid, resolveRepoDid) 40 } 41 if want := filepath.Join(scanPath, resolveRepoDid); gotPath != want { 42 t.Errorf("repoPath = %q, want %q", gotPath, want) 43 } 44} 45 46func TestResolveRepoDID_RejectsMalformedRepoDid(t *testing.T) { 47 x, _ := setupResolveRepo(t) 48 49 malformed := "not-a-did" 50 if _, _, err := x.resolveRepoDID(&malformed, resolveOwnerDid, resolveStoredKey); err == nil { 51 t.Fatal("resolveRepoDID with malformed repo DID: got nil error, want failure") 52 } 53} 54 55func TestResolveRepoDID_UnknownRepoDidDoesNotFallBackToName(t *testing.T) { 56 x, _ := setupResolveRepo(t) 57 58 unknown := "did:plc:limpet" 59 if _, _, err := x.resolveRepoDID(&unknown, resolveOwnerDid, resolveStoredKey); err == nil { 60 t.Fatal("resolveRepoDID with unknown repo DID and resolvable name: got nil error, want failure") 61 } 62} 63 64func TestResolveRepoDID_NameFallbackIsCaseSensitive(t *testing.T) { 65 x, _ := setupResolveRepo(t) 66 67 if _, _, err := x.resolveRepoDID(nil, resolveOwnerDid, "SquidBot"); err == nil { 68 t.Fatal("resolveRepoDID with mismatched-case name: got nil error, want failure") 69 } 70 71 empty := "" 72 if _, _, err := x.resolveRepoDID(&empty, resolveOwnerDid, "SquidBot"); err == nil { 73 t.Fatal("resolveRepoDID with empty repo and mismatched-case name: got nil error, want failure") 74 } 75 76 gotDid, _, err := x.resolveRepoDID(nil, resolveOwnerDid, resolveStoredKey) 77 if err != nil { 78 t.Fatalf("resolveRepoDID with exact-case name: %v", err) 79 } 80 if gotDid != resolveRepoDid { 81 t.Errorf("repoDid = %q, want %q", gotDid, resolveRepoDid) 82 } 83}