64 lines
2.4 KiB
Go
64 lines
2.4 KiB
Go
package document
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
_ "github.com/INFURA/go-did/methods/did-key"
|
|
"github.com/INFURA/go-did/verifications/ed25519"
|
|
"github.com/INFURA/go-did/verifications/x25519"
|
|
)
|
|
|
|
func TestRoundTrip(t *testing.T) {
|
|
strDoc := `
|
|
{
|
|
"@context": [
|
|
"https://www.w3.org/ns/did/v1",
|
|
"https://w3id.org/security/suites/ed25519-2020/v1",
|
|
"https://w3id.org/security/suites/x25519-2020/v1"
|
|
],
|
|
"id": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
|
|
"verificationMethod": [{
|
|
"id": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
|
|
"type": "Ed25519VerificationKey2020",
|
|
"controller": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
|
|
"publicKeyMultibase": "z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
|
|
}],
|
|
"authentication": [
|
|
"did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
|
|
],
|
|
"assertionMethod": [
|
|
"did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
|
|
],
|
|
"capabilityDelegation": [
|
|
"did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
|
|
],
|
|
"capabilityInvocation": [
|
|
"did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
|
|
],
|
|
"keyAgreement": [{
|
|
"id": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6LSj72tK8brWgZja8NLRwPigth2T9QRiG1uH9oKZuKjdh9p",
|
|
"type": "X25519KeyAgreementKey2020",
|
|
"controller": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
|
|
"publicKeyMultibase": "z6LSj72tK8brWgZja8NLRwPigth2T9QRiG1uH9oKZuKjdh9p"
|
|
}]
|
|
}
|
|
`
|
|
doc, err := FromJsonBytes([]byte(strDoc))
|
|
require.NoError(t, err)
|
|
|
|
// basic testing
|
|
require.Equal(t, "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK", doc.ID())
|
|
require.Equal(t, ed25519vm.Type, doc.Authentication()[0].Type())
|
|
require.Equal(t, ed25519vm.Type, doc.Assertion()[0].Type())
|
|
require.Equal(t, x25519vm.Type, doc.KeyAgreement()[0].Type())
|
|
require.Equal(t, ed25519vm.Type, doc.CapabilityInvocation()[0].Type())
|
|
require.Equal(t, ed25519vm.Type, doc.CapabilityDelegation()[0].Type())
|
|
|
|
roundtrip, err := json.Marshal(doc)
|
|
require.NoError(t, err)
|
|
require.JSONEq(t, strDoc, string(roundtrip))
|
|
}
|