codimd/test/auth/oauth2/strategy.test.js

57 lines
1.8 KiB
JavaScript

/* eslint-env node, mocha */
'use strict'
const assert = require('assert')
const chance = require('chance')()
const { extractProfileAttribute } = require('../../../lib/auth/oauth2/strategy')
describe('OAuth2CustomStrategy', function () {
describe('#extractProfileAttribute', function () {
const data = {
user: {
email: chance.email()
},
arrayData: [
{
email: chance.email()
},
{
email: chance.email()
}
]
}
it('should parse normal attribute correctly', function () {
assert(extractProfileAttribute(data, 'user.email') === data.user.email)
})
it('should return undefined when nested object key not exists', function () {
assert(extractProfileAttribute(data, 'user.profile') === undefined)
})
it('should return undefined when whole object key not exists', function () {
assert(extractProfileAttribute(data, 'profile.email') === undefined)
})
it('should return attribute in array correct', function () {
assert(extractProfileAttribute(data, 'arrayData[0].email') === data.arrayData[0].email)
assert(extractProfileAttribute(data, 'arrayData[1].email') === data.arrayData[1].email)
})
it('should return undefined when array index out of bound', function () {
assert(extractProfileAttribute(data, 'arrayData[3].email') === undefined)
})
it('should return undefined when array key not exists', function () {
assert(extractProfileAttribute(data, 'notExistsArray[5].email') === undefined)
})
it('should return undefined when data is undefined', function () {
assert(extractProfileAttribute(undefined, 'email') === undefined)
assert(extractProfileAttribute(null, 'email') === undefined)
assert(extractProfileAttribute({}, 'email') === undefined)
})
})
})