mirror of
https://github.com/openMF/community-app.git
synced 2026-02-06 16:36:46 +00:00
* Add Two-Factor Authentication Support * Two-Factor remember me * Invalidate access token on logout - Fix issue with saving userData in local storage - Delete userData & access token from local storage on logout * fix tests
88 lines
3.5 KiB
JavaScript
88 lines
3.5 KiB
JavaScript
describe("MainController", function () {
|
|
var eventListener, sessionCallback;
|
|
beforeEach(function () {
|
|
this.scope = jasmine.createSpyObj("$scope", ['$on', '$watch']);
|
|
this.scope.$on.andCallFake(function (event, listener) {
|
|
eventListener = listener;
|
|
});
|
|
this.location = jasmine.createSpyObj("$location", ['path', 'replace']);
|
|
this.location.path.andReturn(this.location);
|
|
this.sessionManager = jasmine.createSpyObj("sessionManager", ['get', 'clear', 'restore']);
|
|
this.sessionManager.restore.andCallFake(function (callback) {
|
|
sessionCallback = callback;
|
|
});
|
|
this.keyboardManager = jasmine.createSpyObj('keyboardManager', ['bind']);
|
|
|
|
this.translate = jasmine.createSpyObj("translate", ["use"]);
|
|
this.rootScope = jasmine.createSpyObj("$rootScope", ['$broadcast']);
|
|
this.localStorageService = jasmine.createSpyObj("localStorageService", ["addToLocalStorage", "getFromLocalStorage"]);
|
|
this.promise = jasmine.createSpyObj('Promise', ['success','then']);
|
|
this.http = jasmine.createSpyObj("$http", ['get']);
|
|
this.http.get.andReturn(this.promise);
|
|
this.idle = jasmine.createSpyObj("$idle", ['watch', 'unwatch']);
|
|
this.tmhDynamicLocale = jasmine.createSpyObj("tmhDynamicLocale", ["set"]);
|
|
this.uiConfigService = jasmine.createSpyObj("uiConfigService", ["init"]);
|
|
|
|
this.controller = new mifosX.controllers.MainController(this.scope,
|
|
this.location,
|
|
this.sessionManager,
|
|
this.translate,
|
|
this.rootScope,
|
|
this.localStorageService,
|
|
this.keyboardManager,
|
|
this.idle,
|
|
this.tmhDynamicLocale,
|
|
this.uiConfigService,
|
|
this.http);
|
|
});
|
|
|
|
|
|
describe("on initialisation", function () {
|
|
it("should listen to 'UserAuthenticationSuccessEvent'", function () {
|
|
expect(this.scope.$on).toHaveBeenCalledWith("UserAuthenticationSuccessEvent", jasmine.any(Function));
|
|
});
|
|
|
|
it("should restore the session", function () {
|
|
sessionCallback("test_session");
|
|
expect(this.scope.currentSession).toEqual("test_session");
|
|
});
|
|
|
|
it("should set the dateformat in the scope", function () {
|
|
expect(this.scope.dateformat).toEqual("dd MMMM yyyy");
|
|
expect(this.scope.df).toEqual("dd MMMM yyyy");
|
|
});
|
|
});
|
|
|
|
describe("on receving 'UserAuthenticationSuccessEvent'", function () {
|
|
beforeEach(function () {
|
|
this.sessionManager.get.andReturn("test_session");
|
|
|
|
eventListener({}, "test_data");
|
|
});
|
|
|
|
it("should start a new session", function () {
|
|
expect(this.sessionManager.get).toHaveBeenCalledWith("test_data");
|
|
expect(this.scope.currentSession).toEqual("test_session");
|
|
});
|
|
it("should redirect to the home page", function () {
|
|
expect(this.location.path).toHaveBeenCalledWith('/home');
|
|
});
|
|
});
|
|
|
|
describe("User logout", function () {
|
|
beforeEach(function () {
|
|
this.sessionManager.clear.andReturn("test_session");
|
|
|
|
this.scope.logout();
|
|
});
|
|
|
|
it("should clear the session", function () {
|
|
expect(this.sessionManager.clear).toHaveBeenCalled();
|
|
expect(this.scope.currentSession).toEqual("test_session");
|
|
});
|
|
it("should redirect to the start page", function () {
|
|
expect(this.location.path).toHaveBeenCalledWith('/');
|
|
});
|
|
});
|
|
});
|