jsonld-signatures-merkleproof2019
Version:
A jsonld signature implementation to support MerkleProof2019 verification in Verifiable Credential context
59 lines (53 loc) • 2.26 kB
text/typescript
import { describe, it, expect } from 'vitest';
import sinon from 'sinon';
import jsonld from 'jsonld';
import JsonLdError from 'jsonld/lib/JsonLdError';
import blockcertsV3Fixture, { documentHash } from '../fixtures/testnet-v3-did';
import blockcertsV3CustomContextFixture, { blockcertsV3CustomContextHash } from '../fixtures/testnet-v3-custom-context';
import computeLocalHash from '../../src/inspectors/computeLocalHash';
describe('computeLocalHash test suite', function () {
describe('given it receives a document', function () {
it('should return the SHA-256 hashed version', async function () {
const output = await computeLocalHash(blockcertsV3Fixture);
expect(output).toBe(documentHash);
});
});
describe('given it is provided with a documentLoader', function () {
it('should call the documentLoader', async function () {
const stubLoader = sinon.stub().resolves(null);
await computeLocalHash(blockcertsV3Fixture, null, stubLoader);
expect(stubLoader.callCount > 0).toBe(true);
});
});
describe('given the normalization of the document fails', function () {
it('should reject with an error', async function () {
const mockJsonLdError: JsonLdError = {
message: 'Failed',
name: 'jsonld.InvalidUrl',
details: {
code: 'loading document failed',
url: 'https://blockcerts.org/credentials/v1',
httpStatusCode: 404
}
};
const normalizeStub: sinon.SinonStub = sinon.stub((jsonld as any), 'normalize')
.callsFake(
async function (fakeDoc: any, fakeArgs: any) {
throw new JsonLdError(mockJsonLdError.message, mockJsonLdError.name, mockJsonLdError.details);
}
);
try {
await computeLocalHash(blockcertsV3Fixture);
} catch (e) {
expect(e.message).toBe('Failed JSON-LD normalization');
}
normalizeStub.restore();
});
});
describe('given the document has a custom context', function () {
it('should normalize and hash the document as expected', async function () {
const output = await computeLocalHash(blockcertsV3CustomContextFixture);
expect(output).toBe(blockcertsV3CustomContextHash);
});
});
});