diff --git a/test/_fixtures.js b/test/_fixtures.js index 0d2120e..8841f0c 100644 --- a/test/_fixtures.js +++ b/test/_fixtures.js @@ -9,12 +9,26 @@ const secret = '1234-bar-4321-foo' * * Client config */ -const config = { +const clientConfig = { realmUrl, clientId, secret } +/** + * @type Object + * @public + * + * Common attributes + */ +const common = Object.assign({}, clientConfig, { token }) + +/** + * @type Object + * @public + * + * Content Parts of JWTs + */ const content = { userData: { 'exp': 5, @@ -62,75 +76,9 @@ const jwt = { userDataScope: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjUsImlhdCI6MSwic3ViIjoiMTIzNDU2Nzg5MCIsIm5hbWUiOiJKb2huIERvZSIsImVtYWlsIjoiam9obi5kb2VAbWFpbC5jb20iLCJhZG1pbiI6dHJ1ZX0.2tfThhgwSbIEq2cZcoHSRwL2-UCanF23BXlyphm5ehs' } -/** - * @type Object - * @public - * - * Succeeded validations response - */ -const validation = { - 'jti': '918c5d0e-1924-40e3-9fc6-b5cfd0016e1a', - 'exp': Date.now() * 1000 + 60000, - 'nbf': 0, - 'iat': Date.now() * 1000, - 'iss': 'https://localhost:8080/auth/realms/testme', - 'aud': 'testme-app', - 'sub': '5b220cee-48c2-47b9-8c53-2cac94eed51d', - 'typ': 'Bearer', - 'azp': 'testme-app', - 'auth_time': 0, - 'session_state': - '08f140bb-7801-47c1-9202-3d8a805e359a', - 'name': 'Foo Bar', - 'preferred_username': 'foobar', - 'given_name': 'Foo', - 'family_name': 'Bar', - 'email': 'foo.bar@42.com', - 'acr': '1', - 'client_session': '8d36c537-1d12-4c47-8032-cfd26d0133b0', - 'allowed-origins': [], - 'realm_access': { - 'roles': ['admin'] - }, - 'resource_access': { - 'other-app': { - 'roles': ['other-app:creator'] - }, - 'testme-app': { - 'roles': ['editor'] - }, - 'account': { - 'roles': ['manage-account', 'manage-account-links', 'view-profile'] - } - }, - 'client_id': 'testme-app', - 'username': 'foobar', - 'active': true -} - -/** - * @type Object - * @public - * - * Succeeded userInfo response - */ -const userInfo = { - 'sub': '5b220cee-48c2-47b9-8c53-2cac94eed51d', - 'name': 'Foo Bar', - 'preferred_username': 'foobar', - 'given_name': 'Foo', - 'family_name': 'Bar', - 'email': 'foo.bar@42.com' -} - module.exports = { - token, - realmUrl, - clientId, - secret, - config, + common, + clientConfig, content, - jwt, - validation, - userInfo + jwt } diff --git a/test/_helpers.js b/test/_helpers.js index 1d3d535..d9c9453 100644 --- a/test/_helpers.js +++ b/test/_helpers.js @@ -13,8 +13,9 @@ const GrantManagerClone = {} * The default plugin configuration */ const defaults = { - client: fixtures.config, - cache: false + client: fixtures.clientConfig, + cache: false, + userInfo: undefined } /** diff --git a/test/index.spec.js b/test/index.spec.js index 8f09175..a00e541 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -20,7 +20,7 @@ test.cb.serial('throw error if plugin gets registered twice', (t) => { }) test.cb.serial('authentication does succeed', (t) => { - prototypes.stub('validateAccessToken', fixtures.validation) + prototypes.stub('validateAccessToken', fixtures.content.userData) getServer(undefined, (server) => { server.inject({ @@ -38,7 +38,7 @@ test.cb.serial('authentication does succeed', (t) => { }) test.cb.serial('authentication does succeed – cached', (t) => { - prototypes.stub('validateAccessToken', fixtures.validation) + prototypes.stub('validateAccessToken', fixtures.content.userData) const mockReq = { method: 'GET', @@ -49,7 +49,7 @@ test.cb.serial('authentication does succeed – cached', (t) => { } getServer({ - client: fixtures.config, + client: fixtures.clientConfig, cache: {} }, (server) => { server.inject(mockReq, () => { @@ -63,7 +63,7 @@ test.cb.serial('authentication does succeed – cached', (t) => { }) test.cb.serial('authentication does success – valid roles', (t) => { - prototypes.stub('validateAccessToken', fixtures.validation) + prototypes.stub('validateAccessToken', fixtures.content.userData) getServer(undefined, (server) => { server.inject({ @@ -81,7 +81,7 @@ test.cb.serial('authentication does success – valid roles', (t) => { }) test.cb.serial('authentication does fail – invalid roles', (t) => { - prototypes.stub('validateAccessToken', fixtures.validation) + prototypes.stub('validateAccessToken', fixtures.content.userData) getServer(undefined, (server) => { server.inject({ @@ -123,7 +123,7 @@ test.cb.serial('authentication does fail – invalid header', (t) => { method: 'GET', url: '/', headers: { - authorization: fixtures.token + authorization: fixtures.common.token } }, (res) => { t.truthy(res) @@ -135,7 +135,7 @@ test.cb.serial('authentication does fail – invalid header', (t) => { }) test.cb.serial('server method validates token', (t) => { - prototypes.stub('validateAccessToken', fixtures.validation) + prototypes.stub('validateAccessToken', fixtures.content.userData) getServer(undefined, (server) => { server.kjwt.validate(`bearer ${fixtures.jwt.userData}`, (err, res) => { diff --git a/test/utils.spec.js b/test/utils.spec.js index ab9c27c..6c731ca 100644 --- a/test/utils.spec.js +++ b/test/utils.spec.js @@ -89,80 +89,80 @@ test('throw error if options are invalid – client.realmUrl', (t) => { t.throws(() => utils.verify({ client: { - clientId: fixtures.clientId, - secret: fixtures.secret, + clientId: fixtures.common.clientId, + secret: fixtures.secret.clientId, realmUrl: null } }), Error) t.throws(() => utils.verify({ client: { - clientId: fixtures.clientId, - secret: fixtures.secret, + clientId: fixtures.common.clientId, + secret: fixtures.secret.clientId, realmUrl: undefined } }), Error) t.throws(() => utils.verify({ client: { - clientId: fixtures.clientId, - secret: fixtures.secret, + clientId: fixtures.common.clientId, + secret: fixtures.secret.clientId, realmUrl: NaN } }), Error) t.throws(() => utils.verify({ client: { - clientId: fixtures.clientId, - secret: fixtures.secret, + clientId: fixtures.common.clientId, + secret: fixtures.secret.clientId, realmUrl: '' } }), Error) t.throws(() => utils.verify({ client: { - clientId: fixtures.clientId, - secret: fixtures.secret, + clientId: fixtures.common.clientId, + secret: fixtures.secret.clientId, realmUrl: 'foobar' } }), Error) t.throws(() => utils.verify({ client: { - clientId: fixtures.clientId, - secret: fixtures.secret, + clientId: fixtures.common.clientId, + secret: fixtures.secret.clientId, realmUrl: 42 } }), Error) t.throws(() => utils.verify({ client: { - clientId: fixtures.clientId, - secret: fixtures.secret, + clientId: fixtures.common.clientId, + secret: fixtures.secret.clientId, realmUrl: true } }), Error) t.throws(() => utils.verify({ client: { - clientId: fixtures.clientId, - secret: fixtures.secret, + clientId: fixtures.common.clientId, + secret: fixtures.secret.clientId, realmUrl: [] } }), Error) t.throws(() => utils.verify({ client: { - clientId: fixtures.clientId, - secret: fixtures.secret, + clientId: fixtures.common.clientId, + secret: fixtures.secret.clientId, realmUrl: new RegExp() } }), Error) t.throws(() => utils.verify({ client: { - clientId: fixtures.clientId, - secret: fixtures.secret, + clientId: fixtures.common.clientId, + secret: fixtures.secret.clientId, realmUrl: {} } }), Error) @@ -171,72 +171,72 @@ test('throw error if options are invalid – client.realmUrl', (t) => { test('throw error if options are invalid – client.clientId', (t) => { t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - secret: fixtures.secret, + realmUrl: fixtures.common.clientId, + secret: fixtures.secret.clientId, clientId: null } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - secret: fixtures.secret, + realmUrl: fixtures.common.clientId, + secret: fixtures.secret.clientId, clientId: undefined } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - secret: fixtures.secret, + realmUrl: fixtures.common.clientId, + secret: fixtures.secret.clientId, clientId: NaN } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - secret: fixtures.secret, + realmUrl: fixtures.common.clientId, + secret: fixtures.secret.clientId, clientId: 42 } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - secret: fixtures.secret, + realmUrl: fixtures.common.clientId, + secret: fixtures.secret.clientId, clientId: '' } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - secret: fixtures.secret, + realmUrl: fixtures.common.clientId, + secret: fixtures.secret.clientId, clientId: true } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - secret: fixtures.secret, + realmUrl: fixtures.common.clientId, + secret: fixtures.secret.clientId, clientId: [] } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - secret: fixtures.secret, + realmUrl: fixtures.common.clientId, + secret: fixtures.secret.clientId, clientId: new RegExp() } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - secret: fixtures.secret, + realmUrl: fixtures.common.clientId, + secret: fixtures.secret.clientId, clientId: {} } }), Error) @@ -245,72 +245,72 @@ test('throw error if options are invalid – client.clientId', (t) => { test('throw error if options are invalid – client.secret', (t) => { t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - clientId: fixtures.clientId, + realmUrl: fixtures.common.clientId, + clientId: fixtures.common.clientId, secret: null } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - clientId: fixtures.clientId, + realmUrl: fixtures.common.clientId, + clientId: fixtures.common.clientId, secret: undefined } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - clientId: fixtures.clientId, + realmUrl: fixtures.common.clientId, + clientId: fixtures.common.clientId, secret: NaN } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - clientId: fixtures.clientId, + realmUrl: fixtures.common.clientId, + clientId: fixtures.common.clientId, secret: 42 } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - clientId: fixtures.clientId, + realmUrl: fixtures.common.clientId, + clientId: fixtures.common.clientId, secret: '' } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - clientId: fixtures.clientId, + realmUrl: fixtures.common.clientId, + clientId: fixtures.common.clientId, secret: true } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - clientId: fixtures.clientId, + realmUrl: fixtures.common.clientId, + clientId: fixtures.common.clientId, secret: [] } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - clientId: fixtures.clientId, + realmUrl: fixtures.common.clientId, + clientId: fixtures.common.clientId, secret: new RegExp() } }), Error) t.throws(() => utils.verify({ client: { - realmUrl: fixtures.realmUrl, - clientId: fixtures.clientId, + realmUrl: fixtures.common.clientId, + clientId: fixtures.common.clientId, secret: {} } }), Error) @@ -318,157 +318,157 @@ test('throw error if options are invalid – client.secret', (t) => { test('throw error if options are invalid – cache', (t) => { t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, cache: null }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, cache: NaN }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, cache: '' }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, cache: 'foobar' }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, cache: 42 }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, cache: true }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, cache: [] }), Error) }) test('throw error if options are invalid – userInfo', (t) => { t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: null }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: NaN }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: '' }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: 'foobar' }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: 42 }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: true }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: [null] }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: [undefined] }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: [NaN] }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: [42] }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: [true] }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: [''] }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: [{}] }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: [[]] }), Error) t.throws(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: [new RegExp()] }), Error) }) test('throw no error if options are valid', (t) => { t.notThrows(() => utils.verify({ - client: fixtures.config + client: fixtures.clientConfig }), Error) t.notThrows(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, cache: undefined }), Error) t.notThrows(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, cache: {} }), Error) t.notThrows(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, cache: { segment: 'foobar' } }), Error) t.notThrows(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, cache: false }), Error) t.notThrows(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: undefined }), Error) t.notThrows(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: [] }), Error) t.notThrows(() => utils.verify({ - client: fixtures.config, + client: fixtures.clientConfig, userInfo: ['string'] }), Error) })