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 DefaultIdentityProviderType = getIdentityProvider('publickey')
|
||||||
const IdentityProvider = options.provider || DefaultIdentityProviderType({ keystore })
|
const IdentityProvider = options.provider || DefaultIdentityProviderType({ keystore })
|
||||||
const identityProvider = IdentityProvider()
|
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 id = await identityProvider.getId(options)
|
||||||
const privateKey = await keystore.getKey(id) || await keystore.createKey(id)
|
const privateKey = await keystore.getKey(id) || await keystore.createKey(id)
|
||||||
const publicKey = keystore.getPublic(privateKey)
|
const publicKey = keystore.getPublic(privateKey)
|
||||||
|
@ -36,6 +36,10 @@ const addIdentityProvider = (IdentityProvider) => {
|
|||||||
throw new Error('Given IdentityProvider doesn\'t have a field \'type\'')
|
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]) {
|
if (identityProviders[IdentityProvider.type]) {
|
||||||
throw new Error(`Type already added: ${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 testKeysPath from '../fixtures/test-keys-path.js'
|
||||||
import { default as CustomIdentityProvider } from '../fixtures/providers/custom.js'
|
import { default as CustomIdentityProvider } from '../fixtures/providers/custom.js'
|
||||||
import { default as FakeIdentityProvider } from '../fixtures/providers/fake.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 type = 'publickey'
|
||||||
const keysPath = './testkeys'
|
const keysPath = './testkeys'
|
||||||
@ -353,12 +354,24 @@ describe('Identities', function () {
|
|||||||
let err
|
let err
|
||||||
|
|
||||||
try {
|
try {
|
||||||
addIdentityProvider(BadIdentityProvider)
|
addIdentityProvider(NoTypeIdentityProvider)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
err = e.toString()
|
err = e.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.strictEqual(err, 'Error: Given IdentityProvider doesn\'t have a field \'type\'')
|
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