mirror of
https://github.com/Permissionless-Software-Foundation/x402-base-facilitator.git
synced 2026-09-21 16:52:01 -07:00
109 lines
2.6 KiB
JavaScript
109 lines
2.6 KiB
JavaScript
/*
|
|
Unit tests for the passport library.
|
|
*/
|
|
|
|
// Public npm libraries
|
|
import { assert } from 'chai'
|
|
import sinon from 'sinon'
|
|
import passport from 'koa-passport'
|
|
|
|
// Local libraries
|
|
import User from '../../../src/adapters/localdb/models/users.js'
|
|
|
|
import { applyPassportMods, passportCallback } from '../../../config/passport.js'
|
|
import adaptersMock from '../mocks/adapters/index.js'
|
|
|
|
describe('#passport', () => {
|
|
let sandbox
|
|
let id
|
|
let done
|
|
|
|
beforeEach(() => {
|
|
sandbox = sinon.createSandbox()
|
|
|
|
id = 'abc123'
|
|
done = () => {}
|
|
})
|
|
|
|
afterEach(() => sandbox.restore())
|
|
|
|
describe('#passportCallback', () => {
|
|
it('should return if user is found', () => {
|
|
// Mock Users model.
|
|
sandbox.stub(User, 'findOne').resolves({ id })
|
|
|
|
passportCallback(id, 'password', done)
|
|
})
|
|
it('should handle not found user', () => {
|
|
// Mock Users model.
|
|
sandbox.stub(User, 'findOne').resolves(null)
|
|
|
|
passportCallback(id, 'password', done)
|
|
})
|
|
|
|
it('should return if password is validated', () => {
|
|
// Mock Users model.
|
|
sandbox.stub(User, 'findOne').resolves(new adaptersMock.localdb.Users())
|
|
|
|
passportCallback(id, 'password', done)
|
|
})
|
|
it('should handle error on password validation', () => {
|
|
// Mock Users model.
|
|
const userMock = {
|
|
validatePassword: () => false
|
|
}
|
|
sandbox.stub(User, 'findOne').resolves(userMock)
|
|
|
|
passportCallback(id, 'password', done)
|
|
})
|
|
|
|
it('should catch a high-level error', () => {
|
|
// Force an error
|
|
sandbox.stub(User, 'findOne').rejects(new Error('test error'))
|
|
|
|
passportCallback(id, 'password', done)
|
|
})
|
|
})
|
|
|
|
describe('#applyPassportMods', () => {
|
|
it('should apply modifications to default passport behavior', () => {
|
|
const result = applyPassportMods(passport)
|
|
|
|
assert.equal(result, true)
|
|
})
|
|
})
|
|
|
|
describe('#serializeUser', () => {
|
|
it('should serialize a user', () => {
|
|
const user = {
|
|
id: 'abc123'
|
|
}
|
|
const done = () => {}
|
|
|
|
applyPassportMods(passport)
|
|
|
|
passport.serializeUser(user, done)
|
|
})
|
|
})
|
|
|
|
describe('#deserializeUser', () => {
|
|
it('should deserialize a user', () => {
|
|
// Mock Users model.
|
|
sandbox.stub(User, 'findById').resolves({ id })
|
|
|
|
applyPassportMods(passport)
|
|
|
|
passport.deserializeUser(id, done)
|
|
})
|
|
|
|
it('should catch and handle errors', () => {
|
|
// Force an error
|
|
sandbox.stub(User, 'findById').rejects(new Error('test error'))
|
|
|
|
applyPassportMods(passport)
|
|
|
|
passport.deserializeUser(id, done)
|
|
})
|
|
})
|
|
})
|