UNPKG

@microsoft/useragent-sdk

Version:

SDK for building decentralized identity wallets and enterprise agents.

126 lines (115 loc) 5.49 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License in the project root for license information. *--------------------------------------------------------------------------------------------*/ import IdentifierDocument from '../src/IdentifierDocument'; describe('IdentifierDocument [Standards Compliance]', () => { it('should serialize expected JSON-LD excluding empty properties', async () => { const document = { id: 'did:ion:identifier', created: '2019-01-25T01:08:44.732Z', publicKeys: [ { id: '#master', type: 'RsaVerificationKey2018', publicKeyJwk: { kty: 'RSA', kid: '#master', keyOps: [ 'sign', 'verify' ], n: 'vdpHn7kNq42UMC1W8bwxgE7K...', e: 'AQAB' } } ], authentication: [] }; const identifierDocument = new IdentifierDocument(document); const serializedDocument = JSON.stringify(identifierDocument); /* tslint:disable:max-line-length */ expect(serializedDocument).toEqual('{"id":"did:ion:identifier","created":"2019-01-25T01:08:44.732Z","@context":"https://w3id.org/did/v1","publicKey":[{"id":"#master","type":"RsaVerificationKey2018","publicKeyJwk":{"kty":"RSA","kid":"#master","keyOps":["sign","verify"],"n":"vdpHn7kNq42UMC1W8bwxgE7K...","e":"AQAB"}}]}'); }); // tslint:disable-next-line:mocha-no-side-effect-code it('should serialize expected JSON-LD', async () => { const document = { id: 'did:ion:identifier', created: '2019-01-25T01:08:44.732Z', publicKeys: [ { id: '#master', type: 'RsaVerificationKey2018', publicKeyJwk: { kty: 'RSA', kid: '#master', keyOps: [ 'sign', 'verify' ], n: 'vdpHn7kNq42UMC1W8bwxgE7K...', e: 'AQAB' } } ], authentication: [{ type: 'RsaVerificationKey2018', publicKeyReference: '#master' }], service: [{ type: 'test', publicKey: 'did:bar:456#key-1', serviceEndpoint: { '@context': 'test', '@type': 'HostServiceEndpoint', locations: ['test.com'] } }] }; const service = '"service":[{"type":"test","publicKey":"did:bar:456#key-1","serviceEndpoint":{"locations":["test.com"],"@context":"test","@type":"HostServiceEndpoint"}}]'; const identifierDocument = new IdentifierDocument(document); const serializedDocument = JSON.stringify(identifierDocument); expect(serializedDocument).toEqual(`{"id":"did:ion:identifier","created":"2019-01-25T01:08:44.732Z","@context":"https://w3id.org/did/v1","authentication":[{"type":"RsaVerificationKey2018","publicKeyReference":"#master"}],${service},"publicKey":[{"id":"#master","type":"RsaVerificationKey2018","publicKeyJwk":{"kty":"RSA","kid":"#master","keyOps":["sign","verify"],"n":"vdpHn7kNq42UMC1W8bwxgE7K...","e":"AQAB"}}]}`); delete identifierDocument.publicKeys; expect(JSON.stringify(identifierDocument)).toEqual(`{"id":"did:ion:identifier","created":"2019-01-25T01:08:44.732Z","@context":"https://w3id.org/did/v1","authentication":[{"type":"RsaVerificationKey2018","publicKeyReference":"#master"}],${service}}`); }); // tslint:disable-next-line:mocha-no-side-effect-code it('should deserialize JSON-LD', async () => { const document = { id: 'did:ion:identifier', created: '2019-01-25T01:08:44.732Z', publicKeys: [ { id: '#master', type: 'RsaVerificationKey2018', publicKeyJwk: { kty: 'RSA', kid: '#master', keyOps: [ 'sign', 'verify' ], n: 'vdpHn7kNq42UMC1W8bwxgE7K...', e: 'AQAB' } } ], authenticationReferences: [{ type: 'RsaVerificationKey2018', publicKeyReference: '#master' }], serviceReferences: [ { type: 'test', publicKey: 'did:bar:456#key-1', serviceEndpoint: { context: 'test', type: 'HostServiceEndpoint', locations: ['test.com'] } } ] }; const service = '"service":[{"type":"test","publicKey":"did:bar:456#key-1","serviceEndpoint":{"@context":"test","@type":"HostServiceEndpoint","locations":["test.com"]}}]'; const serializedDocument = `{${service},"authentication":[{"type":"RsaVerificationKey2018","publicKeyReference":"#master"}],"id":"did:ion:identifier","created":"2019-01-25T01:08:44.732Z","@context":"https://w3id.org/did/v1","publicKey":[{"id":"#master","type":"RsaVerificationKey2018","publicKeyJwk":{"kty":"RSA","kid":"#master","keyOps":["sign","verify"],"n":"vdpHn7kNq42UMC1W8bwxgE7K...","e":"AQAB"}}]}`; const deserializedDocument = IdentifierDocument.fromJSON(JSON.parse(serializedDocument)); console.log(deserializedDocument); expect(document.id).toBe(deserializedDocument.id); expect(1).toBe(deserializedDocument.publicKeys.length); expect(document.authenticationReferences).toEqual(deserializedDocument.authenticationReferences); }); });