aboutsummaryrefslogtreecommitdiff
path: root/Timeline/ClientApp/src/app/user/auth.guard.spec.ts
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2019-04-11 20:02:33 +0800
committerGitHub <noreply@github.com>2019-04-11 20:02:33 +0800
commit5b5ca3acb1b9decb5ad13798dc79ba2d58f2ce95 (patch)
tree695f7fc0bd2f6d940f64739a1f1f500c36806cef /Timeline/ClientApp/src/app/user/auth.guard.spec.ts
parent1c9edc5914869a3bbde20742c483182636ee4d43 (diff)
parentc28941c6d86f8ea33521bba49d811bf3ff60b3d1 (diff)
downloadtimeline-5b5ca3acb1b9decb5ad13798dc79ba2d58f2ce95.tar.gz
timeline-5b5ca3acb1b9decb5ad13798dc79ba2d58f2ce95.tar.bz2
timeline-5b5ca3acb1b9decb5ad13798dc79ba2d58f2ce95.zip
Merge pull request #17 from crupest/15-user
Remember me and log out feature.
Diffstat (limited to 'Timeline/ClientApp/src/app/user/auth.guard.spec.ts')
-rw-r--r--Timeline/ClientApp/src/app/user/auth.guard.spec.ts30
1 files changed, 19 insertions, 11 deletions
diff --git a/Timeline/ClientApp/src/app/user/auth.guard.spec.ts b/Timeline/ClientApp/src/app/user/auth.guard.spec.ts
index 42e35bf7..6a36fea6 100644
--- a/Timeline/ClientApp/src/app/user/auth.guard.spec.ts
+++ b/Timeline/ClientApp/src/app/user/auth.guard.spec.ts
@@ -1,3 +1,5 @@
+import { Observable, of } from 'rxjs';
+
import { AuthGuard, AuthStrategy } from './auth.guard';
import { UserInfo } from './entities';
@@ -8,10 +10,9 @@ describe('AuthGuard', () => {
}
authStrategy: AuthStrategy = 'all';
- onAuthFailed: () => void = () => { };
}
- let mockUserService: { currentUserInfo: UserInfo | null };
+ let mockUserService: { userInfo$: Observable<UserInfo | null> };
let guard: ConfiurableAuthGuard;
let onAuthFialedSpy: jasmine.Spy;
@@ -28,19 +29,27 @@ describe('AuthGuard', () => {
return () => {
guard.authStrategy = authStrategy;
- mockUserService.currentUserInfo = null;
- expect(guard.canActivate(<any>null, <any>null)).toBe(result.nologin);
+ function testWith(userInfo: UserInfo | null, r: boolean) {
+ mockUserService.userInfo$ = of(userInfo);
- mockUserService.currentUserInfo = { username: 'user', roles: [] };
- expect(guard.canActivate(<any>null, <any>null)).toBe(result.loginWithNoRole);
+ const rawResult = guard.canActivate(<any>null, <any>null);
+ if (typeof rawResult === 'boolean') {
+ expect(rawResult).toBe(r);
+ } else if (rawResult instanceof Observable) {
+ rawResult.subscribe(next => expect(next).toBe(r));
+ } else {
+ throw new Error('Unsupported return type.');
+ }
+ }
- mockUserService.currentUserInfo = { username: 'user', roles: mockRoles };
- expect(guard.canActivate(<any>null, <any>null)).toBe(result.loginWithMockRoles);
+ testWith(null, result.nologin);
+ testWith({ username: 'user', roles: [] }, result.loginWithNoRole);
+ testWith({ username: 'user', roles: mockRoles }, result.loginWithMockRoles);
};
}
beforeEach(() => {
- mockUserService = { currentUserInfo: null };
+ mockUserService = { userInfo$: of(null) };
guard = new ConfiurableAuthGuard(mockUserService);
onAuthFialedSpy = spyOn(guard, 'onAuthFailed');
});
@@ -54,8 +63,7 @@ describe('AuthGuard', () => {
it('auth failed callback should be called', () => {
guard.authStrategy = 'requirelogin';
- mockUserService.currentUserInfo = null;
- guard.canActivate(<any>null, <any>null);
+ (<Observable<boolean>>guard.canActivate(<any>null, <any>null)).subscribe();
expect(onAuthFialedSpy).toHaveBeenCalled();
});
});