Commit 5dcaf6413b05bcf5d3bed110bc58ff880f6ab4ea
1 parent
494fb34f
Exists in
master
and in
35 other branches
added auth service spec
Showing
2 changed files
with
68 additions
and
1 deletions
Show diff stats
| @@ -0,0 +1,67 @@ | @@ -0,0 +1,67 @@ | ||
| 1 | + | ||
| 2 | + | ||
| 3 | +import {AuthService, AUTH_EVENTS} from "./"; | ||
| 4 | +import {User, Credentials} from "./../../models/interfaces"; | ||
| 5 | + | ||
| 6 | +describe("Auth Service", () => { | ||
| 7 | + | ||
| 8 | + let $httpBackend: ng.IHttpBackendService; | ||
| 9 | + let authService: AuthService; | ||
| 10 | + let credentials: Credentials; | ||
| 11 | + let $rootScope: ng.IRootScopeService; | ||
| 12 | + let user: User; | ||
| 13 | + | ||
| 14 | + beforeEach(angular.mock.module("noosferoApp")); | ||
| 15 | + | ||
| 16 | + beforeEach(inject((_$httpBackend_: ng.IHttpBackendService, _$rootScope_: ng.IRootScopeService, _AuthService_: AuthService) => { | ||
| 17 | + $httpBackend = _$httpBackend_; | ||
| 18 | + authService = _AuthService_; | ||
| 19 | + $rootScope = _$rootScope_; | ||
| 20 | + | ||
| 21 | + user = <User>{ | ||
| 22 | + id: 1, | ||
| 23 | + login: "user" | ||
| 24 | + }; | ||
| 25 | + })); | ||
| 26 | + | ||
| 27 | + | ||
| 28 | + describe("Succesffull login", () => { | ||
| 29 | + | ||
| 30 | + beforeEach(() => { | ||
| 31 | + credentials = { username: "user", password: "password" }; | ||
| 32 | + | ||
| 33 | + $httpBackend.expectPOST("/api/v1/login", "login=user&password=password").respond(200, { user: user }); | ||
| 34 | + }); | ||
| 35 | + | ||
| 36 | + it("should return loggedUser", (done) => { | ||
| 37 | + authService.login(credentials).then((loggedUser) => { | ||
| 38 | + expect(loggedUser).toBeDefined(); | ||
| 39 | + done(); | ||
| 40 | + }); | ||
| 41 | + $httpBackend.flush(); | ||
| 42 | + expect($httpBackend.verifyNoOutstandingRequest()); | ||
| 43 | + }); | ||
| 44 | + | ||
| 45 | + | ||
| 46 | + it("should emit event loggin successful with user logged data", () => { | ||
| 47 | + | ||
| 48 | + authService.login(credentials); | ||
| 49 | + | ||
| 50 | + let eventEmmited: boolean = false; | ||
| 51 | + $rootScope.$on(AUTH_EVENTS.loginSuccess, (event: ng.IAngularEvent, userThroughEvent: User) => { | ||
| 52 | + eventEmmited = true; | ||
| 53 | + expect(userThroughEvent).toEqual(user) | ||
| 54 | + }); | ||
| 55 | + | ||
| 56 | + $httpBackend.flush(); | ||
| 57 | + | ||
| 58 | + expect(eventEmmited).toBeTruthy(AUTH_EVENTS.loginSuccess + " was not emmited!"); | ||
| 59 | + }); | ||
| 60 | + | ||
| 61 | + }); | ||
| 62 | + | ||
| 63 | + | ||
| 64 | + | ||
| 65 | + | ||
| 66 | +}); | ||
| 67 | + | ||
| 0 | \ No newline at end of file | 68 | \ No newline at end of file |
src/app/components/auth/auth_service.ts
| @@ -32,7 +32,7 @@ export class AuthService { | @@ -32,7 +32,7 @@ export class AuthService { | ||
| 32 | return currentUser; | 32 | return currentUser; |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | - login(credentials: Credentials) { | 35 | + login(credentials: Credentials): ng.IPromise<User> { |
| 36 | let url = '/api/v1/login'; | 36 | let url = '/api/v1/login'; |
| 37 | let encodedData = 'login=' + credentials.username + '&password=' + credentials.password; | 37 | let encodedData = 'login=' + credentials.username + '&password=' + credentials.password; |
| 38 | return this.$http.post(url, encodedData).then(this.loginSuccessCallback.bind(this), this.loginFailedCallback.bind(this)); | 38 | return this.$http.post(url, encodedData).then(this.loginSuccessCallback.bind(this), this.loginFailedCallback.bind(this)); |