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  }