From 233de3a11027fd88130882f20764ee5f2952abe0 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 9 Mar 2019 23:40:06 +0800 Subject: Half work! --- .../internal-user.service.spec.ts | 40 ++++++++++------------ .../mock-internal-user-service.ts | 5 +++ 2 files changed, 23 insertions(+), 22 deletions(-) create mode 100644 Timeline/ClientApp/src/app/user/internal-user-service/mock-internal-user-service.ts (limited to 'Timeline/ClientApp/src/app/user/internal-user-service') diff --git a/Timeline/ClientApp/src/app/user/internal-user-service/internal-user.service.spec.ts b/Timeline/ClientApp/src/app/user/internal-user-service/internal-user.service.spec.ts index 4a2c78f8..8aadd873 100644 --- a/Timeline/ClientApp/src/app/user/internal-user-service/internal-user.service.spec.ts +++ b/Timeline/ClientApp/src/app/user/internal-user-service/internal-user.service.spec.ts @@ -1,14 +1,13 @@ import { TestBed } from '@angular/core/testing'; import { HttpRequest } from '@angular/common/http'; import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { Router } from '@angular/router'; import { UserInfo, UserCredentials } from '../entities'; -import { - InternalUserService, CreateTokenResult, - UserLoginState, TokenValidationRequest, TokenValidationResult -} from './internal-user.service'; +import { CreateTokenRequest, CreateTokenResponse, ValidateTokenRequest, ValidateTokenResponse } from './http-entities'; +import { InternalUserService, UserLoginState } from './internal-user.service'; -describe('UserService', () => { +describe('InternalUserService', () => { const tokenCreateUrl = '/api/User/CreateToken'; const mockUserCredentials: UserCredentials = { @@ -17,7 +16,8 @@ describe('UserService', () => { }; beforeEach(() => TestBed.configureTestingModule({ - imports: [HttpClientTestingModule] + imports: [HttpClientTestingModule], + providers: [{ provide: Router, useValue: null }] })); it('should be created', () => { @@ -27,8 +27,9 @@ describe('UserService', () => { it('should be nologin at first', () => { const service: InternalUserService = TestBed.get(InternalUserService); + expect(service.currentUserInfo).toBe(null); service.refreshAndGetUserState().subscribe(result => { - expect(result.state).toBe('nologin'); + expect(result).toBe('nologin'); }); }); @@ -46,14 +47,16 @@ describe('UserService', () => { const httpController = TestBed.get(HttpTestingController) as HttpTestingController; - httpController.expectOne((request: HttpRequest) => + httpController.expectOne((request: HttpRequest) => request.url === tokenCreateUrl && request.body.username === 'user' && - request.body.password === 'user').flush({ + request.body.password === 'user').flush({ token: 'test-token', userInfo: mockUserInfo }); + expect(service.currentUserInfo).toEqual(mockUserInfo); + httpController.verify(); }); @@ -68,7 +71,7 @@ describe('UserService', () => { const mockToken = 'mock-token'; - const tokenValidateRequestMatcher = (req: HttpRequest) => { + const tokenValidateRequestMatcher = (req: HttpRequest) => { return req.url === '/api/User/ValidateToken' && req.body.token === mockToken; }; @@ -78,7 +81,7 @@ describe('UserService', () => { service.tryLogin(mockUserCredentials).subscribe(); // subscribe to activate login - httpController.expectOne(tokenCreateUrl).flush({ + httpController.expectOne(tokenCreateUrl).flush({ token: mockToken, userInfo: mockUserInfo }); @@ -86,13 +89,10 @@ describe('UserService', () => { it('success should work well', () => { service.refreshAndGetUserState().subscribe((result: UserLoginState) => { - expect(result).toEqual({ - state: 'success', - userInfo: mockUserInfo - }); + expect(result).toEqual('success'); }); - httpController.expectOne(tokenValidateRequestMatcher).flush({ + httpController.expectOne(tokenValidateRequestMatcher).flush({ isValid: true, userInfo: mockUserInfo }); @@ -102,14 +102,10 @@ describe('UserService', () => { it('invalid should work well', () => { service.refreshAndGetUserState().subscribe((result: UserLoginState) => { - expect(result).toEqual({ - state: 'invalidlogin' - }); + expect(result).toEqual('invalidlogin'); }); - httpController.expectOne(tokenValidateRequestMatcher).flush({ - isValid: false - }); + httpController.expectOne(tokenValidateRequestMatcher).flush({ isValid: false }); httpController.verify(); }); diff --git a/Timeline/ClientApp/src/app/user/internal-user-service/mock-internal-user-service.ts b/Timeline/ClientApp/src/app/user/internal-user-service/mock-internal-user-service.ts new file mode 100644 index 00000000..f4a85262 --- /dev/null +++ b/Timeline/ClientApp/src/app/user/internal-user-service/mock-internal-user-service.ts @@ -0,0 +1,5 @@ +import { InternalUserService } from './internal-user.service'; + +export function createMockInternalUserService(): jasmine.SpyObj { + return jasmine.createSpyObj('InternalUserService', ['userRouteNavigate', 'refreshAndGetUserState', 'tryLogin']); +} -- cgit v1.2.3