Skip to content

Commit 0303ee0

Browse files
committed
move cache to fp
1 parent eb0f864 commit 0303ee0

File tree

6 files changed

+24
-81
lines changed

6 files changed

+24
-81
lines changed

src/cache.js

Lines changed: 10 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,15 @@
1-
let instance
2-
31
/**
42
* @function
53
* @public
64
*
7-
* Initiate a cache singleton
5+
* Initiate a cache
86
*
97
* @param {Hapi.Server} server The created server instance
108
* @param {Object|boolean} opts The instance its options
11-
* @returns {Object} The cache instance
9+
* @returns {Object|false} The cache instance
1210
*/
1311
function init (server, opts) {
14-
if (instance === undefined) {
15-
if (opts === false) {
16-
instance = false
17-
} else {
18-
instance = server.cache(opts === true ? {} : opts)
19-
}
20-
}
21-
22-
return instance
12+
return opts ? server.cache(opts === true ? {} : opts) : false
2313
}
2414

2515
/**
@@ -29,11 +19,12 @@ function init (server, opts) {
2919
* Get value out of cache by key.
3020
* Just if cache is initiated.
3121
*
22+
* @param {Object} The cache instance
3223
* @param {*} key The key to be searched
3324
* @param {Function} done The callback handler
3425
*/
35-
function get (key, done) {
36-
instance ? instance.get(key, done) : done(null, false)
26+
function get (cache, key, done) {
27+
cache ? cache.get(key, done) : done(null, false)
3728
}
3829

3930
/**
@@ -43,29 +34,18 @@ function get (key, done) {
4334
* Set value specified by key in cache.
4435
* Just if cache is initiated.
4536
*
37+
* @param {Object} The cache instance
4638
* @param {*} key The key to be indexed
4739
* @param {*} value The value to be stored
4840
* @param {number} ttl The time to live
4941
* @param {Function} done The callback handler
5042
*/
51-
function set (key, value, ttl, done) {
52-
instance && instance.set(key, value, ttl, done)
53-
}
54-
55-
/**
56-
* @function
57-
* @public
58-
*
59-
* Reset the current cache instance
60-
*
61-
*/
62-
function reset () {
63-
instance = undefined
43+
function set (cache, key, value, ttl, done) {
44+
cache && cache.set(key, value, ttl, done)
6445
}
6546

6647
module.exports = {
6748
init,
6849
get,
69-
set,
70-
reset
50+
set
7151
}

src/index.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ const pkg = require('../package.json')
99
* @type {Object|GrantManager}
1010
* @private
1111
*
12-
* The plugin related options and GrantManager instance.
12+
* The plugin related options and instances.
1313
*/
1414
let options
1515
let manager
16+
let store
1617

1718
/**
1819
* @function
@@ -68,7 +69,7 @@ function handleKeycloakValidation (tkn, reply) {
6869
const { expiresIn, credentials } = tkn.getData(options.userInfo)
6970
const userData = { credentials }
7071

71-
cache.set(tkn.get(), userData, expiresIn)
72+
cache.set(store, tkn.get(), userData, expiresIn)
7273
reply.continue(userData)
7374
}).catch((err) => {
7475
reply(error('unauthorized', err, error.msg.invalid))
@@ -94,7 +95,7 @@ function validate (field, reply) {
9495
return done(error('unauthorized', error.msg.missing))
9596
}
9697

97-
cache.get(tkn.get(), (err, cached) => {
98+
cache.get(store, tkn.get(), (err, cached) => {
9899
const isCached = cached && !err
99100
isCached ? done.continue(cached) : handleKeycloakValidation(tkn, done)
100101
})
@@ -138,8 +139,7 @@ function strategy (server) {
138139
function plugin (server, opts, next) {
139140
options = verify(opts)
140141
manager = new GrantManager(options)
141-
142-
cache.init(server, options.cache)
142+
store = cache.init(server, options.cache)
143143

144144
server.auth.scheme('keycloak-jwt', strategy)
145145
server.decorate('server', 'kjwt', { validate })

test/cache.spec.js

Lines changed: 9 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,12 @@ const test = require('ava')
22
const helpers = require('./_helpers')
33
const cache = require('../src/cache')
44

5-
test.afterEach.always('reset cache', () => {
6-
cache.reset()
7-
})
8-
9-
test.cb.serial('just create one instance – object', (t) => {
10-
helpers.getServer(false, (server) => {
11-
const cch1 = cache.init(server, { segment: 'foo' })
12-
const cch2 = cache.init(server, { segment: 'foo' })
13-
14-
t.truthy(cch1)
15-
t.truthy(cch2)
16-
t.deepEqual(cch1, cch2)
17-
t.end()
18-
})
19-
})
20-
21-
test.cb.serial('just create one instance – boolean', (t) => {
22-
helpers.getServer(false, (server) => {
23-
const cch1 = cache.init(server, false)
24-
const cch2 = cache.init(server, false)
25-
26-
t.is(cch1, false)
27-
t.is(cch2, false)
28-
t.is(cch1, cch2)
29-
t.end()
30-
})
31-
})
32-
335
test.cb.serial('set and get value', (t) => {
346
helpers.getServer(false, (server) => {
35-
cache.init(server, { segment: 'foo' })
36-
cache.set('bar', 42, 10000)
7+
const store = cache.init(server, { segment: 'foo' })
8+
cache.set(store, 'bar', 42, 10000)
379

38-
cache.get('bar', (err, res) => {
10+
cache.get(store, 'bar', (err, res) => {
3911
t.falsy(err)
4012
t.is(res, 42)
4113
t.end()
@@ -45,10 +17,10 @@ test.cb.serial('set and get value', (t) => {
4517

4618
test.cb.serial('set and get value – no cache', (t) => {
4719
helpers.getServer(false, (server) => {
48-
cache.init(server, false)
49-
cache.set('bar', 42, 10000)
20+
const store = cache.init(server, false)
21+
cache.set(store, 'bar', 42, 10000)
5022

51-
cache.get('bar', (err, res) => {
23+
cache.get(store, 'bar', (err, res) => {
5224
t.falsy(err)
5325
t.is(res, false)
5426
t.end()
@@ -58,11 +30,11 @@ test.cb.serial('set and get value – no cache', (t) => {
5830

5931
test.cb.serial('set and get value – expired', (t) => {
6032
helpers.getServer(false, (server) => {
61-
cache.init(server, { segment: 'foo' })
62-
cache.set('bar', 42, 100)
33+
const store = cache.init(server, { segment: 'foo' })
34+
cache.set(store, 'bar', 42, 100)
6335

6436
setTimeout(() => {
65-
cache.get('bar', (err, res) => {
37+
cache.get(store, 'bar', (err, res) => {
6638
t.falsy(err)
6739
t.is(res, null)
6840
t.end()

test/index.publicKey.spec.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
const test = require('ava')
22
const helpers = require('./_helpers')
33
const fixtures = require('./fixtures')
4-
const cache = require('../src/cache')
5-
6-
test.afterEach.always('reset instances and prototypes', () => {
7-
cache.reset()
8-
})
94

105
const publicKeyConfig = {
116
realmUrl: fixtures.common.realmUrl,

test/index.secret.spec.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@ const nock = require('nock')
22
const test = require('ava')
33
const helpers = require('./_helpers')
44
const fixtures = require('./fixtures')
5-
const cache = require('../src/cache')
65

76
test.afterEach.always('reset instances and prototypes', () => {
8-
cache.reset()
97
nock.cleanAll()
108
})
119

test/index.server.spec.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@ const nock = require('nock')
22
const test = require('ava')
33
const helpers = require('./_helpers')
44
const fixtures = require('./fixtures')
5-
const cache = require('../src/cache')
65

76
test.afterEach.always('reset instances and prototypes', () => {
8-
cache.reset()
97
nock.cleanAll()
108
})
119

0 commit comments

Comments
 (0)