github.com/storacha/go-ucanto@v0.7.2/did/did_test.go (about) 1 package did 2 3 import ( 4 "encoding/json" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestParseDIDKey(t *testing.T) { 11 str := "did:key:z6Mkod5Jr3yd5SC7UDueqK4dAAw5xYJYjksy722tA9Boxc4z" 12 d, err := Parse(str) 13 if err != nil { 14 t.Fatalf("%v", err) 15 } 16 if d.String() != str { 17 t.Fatalf("expected %v to equal %v", d.String(), str) 18 } 19 } 20 21 func TestDecodeDIDKey(t *testing.T) { 22 str := "did:key:z6Mkod5Jr3yd5SC7UDueqK4dAAw5xYJYjksy722tA9Boxc4z" 23 d0, err := Parse(str) 24 if err != nil { 25 t.Fatalf("%v", err) 26 } 27 d1, err := Decode(d0.Bytes()) 28 if err != nil { 29 t.Fatalf("%v", err) 30 } 31 if d1.String() != str { 32 t.Fatalf("expected %v to equal %v", d1.String(), str) 33 } 34 } 35 36 func TestParseDIDWeb(t *testing.T) { 37 str := "did:web:up.web3.storage" 38 d, err := Parse(str) 39 if err != nil { 40 t.Fatalf("%v", err) 41 } 42 if d.String() != str { 43 t.Fatalf("expected %v to equal %v", d.String(), str) 44 } 45 } 46 47 func TestDecodeDIDWeb(t *testing.T) { 48 str := "did:web:up.web3.storage" 49 d0, err := Parse(str) 50 if err != nil { 51 t.Fatalf("%v", err) 52 } 53 d1, err := Decode(d0.Bytes()) 54 if err != nil { 55 t.Fatalf("%v", err) 56 } 57 if d1.String() != str { 58 t.Fatalf("expected %v to equal %v", d1.String(), str) 59 } 60 } 61 62 func TestEquivalence(t *testing.T) { 63 u0 := DID{} 64 u1 := Undef 65 if u0 != u1 { 66 t.Fatalf("undef DID not equivalent") 67 } 68 69 d0, err := Parse("did:key:z6Mkod5Jr3yd5SC7UDueqK4dAAw5xYJYjksy722tA9Boxc4z") 70 if err != nil { 71 t.Fatalf("%v", err) 72 } 73 74 d1, err := Parse("did:key:z6Mkod5Jr3yd5SC7UDueqK4dAAw5xYJYjksy722tA9Boxc4z") 75 if err != nil { 76 t.Fatalf("%v", err) 77 } 78 79 if d0 != d1 { 80 t.Fatalf("two equivalent DID not equivalent") 81 } 82 } 83 84 func TestRoundtripJSON(t *testing.T) { 85 id, err := Parse("did:key:z6Mkod5Jr3yd5SC7UDueqK4dAAw5xYJYjksy722tA9Boxc4z") 86 require.NoError(t, err) 87 88 type Object struct { 89 ID DID `json:"id"` 90 UndefID DID `json:"undef_id"` 91 OptionalPresentID *DID `json:"optional_present_id"` 92 OptionalAbsentID *DID `json:"optional_absent_id"` 93 } 94 obj := Object{ 95 ID: id, 96 UndefID: Undef, 97 OptionalPresentID: &id, 98 OptionalAbsentID: nil, 99 } 100 101 data, err := json.Marshal(obj) 102 require.NoError(t, err) 103 104 t.Log(string(data)) 105 106 var out Object 107 err = json.Unmarshal(data, &out) 108 require.NoError(t, err) 109 110 require.Equal(t, obj.ID, out.ID) 111 require.Equal(t, obj.UndefID, out.UndefID) 112 require.Equal(t, obj.OptionalPresentID.String(), out.OptionalPresentID.String()) 113 require.Nil(t, out.OptionalAbsentID) 114 }