authenzify
Version:
server to manage authentication authorization of users and more
71 lines (58 loc) • 1.97 kB
JavaScript
import getPort from 'get-port'
import { before } from 'mocha'
import * as assert from 'assert'
import { getConfig } from '../../util/settings.js'
import { dropDatabase } from '../../util/mongodb-util.js'
import { initVerifyToken, usersManagementServer } from '../../../src/index.js'
import { USER_SIGNED_UP_OR_IN_BY } from '../../../src/constant.js'
describe('Sign In', () => {
let config
let server
let usersManagement
before(async () => {
const port = await getPort()
config = await getConfig({ port })
await dropDatabase(config.storage)
const usersManagementsRef = await usersManagementServer(config)
server = usersManagementsRef.server
usersManagement = usersManagementsRef.usersManagement
})
describe(`Code Verifications`, () => {
it('Should test Sign In/Up with code via email (Passwordless)', async () => {
let verification
let eventVerification
usersManagement.onSignInUpCodeGenerated(
async ({ identifier, verificationInfo }) => {
eventVerification = {
identifier,
...verificationInfo,
}
},
)
const assignInfo = {
identifier: 'haim@yoyo.co.il',
signInVia: USER_SIGNED_UP_OR_IN_BY.EMAIL,
}
const res = await server
.inject()
.body(assignInfo)
.post('/v1/users/sign-in/code')
verification = res.json()
assert.equal(
verification.verificationId,
eventVerification.verificationId,
)
const signInResponse = await server
.inject()
.body(eventVerification)
.post('/v1/users/sign-in/verify')
const tokenResponse = await signInResponse.json()
const { verifyToken } = initVerifyToken({
publicKey: config.publicKey,
jwtOptions: config.jwtOptions,
})
const encoded = verifyToken(tokenResponse.token)
assert.equal(encoded.email, assignInfo.identifier)
})
})
})