'use strict'; describe('Auth Controller', function() { describe('AuthCtrl', function(){ var scope, ctrl, user, $httpBackend, $window; beforeEach(function(){ module(function($provide) { $provide.value('Analytics', analyticsMock); $provide.value('Chat', { seenMessage: function() {} }); }); inject(function(_$httpBackend_, $rootScope, $controller) { $httpBackend = _$httpBackend_; scope = $rootScope.$new(); scope.loginUsername = 'user'; scope.loginPassword = 'pass'; $window = { location: { href: ""}, alert: sandbox.spy() }; user = { user: {}, authenticate: sandbox.spy() }; ctrl = $controller('AuthCtrl', {$scope: scope, $window: $window, User: user}); }) }); describe('logging in', function() { it('should log in users with correct uname / pass', function() { $httpBackend.expectPOST('/api/v2/user/auth/local').respond({id: 'abc', token: 'abc'}); scope.auth(); $httpBackend.flush(); expect(user.authenticate).to.be.calledOnce; expect($window.alert).to.not.be.called; }); it('should not log in users with incorrect uname / pass', function() { $httpBackend.expectPOST('/api/v2/user/auth/local').respond(404, ''); scope.auth(); $httpBackend.flush(); expect(user.authenticate).to.not.be.called; expect($window.alert).to.be.calledOnce; }); }); describe('clearMessage', function() { it('is Chat.seenMessage', inject(function(Chat) { expect(scope.clearMessages).to.eql(Chat.seenMessage); })); }); }); });