mirror of
https://github.com/orbitdb/orbitdb.git
synced 2025-03-30 15:08:28 +00:00
test: Check for valid IDP when creating an identity.
This commit is contained in:
parent
a552bde0b0
commit
cc2ee0fe2a
@ -74,6 +74,11 @@ const Identities = async ({ keystore, path, storage, ipfs } = {}) => {
|
||||
const DefaultIdentityProviderType = getIdentityProvider('publickey')
|
||||
const IdentityProvider = options.provider || DefaultIdentityProviderType({ keystore })
|
||||
const identityProvider = IdentityProvider()
|
||||
|
||||
if (!getIdentityProvider(identityProvider.type)) {
|
||||
throw new Error('Identity provider is unknown. Use addIdentityProvider(provider) to register the identity provider')
|
||||
}
|
||||
|
||||
const id = await identityProvider.getId(options)
|
||||
const privateKey = await keystore.getKey(id) || await keystore.createKey(id)
|
||||
const publicKey = keystore.getPublic(privateKey)
|
||||
|
@ -35,6 +35,10 @@ const addIdentityProvider = (IdentityProvider) => {
|
||||
typeof IdentityProvider.type !== 'string') {
|
||||
throw new Error('Given IdentityProvider doesn\'t have a field \'type\'')
|
||||
}
|
||||
|
||||
if (!IdentityProvider.verifyIdentity) {
|
||||
throw new Error('Given IdentityProvider doesn\'t have a function \'verifyIdentity\'')
|
||||
}
|
||||
|
||||
if (identityProviders[IdentityProvider.type]) {
|
||||
throw new Error(`Type already added: ${IdentityProvider.type}`)
|
||||
|
5
test/fixtures/providers/bad.js
vendored
5
test/fixtures/providers/bad.js
vendored
@ -1,5 +0,0 @@
|
||||
const BadIdentityProvider = () => () => {
|
||||
|
||||
}
|
||||
|
||||
export default BadIdentityProvider
|
5
test/fixtures/providers/no-type.js
vendored
Normal file
5
test/fixtures/providers/no-type.js
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
const NoTypeIdentityProvider = () => () => {
|
||||
|
||||
}
|
||||
|
||||
export default NoTypeIdentityProvider
|
11
test/fixtures/providers/no-verify-identity.js
vendored
Normal file
11
test/fixtures/providers/no-verify-identity.js
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
const type = 'no-verify-identity'
|
||||
|
||||
const NoVerifyIdentityIdentityProvider = () => () => {
|
||||
return {
|
||||
type
|
||||
}
|
||||
}
|
||||
|
||||
NoVerifyIdentityIdentityProvider.type = type
|
||||
|
||||
export default NoVerifyIdentityIdentityProvider
|
@ -7,7 +7,8 @@ import { Identities, addIdentityProvider, getIdentityProvider, Identity, PublicK
|
||||
import testKeysPath from '../fixtures/test-keys-path.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'
|
||||
import { default as NoTypeIdentityProvider } from '../fixtures/providers/no-type.js'
|
||||
import { default as NoVerifyIdentityIdentityProvider } from '../fixtures/providers/no-verify-identity.js'
|
||||
|
||||
const type = 'publickey'
|
||||
const keysPath = './testkeys'
|
||||
@ -353,12 +354,24 @@ describe('Identities', function () {
|
||||
let err
|
||||
|
||||
try {
|
||||
addIdentityProvider(BadIdentityProvider)
|
||||
addIdentityProvider(NoTypeIdentityProvider)
|
||||
} catch (e) {
|
||||
err = e.toString()
|
||||
}
|
||||
|
||||
assert.strictEqual(err, 'Error: Given IdentityProvider doesn\'t have a field \'type\'')
|
||||
})
|
||||
|
||||
it('cannot add an identity provider with missing verifyIdentity', async() => {
|
||||
let err
|
||||
|
||||
try {
|
||||
addIdentityProvider(NoVerifyIdentityIdentityProvider)
|
||||
} catch (e) {
|
||||
err = e.toString()
|
||||
}
|
||||
|
||||
assert.strictEqual(err, 'Error: Given IdentityProvider doesn\'t have a function \'verifyIdentity\'')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user