community-app/test/spec/controllers/MainControllerSpec.js
Alex Ivanov 1114bcca1d Add Two-Factor Authentication Support (#2383)
* 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
2017-11-27 18:50:51 +05:30

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('/');
});
});
});