Skip to content

Commit 4250cbf

Browse files
fix: TTA-83 improve admin validation
1 parent c21ed5a commit 4250cbf

File tree

3 files changed

+40
-46
lines changed

3 files changed

+40
-46
lines changed

src/app/app.module.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ import { ActivityEffects } from './modules/activities-management/store/activity-
4848
import { ProjectEffects } from './modules/customer-management/components/projects/components/store/project.effects';
4949
import { TechnologyEffects } from './modules/shared/store/technology.effects';
5050
import { ProjectTypeEffects } from './modules/customer-management/components/projects-type/store/project-type.effects';
51-
import { reducers, metaReducers } from './reducers';
51+
import { reducers } from './reducers';
5252
import { CLIENT_URL, environment } from '../environments/environment';
5353
import { EnvironmentType } from '../environments/enum';
5454
import { CustomerComponent } from './modules/customer-management/pages/customer.component';
@@ -179,7 +179,6 @@ const maskConfig: Partial<IConfig> = {
179179
MatIconModule,
180180
MatListModule,
181181
StoreModule.forRoot(reducers, {
182-
metaReducers,
183182
}),
184183
environment.production === EnvironmentType.TT_DEV
185184
? StoreDevtoolsModule.instrument({
Lines changed: 31 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
import { TestBed } from '@angular/core/testing';
2-
import { MockStore, provideMockStore } from '@ngrx/store/testing';
32
import { of } from 'rxjs';
4-
import { getUserGroups } from '../store/user.selectors';
53
import { UserInfoService } from './user-info.service';
4+
import { LoginService } from '../../login/services/login.service';
5+
66

77
describe('UserInfoService', () => {
88
let service: UserInfoService;
9-
let store: MockStore;
10-
let mockGetUserGroupsSelector: any;
11-
const initialState = {
9+
const userTest = {
1210
name: 'Unknown Name',
1311
1412
roles: [],
@@ -18,61 +16,60 @@ describe('UserInfoService', () => {
1816
deleted: '',
1917
};
2018

19+
const mockLoginService = {
20+
getLocalStorage: () => {
21+
return JSON.stringify(userTest);
22+
}
23+
};
24+
2125
beforeEach(() => {
2226
TestBed.configureTestingModule({
23-
providers: [provideMockStore({ initialState })],
27+
providers: [{ provide : LoginService, useValue: mockLoginService}],
2428
});
2529
service = TestBed.inject(UserInfoService);
26-
store = TestBed.inject(MockStore);
27-
mockGetUserGroupsSelector = store.overrideSelector(getUserGroups, initialState.groups);
2830
});
2931

3032
it('should be created', () => {
3133
expect(service).toBeTruthy();
3234
});
3335

34-
it('should call groups selector', () => {
35-
const expectedGroups = ['fake-admin', 'fake-tester'];
36-
37-
service.groups().subscribe((value) => {
38-
expect(value).toEqual(expectedGroups);
39-
});
40-
});
41-
4236
const params = [
43-
{ groupName: 'fake-admin', expectedValue: true, groups: ['fake-admin', 'fake-tester'] },
44-
{ groupName: 'fake-owner', expectedValue: false, groups: ['fake-admin', 'fake-tester'] },
37+
{ groupName: 'fake-admin', expectedValue: true },
38+
{ groupName: 'fake-owner', expectedValue: false },
4539
];
4640

4741
params.map((param) => {
48-
it(`given group ${param.groupName} and groups [${param.groups.toString()}], isMemberOf() should return ${
42+
it(`given group ${param.groupName} and groups [${userTest.groups.toString()}], isMemberOf() should return ${
4943
param.expectedValue
5044
}`, () => {
51-
const groups$ = of(param.groups);
52-
53-
spyOn(service, 'groups').and.returnValue(groups$);
54-
5545
service.isMemberOf(param.groupName).subscribe((value) => {
56-
expect(value).toEqual(param.expectedValue);
46+
if (param.groupName === 'fake-admin') {
47+
expect(value).toEqual(true);
48+
} else {
49+
expect(value).toEqual(false);
50+
}
5751
});
5852
});
5953
});
6054

6155
it('should return true if is Admin', () => {
62-
const isMemberOf = spyOn(service, 'isMemberOf').and.returnValue(of(true));
56+
service.isMemberOf('fake-admin').subscribe((value) => {
57+
expect(value).toEqual(true);
58+
});
59+
});
6360

61+
it('should call isAdmin user', () => {
62+
spyOn(service, 'isMemberOf').withArgs('time-tracker-admin').and.returnValue(of(true));
6463
service.isAdmin().subscribe((value) => {
65-
expect(value).toBeTrue();
66-
});
67-
expect(isMemberOf).toHaveBeenCalled();
64+
expect(value).toEqual(true);
65+
});
6866
});
6967

70-
it('should return true if is Tester', () => {
71-
const isMemberOf = spyOn(service, 'isMemberOf').and.returnValue(of(true));
72-
68+
it('should call isTester user', () => {
69+
spyOn(service, 'isMemberOf').withArgs('time-tracker-tester').and.returnValue(of(true));
7370
service.isTester().subscribe((value) => {
74-
expect(value).toBeTrue();
75-
});
76-
expect(isMemberOf).toHaveBeenCalled();
71+
expect(value).toEqual(true);
72+
});
7773
});
74+
7875
});

src/app/modules/user/services/user-info.service.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
11
import { Injectable } from '@angular/core';
2-
import { select, Store } from '@ngrx/store';
3-
import { Observable } from 'rxjs';
4-
import { map } from 'rxjs/operators';
5-
import { getUserGroups } from '../store/user.selectors';
2+
import { Observable, of } from 'rxjs';
63
import { GROUPS } from '../../../../environments/environment';
74

5+
import { LoginService } from '../../login/services/login.service';
6+
7+
88
@Injectable({
99
providedIn: 'root',
1010
})
1111
export class UserInfoService {
12-
constructor(private store: Store) {}
13-
14-
groups(): Observable<string[]> {
15-
return this.store.pipe(select(getUserGroups));
16-
}
12+
constructor(private loginService: LoginService) {}
1713

1814
isMemberOf(groupName: string): Observable<boolean> {
19-
return this.groups().pipe(map((groups: string[]) => groups.includes(groupName)));
15+
const user = JSON.parse(this.loginService.getLocalStorage('user2'));
16+
const {groups = []} = user;
17+
return of(groups.includes(groupName));
2018
}
2119

2220
isAdmin(): Observable<boolean> {

0 commit comments

Comments
 (0)