diff --git a/test/EcdsaMultikey.spec.js b/test/EcdsaMultikey.spec.js index cec5325..9cd13ae 100644 --- a/test/EcdsaMultikey.spec.js +++ b/test/EcdsaMultikey.spec.js @@ -4,9 +4,7 @@ import * as base58 from 'base58-universal'; import * as EcdsaMultikey from '../lib/index.js'; import chai from 'chai'; -import {getNamedCurveFromPublicMultikey} from '../lib/helpers.js'; import { - mockKey, mockKeyEcdsaSecp256, mockKeyEcdsaSecp384, mockKeyEcdsaSecp521, @@ -53,16 +51,6 @@ describe('EcdsaMultikey', () => { }); describe('from', () => { - it('should auto-set key.id based on controller', async () => { - const {publicKeyMultibase} = mockKey; - - const keyPair = await EcdsaMultikey.from(mockKey); - - _ensurePublicKeyEncoding({keyPair, publicKeyMultibase}); - expect(keyPair.id).to.equal( - 'did:example:1234#zDnaeSMnptAKpH4AD41vTkwzjznW7yNetdRh9FJn8bJsbsdbw' - ); - }); it('should error if publicKeyMultibase property is missing', async () => { let error; @@ -257,15 +245,3 @@ describe('EcdsaMultikey', () => { }); }); }); - -function _ensurePublicKeyEncoding({keyPair, publicKeyMultibase}) { - keyPair.publicKeyMultibase.startsWith('z').should.be.true; - publicKeyMultibase.startsWith('z').should.be.true; - const decodedPubkey = base58.decode(publicKeyMultibase.slice(1)); - const ecdsaCurve = getNamedCurveFromPublicMultikey({ - publicMultikey: decodedPubkey - }); - ecdsaCurve.should.equal('P-256'); - const encodedPubkey = 'z' + base58.encode(decodedPubkey); - encodedPubkey.should.equal(keyPair.publicKeyMultibase); -} diff --git a/test/assertions.js b/test/assertions.js index eec3b7d..1dd575f 100644 --- a/test/assertions.js +++ b/test/assertions.js @@ -8,6 +8,7 @@ import {stringToUint8Array} from './text-encoder.js'; import {CryptoKey} from '../lib/crypto.js'; import {webcrypto} from '../lib/crypto.js'; import {exportKeyPair} from '../lib/serialize.js'; +import {getNamedCurveFromPublicMultikey} from '../lib/helpers.js'; chai.should(); const {expect} = chai; @@ -168,3 +169,24 @@ export function testExport({curve}) { expect(expectedSecretKey).to.deep.equal(secretKey); }); } + +export function testFrom({serializedKeyPair, id, keyType}) { + it('should auto-set key.id based on controller', async () => { + const {publicKeyMultibase} = serializedKeyPair; + const keyPair = await EcdsaMultikey.from(serializedKeyPair); + _ensurePublicKeyEncoding({keyPair, keyType, publicKeyMultibase}); + expect(keyPair.id).to.equal(id); + }); +} + +function _ensurePublicKeyEncoding({keyPair, publicKeyMultibase, keyType}) { + keyPair.publicKeyMultibase.startsWith('z').should.be.true; + publicKeyMultibase.startsWith('z').should.be.true; + const decodedPubkey = base58.decode(publicKeyMultibase.slice(1)); + const ecdsaCurve = getNamedCurveFromPublicMultikey({ + publicMultikey: decodedPubkey + }); + ecdsaCurve.should.equal(keyType); + const encodedPubkey = 'z' + base58.encode(decodedPubkey); + encodedPubkey.should.equal(keyPair.publicKeyMultibase); +} diff --git a/test/multikey.spec.js b/test/multikey.spec.js index 6b9ceee..88e7d46 100644 --- a/test/multikey.spec.js +++ b/test/multikey.spec.js @@ -6,6 +6,7 @@ import {multikeys} from './mock-data.js'; import { testAlgorithm, testExport, + testFrom, testGenerate, testSignVerify } from './assertions.js'; @@ -30,6 +31,9 @@ describe('ecdsa-multikey', function() { describe('sign and verify', function() { testSignVerify({id, serializedKeyPair, keyType}); }); + describe('from', function() { + testFrom({keyType, id, serializedKeyPair}); + }); }); } });