|
1 | 1 | package did |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "encoding/json" |
4 | 5 | "testing" |
| 6 | + |
| 7 | + "github.com/stretchr/testify/require" |
5 | 8 | ) |
6 | 9 |
|
7 | 10 | func TestParseDIDKey(t *testing.T) { |
@@ -77,3 +80,35 @@ func TestEquivalence(t *testing.T) { |
77 | 80 | t.Fatalf("two equivalent DID not equivalent") |
78 | 81 | } |
79 | 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 | +} |
0 commit comments