diff --git a/src/identities/providers/publickey.js b/src/identities/providers/publickey.js index 789c6c0..e849a2c 100644 --- a/src/identities/providers/publickey.js +++ b/src/identities/providers/publickey.js @@ -85,5 +85,6 @@ const PublicKeyIdentityProvider = ({ keystore }) => () => { } PublicKeyIdentityProvider.verifyIdentity = verifyIdentity +PublicKeyIdentityProvider.type = type export default PublicKeyIdentityProvider diff --git a/test/fixtures/providers/bad.js b/test/fixtures/providers/bad.js new file mode 100644 index 0000000..2697f09 --- /dev/null +++ b/test/fixtures/providers/bad.js @@ -0,0 +1,5 @@ +const BadIdentityProvider = () => () => { + +} + +export default BadIdentityProvider \ No newline at end of file diff --git a/test/fixtures/providers/custom.js b/test/fixtures/providers/custom.js new file mode 100644 index 0000000..5c790fb --- /dev/null +++ b/test/fixtures/providers/custom.js @@ -0,0 +1,20 @@ +const type = 'custom' + +const verifyIdentity = async (data) => { return true } + +const CustomIdentityProvider = () => () => { + const getId = () => { return 'custom' } + + const signIdentity = (data) => { return `signature '${data}'` } + + return { + getId, + signIdentity, + type + } +} + +CustomIdentityProvider.verifyIdentity = verifyIdentity +CustomIdentityProvider.type = type + +export default CustomIdentityProvider diff --git a/test/fixtures/providers/fake.js b/test/fixtures/providers/fake.js new file mode 100644 index 0000000..ffb119d --- /dev/null +++ b/test/fixtures/providers/fake.js @@ -0,0 +1,20 @@ +const type = 'fake' + +const verifyIdentity = async (data) => { return false } + +const FakeIdentityProvider = () => () => { + const getId = () => { return 'pubKey' } + + const signIdentity = (data) => { return `false signature '${data}'` } + + return { + getId, + signIdentity, + type + } +} + +FakeIdentityProvider.verifyIdentity = verifyIdentity +FakeIdentityProvider.type = type + +export default FakeIdentityProvider diff --git a/test/identities/identities.test.js b/test/identities/identities.test.js index 9c756a7..23ca039 100644 --- a/test/identities/identities.test.js +++ b/test/identities/identities.test.js @@ -3,10 +3,11 @@ import rmrf from 'rimraf' import { copy } from 'fs-extra' import { toString as uint8ArrayToString } from 'uint8arrays/to-string' import KeyStore, { signMessage, verifyMessage } from '../../src/key-store.js' -import { Identities, addIdentityProvider, getIdentityProvider, Identity } from '../../src/identities/index.js' +import { Identities, addIdentityProvider, getIdentityProvider, Identity, PublicKeyIdentityProvider } from '../../src/identities/index.js' import testKeysPath from '../fixtures/test-keys-path.js' -import { CustomIdentityProvider, FakeIdentityProvider } from '../fixtures/providers.js' -import * as PublicKeyIdentityProvider from '../../src/identities/providers/publickey.js' +import { default as CustomIdentityProvider } from '../fixtures/providers/custom.js' +import { default as FakeIdentityProvider } from '../fixtures/providers/fake.js' +import { default as BadIdentityProvider } from '../fixtures/providers/bad.js' const type = 'publickey' const keysPath = './testkeys' @@ -69,7 +70,8 @@ describe('Identities', function () { it('Passes in an identity provider', async () => { const keystore = await KeyStore({ path: keysPath }) identities = await Identities({ keystore }) - identity = await identities.createIdentity({ id, provider: PublicKeyIdentityProvider.default({ keystore }) }) + const provider = PublicKeyIdentityProvider({ keystore }) + identity = await identities.createIdentity({ id, provider }) const result = await identities.getIdentity(identity.hash) assert.strictEqual(result.id, identity.id) assert.strictEqual(result.hash, identity.hash) @@ -230,7 +232,7 @@ describe('Identities', function () { it('false signature doesn\'t verify', async () => { addIdentityProvider(FakeIdentityProvider) - identity = await identities.createIdentity({ provider: FakeIdentityProvider.default() }) + identity = await identities.createIdentity({ provider: FakeIdentityProvider() }) const verified = await identities.verifyIdentity(identity) assert.strictEqual(verified, false) }) @@ -346,5 +348,17 @@ describe('Identities', function () { assert.deepStrictEqual(getIdentityProvider('custom'), CustomIdentityProvider) }) + + it('cannot add an identity provider with missing type', () => { + let err + + try { + addIdentityProvider(BadIdentityProvider) + } catch (e) { + err = e.toString() + } + + assert.strictEqual(err, 'Error: Given IdentityProvider doesn\'t have a field \'type\'') + }) }) })