fix: Export the IDP type in both the function definition and the function return values.

This commit is contained in:
Hayden Young 2023-09-04 17:03:10 +01:00
parent a25eb3aba6
commit a552bde0b0
5 changed files with 65 additions and 5 deletions

View File

@ -85,5 +85,6 @@ const PublicKeyIdentityProvider = ({ keystore }) => () => {
}
PublicKeyIdentityProvider.verifyIdentity = verifyIdentity
PublicKeyIdentityProvider.type = type
export default PublicKeyIdentityProvider

5
test/fixtures/providers/bad.js vendored Normal file
View File

@ -0,0 +1,5 @@
const BadIdentityProvider = () => () => {
}
export default BadIdentityProvider

20
test/fixtures/providers/custom.js vendored Normal file
View File

@ -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

20
test/fixtures/providers/fake.js vendored Normal file
View File

@ -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

View File

@ -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\'')
})
})
})