1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-19 01:33:33 +00:00

[PM-13455] Wire up results from RiskInsightsReportService (#12206)

* Risk insights aggregation in a new service. Initial PR.

* Wire up results from RiskInsightsReportService

* Ignoring all non-login items and refactoring into a method

* Cleaning up the documentation a little

* logic for generating the report summary

* application summary to list at risk applications not passwords

* Adding more documentation and moving types to it's own file

* Awaiting the raw data report and adding the start of the test file

* Extend access-intelligence.module to provide needed services

* Register access-intelligence.module with bit-web AppModule

* Use provided RiskInsightsService instead of new'ing one in the component

* Removing the injectable attribute from RiskInsightsReportService

* Fix tests

* Adding more test cases

* Removing unnecessary file

* Test cases update

* Fixing memeber details test to have new member

* Fixing password health tests

* Moving to observables

* removing commented code

* commented code

* Switching from ternary to if/else

* nullable types

* one more nullable type

* Adding the fixme for strict types

* moving the fixme

* No need to access the password use map and switching to the observable

* PM-13455 fixes to unit tests

---------

Co-authored-by: Tom <ttalty@bitwarden.com>
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: Tom <144813356+ttalty@users.noreply.github.com>
Co-authored-by: voommen-livefront <voommen@livefront.com>
This commit is contained in:
Daniel James Smith
2024-12-18 17:13:13 +01:00
committed by GitHub
parent 12b698b11d
commit 12eb77fd45
7 changed files with 64 additions and 96 deletions

View File

@@ -1,5 +1,6 @@
import { TestBed } from "@angular/core/testing";
import { mock } from "jest-mock-extended";
import { firstValueFrom } from "rxjs";
import { ZXCVBNResult } from "zxcvbn";
import { AuditService } from "@bitwarden/common/abstractions/audit.service";
import { PasswordStrengthServiceAbstraction } from "@bitwarden/common/tools/password-strength";
@@ -12,42 +13,31 @@ import { RiskInsightsReportService } from "./risk-insights-report.service";
describe("RiskInsightsReportService", () => {
let service: RiskInsightsReportService;
const pwdStrengthService = mock<PasswordStrengthServiceAbstraction>();
const auditService = mock<AuditService>();
const cipherService = mock<CipherService>();
const memberCipherDetailsService = mock<MemberCipherDetailsApiService>();
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
RiskInsightsReportService,
{
provide: PasswordStrengthServiceAbstraction,
useValue: {
getPasswordStrength: (password: string) => {
const score = password.length < 4 ? 1 : 4;
return { score };
},
},
},
{
provide: AuditService,
useValue: {
passwordLeaked: (password: string) => Promise.resolve(password === "123" ? 100 : 0),
},
},
{
provide: CipherService,
useValue: {
getAllFromApiForOrganization: jest.fn().mockResolvedValue(mockCiphers),
},
},
{
provide: MemberCipherDetailsApiService,
useValue: {
getMemberCipherDetails: jest.fn().mockResolvedValue(mockMemberCipherDetails),
},
},
],
pwdStrengthService.getPasswordStrength.mockImplementation((password: string) => {
const score = password.length < 4 ? 1 : 4;
return { score } as ZXCVBNResult;
});
service = TestBed.inject(RiskInsightsReportService);
auditService.passwordLeaked.mockImplementation((password: string) =>
Promise.resolve(password === "123" ? 100 : 0),
);
cipherService.getAllFromApiForOrganization.mockResolvedValue(mockCiphers);
memberCipherDetailsService.getMemberCipherDetails.mockResolvedValue(mockMemberCipherDetails);
service = new RiskInsightsReportService(
pwdStrengthService,
auditService,
cipherService,
memberCipherDetailsService,
);
});
it("should generate the raw data report correctly", async () => {

View File

@@ -1,7 +1,5 @@
// FIXME: Update this file to be type safe and remove this and next line
// FIXME: Update this file to be type safe
// @ts-strict-ignore
import { Injectable } from "@angular/core";
import { concatMap, first, from, map, Observable, zip } from "rxjs";
import { AuditService } from "@bitwarden/common/abstractions/audit.service";
@@ -24,7 +22,6 @@ import {
import { MemberCipherDetailsApiService } from "./member-cipher-details-api.service";
@Injectable()
export class RiskInsightsReportService {
constructor(
private passwordStrengthService: PasswordStrengthServiceAbstraction,