diff options
author | 杨宇千 <crupest@outlook.com> | 2019-03-14 16:51:46 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-14 16:51:46 +0800 |
commit | c65db42c9ce3532509bbd0b4abfc500692cfe4d3 (patch) | |
tree | 9e6a91af019e14fa3fb40e03bf84507a98a33d4c /Timeline/ClientApp/src/app/user/user-login | |
parent | 4535d1fd30eb02b3fe60718235a0725e3b30049e (diff) | |
parent | 7b929db4fcfa34acc82885b75a573e6e4bd40465 (diff) | |
download | timeline-c65db42c9ce3532509bbd0b4abfc500692cfe4d3.tar.gz timeline-c65db42c9ce3532509bbd0b4abfc500692cfe4d3.tar.bz2 timeline-c65db42c9ce3532509bbd0b4abfc500692cfe4d3.zip |
Merge pull request #13 from crupest/auth-guard
Add auth guard.
Diffstat (limited to 'Timeline/ClientApp/src/app/user/user-login')
-rw-r--r-- | Timeline/ClientApp/src/app/user/user-login/user-login.component.spec.ts | 19 | ||||
-rw-r--r-- | Timeline/ClientApp/src/app/user/user-login/user-login.component.ts | 12 |
2 files changed, 16 insertions, 15 deletions
diff --git a/Timeline/ClientApp/src/app/user/user-login/user-login.component.spec.ts b/Timeline/ClientApp/src/app/user/user-login/user-login.component.spec.ts index 9c9ee1dc..693d5b6e 100644 --- a/Timeline/ClientApp/src/app/user/user-login/user-login.component.spec.ts +++ b/Timeline/ClientApp/src/app/user/user-login/user-login.component.spec.ts @@ -7,7 +7,6 @@ import { ActivatedRoute } from '@angular/router'; import { of, throwError } from 'rxjs'; import { createMockInternalUserService } from '../internal-user-service/internal-user.service.mock'; -import { MockActivatedRoute } from '../../test-utilities/activated-route.mock'; import { UserLoginComponent } from './user-login.component'; import { InternalUserService } from '../internal-user-service/internal-user.service'; import { UserInfo } from '../entities'; @@ -16,17 +15,17 @@ describe('UserLoginComponent', () => { let component: UserLoginComponent; let fixture: ComponentFixture<UserLoginComponent>; let mockInternalUserService: jasmine.SpyObj<InternalUserService>; - let mockActivatedRoute: MockActivatedRoute; beforeEach(async(() => { mockInternalUserService = createMockInternalUserService(); - mockActivatedRoute = new MockActivatedRoute(); + + // mock property + (<any>mockInternalUserService).currentUserInfo = null; TestBed.configureTestingModule({ declarations: [UserLoginComponent], providers: [ - { provide: InternalUserService, useValue: mockInternalUserService }, - { provide: ActivatedRoute, useValue: mockActivatedRoute } + { provide: InternalUserService, useValue: mockInternalUserService } ], imports: [ReactiveFormsModule], schemas: [NO_ERRORS_SCHEMA] @@ -77,22 +76,22 @@ describe('UserLoginComponent', () => { component.onLoginButtonClick(); expect(mockInternalUserService.tryLogin).toHaveBeenCalledWith(mockValue); - expect(mockInternalUserService.userRouteNavigate).toHaveBeenCalledWith(['success', { reason: 'login' }]); + expect(mockInternalUserService.userRouteNavigate).toHaveBeenCalledWith(['success', { fromlogin: 'true' }]); }); describe('message display', () => { it('nologin reason should display', () => { - mockActivatedRoute.pushSnapshotWithParamMap({ reason: 'nologin' }); fixture.detectChanges(); - expect(component.message).toBe('nologin'); + component.message = 'nologin'; + fixture.detectChanges(); expect((fixture.debugElement.query(By.css('p.mat-body')).nativeElement as HTMLParagraphElement).textContent).toBe('You haven\'t login.'); }); it('invalid login reason should display', () => { - mockActivatedRoute.pushSnapshotWithParamMap({ reason: 'invalidlogin' }); fixture.detectChanges(); - expect(component.message).toBe('invalidlogin'); + component.message = 'invalidlogin'; + fixture.detectChanges(); expect((fixture.debugElement.query(By.css('p.mat-body')).nativeElement as HTMLParagraphElement).textContent).toBe('Your login is no longer valid.'); }); diff --git a/Timeline/ClientApp/src/app/user/user-login/user-login.component.ts b/Timeline/ClientApp/src/app/user/user-login/user-login.component.ts index 3505d50b..836202de 100644 --- a/Timeline/ClientApp/src/app/user/user-login/user-login.component.ts +++ b/Timeline/ClientApp/src/app/user/user-login/user-login.component.ts @@ -1,11 +1,10 @@ import { Component, OnInit } from '@angular/core'; import { FormGroup, FormControl } from '@angular/forms'; -import { ActivatedRoute } from '@angular/router'; import { InternalUserService } from '../internal-user-service/internal-user.service'; -export type LoginMessage = 'nologin' | 'invalidlogin' | string | null | undefined; +export type LoginMessage = 'nologin' | 'invalidlogin' | string | null | undefined; @Component({ selector: 'app-user-login', @@ -14,7 +13,7 @@ export type LoginMessage = 'nologin' | 'invalidlogin' | string | null | undefine }) export class UserLoginComponent implements OnInit { - constructor(private route: ActivatedRoute, private userService: InternalUserService) { } + constructor(private userService: InternalUserService) { } message: LoginMessage; @@ -24,12 +23,15 @@ export class UserLoginComponent implements OnInit { }); ngOnInit() { - this.message = this.route.snapshot.paramMap.get('reason'); + if (this.userService.currentUserInfo) { + throw new Error('Route error! Already login!'); + } + this.message = 'nologin'; } onLoginButtonClick() { this.userService.tryLogin(this.form.value).subscribe(_ => { - this.userService.userRouteNavigate(['success', { reason: 'login' }]); + this.userService.userRouteNavigate(['success', { fromlogin: 'true' }]); }, (error: Error) => this.message = error.message); } } |