/
auth-manager.spec.js
60 lines (49 loc) · 1.91 KB
/
auth-manager.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
'use strict'
/*
* adonis-auth
*
* (c) Harminder Virk <virk@adonisjs.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
require('@adonisjs/lucid/lib/iocResolver').setFold(require('@adonisjs/fold'))
const test = require('japa')
const AuthManager = require('../../src/Auth/Manager')
const { session: Session } = require('../../src/Schemes')
const { lucid: Lucid } = require('../../src/Serializers')
const setup = require('./setup')
test.group('AuthManager', (group) => {
setup.hashHook(group)
test('extend by adding a new serializer', (assert) => {
const mongo = {}
AuthManager.extend('mongo', mongo, 'serializer')
assert.deepEqual(AuthManager._serializers, { mongo })
})
test('extend by adding a new scheme', (assert) => {
const api = {}
AuthManager.extend('api', api, 'scheme')
assert.deepEqual(AuthManager._schemes, { api })
})
test('throw error when type is not a serializer or scheme', (assert) => {
const api = {}
const fn = () => AuthManager.extend('api', api, 'foo')
assert.throw(fn, 'Auth.extend type must be a serializer or scheme')
})
test('get instance of scheme', (assert) => {
const session = AuthManager.getScheme('session')
assert.instanceOf(session, Session)
})
test('get instance of serializer', (assert) => {
const lucid = AuthManager.getSerializer('lucid')
assert.instanceOf(lucid, Lucid)
})
test('throw exception when scheme is not found', (assert) => {
const fn = () => AuthManager.getScheme('foo')
assert.throw(fn, /E_INCOMPLETE_CONFIG: Make sure to define foo scheme on auth inside config\/auth\.js/)
})
test('throw exception when serializer is not found', (assert) => {
const fn = () => AuthManager.getSerializer('foo')
assert.throw(fn, /E_INCOMPLETE_CONFIG: Make sure to define foo serializer on auth inside config\/auth\.js/)
})
})