@microsoft/useragent-sdk
Version:
SDK for building decentralized identity wallets and enterprise agents.
118 lines • 6.52 kB
JavaScript
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const IdentifierDocument_1 = require("../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_1.default(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_1.default(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_1.default.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);
});
});
//# sourceMappingURL=IdentifierDocument.standards.spec.js.map