Files
kami-parse-server/spec/Auth.spec.js
Florent Vilmart b754d51e8e chore(package): update jasmine to version 3.0.0 (#4553)
* chore(package): update jasmine to version 3.0.0

Closes #4547

* Fixes failing tests for jasmine 3.0

Starting 3.0, done(something) will fail

* Update tests so they dont leverage var, but let and const

With jasmine 3.0, the randomization engine was making the test fails because of the scope of `var`

* Remove randomizer

* Use same adapter for PG tests, drop table to ensure the tests dont side effect
2018-02-17 09:55:30 -05:00

94 lines
2.7 KiB
JavaScript

describe('Auth', () => {
const Auth = require('../src/Auth.js').Auth;
describe('getUserRoles', () => {
let auth;
let config;
let currentRoles = null;
const currentUserId = 'userId';
beforeEach(() => {
currentRoles = ['role:userId'];
config = {
cacheController: {
role: {
get: () => Promise.resolve(currentRoles),
set: jasmine.createSpy('set')
}
}
}
spyOn(config.cacheController.role, 'get').and.callThrough();
auth = new Auth({
config: config,
isMaster: false,
user: {
id: currentUserId
},
installationId: 'installationId'
});
});
it('should get user roles from the cache', (done) => {
auth.getUserRoles()
.then((roles) => {
const firstSet = config.cacheController.role.set.calls.first();
expect(firstSet).toEqual(undefined);
const firstGet = config.cacheController.role.get.calls.first();
expect(firstGet.args[0]).toEqual(currentUserId);
expect(roles).toEqual(currentRoles);
done();
});
});
it('should only query the roles once', (done) => {
const loadRolesSpy = spyOn(auth, '_loadRoles').and.callThrough();
auth.getUserRoles()
.then((roles) => {
expect(roles).toEqual(currentRoles);
return auth.getUserRoles()
})
.then(() => auth.getUserRoles())
.then(() => auth.getUserRoles())
.then((roles) => {
// Should only call the cache adapter once.
expect(config.cacheController.role.get.calls.count()).toEqual(1);
expect(loadRolesSpy.calls.count()).toEqual(1);
const firstGet = config.cacheController.role.get.calls.first();
expect(firstGet.args[0]).toEqual(currentUserId);
expect(roles).toEqual(currentRoles);
done();
});
});
it('should not have any roles with no user', (done) => {
auth.user = null
auth.getUserRoles()
.then((roles) => expect(roles).toEqual([]))
.then(() => done());
});
it('should not have any user roles with master', (done) => {
auth.isMaster = true
auth.getUserRoles()
.then((roles) => expect(roles).toEqual([]))
.then(() => done());
});
it('should properly handle bcrypt upgrade', (done) => {
const bcryptOriginal = require('bcrypt-nodejs');
const bcryptNew = require('bcryptjs');
bcryptOriginal.hash('my1Long:password', null, null, function(err, res) {
bcryptNew.compare('my1Long:password', res, function(err, res) {
expect(res).toBeTruthy();
done();
})
});
});
});
});