1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-19 02:44:01 +00:00

Move risk insights services to folder structure capturing domains, api, and view organization. Move mock data

This commit is contained in:
Leslie Tilton
2025-10-08 22:38:31 -05:00
parent f8653c7424
commit aefba1f00f
23 changed files with 56 additions and 97 deletions

View File

@@ -3,14 +3,13 @@ import { mock } from "jest-mock-extended";
import { CipherType } from "@bitwarden/common/vault/enums";
import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
import { MemberCipherDetailsResponse } from "../response/member-cipher-details.response";
import { ApplicationHealthReportDetailEnriched } from "./report-data-service.types";
import { MemberCipherDetailsResponse } from "../../response/member-cipher-details.response";
import { ApplicationHealthReportDetailEnriched } from "../report-data-service.types";
import {
ApplicationHealthReportDetail,
OrganizationReportApplication,
OrganizationReportSummary,
} from "./report-models";
} from "../report-models";
const mockApplication1: ApplicationHealthReportDetail = {
applicationName: "application1.com",

View File

@@ -7,8 +7,8 @@ import {
PasswordHealthReportApplicationDropRequest,
PasswordHealthReportApplicationsRequest,
PasswordHealthReportApplicationsResponse,
} from "../models/api-models.types";
import { PasswordHealthReportApplicationId } from "../models/report-models";
} from "../../models/api-models.types";
import { PasswordHealthReportApplicationId } from "../../models/report-models";
import { CriticalAppsApiService } from "./critical-apps-api.service";

View File

@@ -7,7 +7,7 @@ import {
PasswordHealthReportApplicationDropRequest,
PasswordHealthReportApplicationsRequest,
PasswordHealthReportApplicationsResponse,
} from "../models/api-models.types";
} from "../../models/api-models.types";
export class CriticalAppsApiService {
constructor(private apiService: ApiService) {}

View File

@@ -2,7 +2,7 @@ import { Injectable } from "@angular/core";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
import { MemberCipherDetailsResponse } from "../response/member-cipher-details.response";
import { MemberCipherDetailsResponse } from "../../response/member-cipher-details.response";
@Injectable()
export class MemberCipherDetailsApiService {

View File

@@ -7,17 +7,16 @@ import { ErrorResponse } from "@bitwarden/common/models/response/error.response"
import { makeEncString } from "@bitwarden/common/spec";
import { OrganizationId, OrganizationReportId } from "@bitwarden/common/types/guid";
import { EncryptedDataWithKey } from "../models";
import { EncryptedDataWithKey } from "../../models";
import {
GetRiskInsightsApplicationDataResponse,
GetRiskInsightsReportResponse,
GetRiskInsightsSummaryResponse,
SaveRiskInsightsReportRequest,
SaveRiskInsightsReportResponse,
} from "../models/api-models.types";
import { mockApplicationData, mockReportData, mockSummaryData } from "../models/mock-data";
import { RiskInsightsApiService } from "./risk-insights-api.service";
} from "../../models/api-models.types";
import { mockApplicationData, mockReportData, mockSummaryData } from "../../models/mocks/mock-data";
import { RiskInsightsApiService } from "../api/risk-insights-api.service";
describe("RiskInsightsApiService", () => {
let service: RiskInsightsApiService;

View File

@@ -4,14 +4,14 @@ import { ApiService } from "@bitwarden/common/abstractions/api.service";
import { ErrorResponse } from "@bitwarden/common/models/response/error.response";
import { OrganizationId, OrganizationReportId } from "@bitwarden/common/types/guid";
import { EncryptedDataWithKey, OrganizationReportApplication } from "../models";
import { EncryptedDataWithKey, OrganizationReportApplication } from "../../models";
import {
GetRiskInsightsApplicationDataResponse,
GetRiskInsightsReportResponse,
GetRiskInsightsSummaryResponse,
SaveRiskInsightsReportRequest,
SaveRiskInsightsReportResponse,
} from "../models/api-models.types";
} from "../../models/api-models.types";
export class RiskInsightsApiService {
constructor(private apiService: ApiService) {}

View File

@@ -14,10 +14,10 @@ import { KeyService } from "@bitwarden/key-management";
import {
PasswordHealthReportApplicationsRequest,
PasswordHealthReportApplicationsResponse,
} from "../models/api-models.types";
import { PasswordHealthReportApplicationId } from "../models/report-models";
} from "../../models/api-models.types";
import { PasswordHealthReportApplicationId } from "../../models/report-models";
import { CriticalAppsApiService } from "../api/critical-apps-api.service";
import { CriticalAppsApiService } from "./critical-apps-api.service";
import { CriticalAppsService } from "./critical-apps.service";
const SomeCsprngArray = new Uint8Array(64) as CsprngArray;

View File

@@ -20,9 +20,8 @@ import { KeyService } from "@bitwarden/key-management";
import {
PasswordHealthReportApplicationsRequest,
PasswordHealthReportApplicationsResponse,
} from "../models/api-models.types";
import { CriticalAppsApiService } from "./critical-apps-api.service";
} from "../../models/api-models.types";
import { CriticalAppsApiService } from "../api/critical-apps-api.service";
/* Retrieves and decrypts critical apps for a given organization
* Encrypts and saves data for a given organization

View File

@@ -10,7 +10,7 @@ import {
ExposedPasswordDetail,
WeakPasswordDetail,
WeakPasswordScore,
} from "../models/password-health";
} from "../../models/password-health";
export class PasswordHealthService {
constructor(

View File

@@ -10,8 +10,8 @@ import { OrganizationId, UserId } from "@bitwarden/common/types/guid";
import { OrgKey } from "@bitwarden/common/types/key";
import { KeyService } from "@bitwarden/key-management";
import { EncryptedReportData, DecryptedReportData } from "../models";
import { mockApplicationData, mockReportData, mockSummaryData } from "../models/mock-data";
import { EncryptedReportData, DecryptedReportData } from "../../models";
import { mockApplicationData, mockReportData, mockSummaryData } from "../../models/mocks/mock-data";
import { RiskInsightsEncryptionService } from "./risk-insights-encryption.service";

View File

@@ -7,7 +7,7 @@ import { SymmetricCryptoKey } from "@bitwarden/common/platform/models/domain/sym
import { OrganizationId, UserId } from "@bitwarden/common/types/guid";
import { KeyService } from "@bitwarden/key-management";
import { DecryptedReportData, EncryptedReportData, EncryptedDataWithKey } from "../models";
import { DecryptedReportData, EncryptedReportData, EncryptedDataWithKey } from "../../models";
export class RiskInsightsEncryptionService {
constructor(

View File

@@ -6,24 +6,24 @@ import { makeEncString } from "@bitwarden/common/spec";
import { OrganizationId, UserId } from "@bitwarden/common/types/guid";
import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service";
import { DecryptedReportData, EncryptedDataWithKey } from "../models";
import { DecryptedReportData, EncryptedDataWithKey } from "../../models";
import {
GetRiskInsightsReportResponse,
SaveRiskInsightsReportResponse,
} from "../models/api-models.types";
} from "../../models/api-models.types";
import { mockCiphers } from "../../models/mocks/ciphers.mock";
import {
mockApplicationData,
mockCipherViews,
mockMemberDetails,
mockReportData,
mockSummaryData,
} from "../models/mock-data";
} from "../../models/mocks/mock-data";
import { MemberCipherDetailsApiService } from "../api/member-cipher-details-api.service";
import { mockMemberCipherDetails } from "../api/member-cipher-details-api.service.spec";
import { RiskInsightsApiService } from "../api/risk-insights-api.service";
import { mockCiphers } from "./ciphers.mock";
import { MemberCipherDetailsApiService } from "./member-cipher-details-api.service";
import { mockMemberCipherDetails } from "./member-cipher-details-api.service.spec";
import { PasswordHealthService } from "./password-health.service";
import { RiskInsightsApiService } from "./risk-insights-api.service";
import { RiskInsightsEncryptionService } from "./risk-insights-encryption.service";
import { RiskInsightsReportService } from "./risk-insights-report.service";

View File

@@ -26,17 +26,17 @@ import {
getMemberDetailsFlat,
getTrimmedCipherUris,
getUniqueMembers,
} from "../helpers/risk-insights-data-mappers";
} from "../../helpers/risk-insights-data-mappers";
import {
isSaveRiskInsightsReportResponse,
SaveRiskInsightsReportResponse,
} from "../models/api-models.types";
} from "../../models/api-models.types";
import {
LEGACY_CipherHealthReportDetail,
LEGACY_CipherHealthReportUriDetail,
LEGACY_MemberDetailsFlat,
LEGACY_ApplicationHealthReportDetailWithCriticalFlagAndCipher,
} from "../models/password-health";
} from "../../models/password-health";
import {
ApplicationHealthReportDetail,
OrganizationReportSummary,
@@ -47,11 +47,11 @@ import {
PasswordHealthData,
OrganizationReportApplication,
RiskInsightsData,
} from "../models/report-models";
} from "../../models/report-models";
import { MemberCipherDetailsApiService } from "../api/member-cipher-details-api.service";
import { RiskInsightsApiService } from "../api/risk-insights-api.service";
import { MemberCipherDetailsApiService } from "./member-cipher-details-api.service";
import { PasswordHealthService } from "./password-health.service";
import { RiskInsightsApiService } from "./risk-insights-api.service";
import { RiskInsightsEncryptionService } from "./risk-insights-encryption.service";
export class RiskInsightsReportService {

View File

@@ -1,9 +1,9 @@
export * from "./member-cipher-details-api.service";
export * from "./password-health.service";
export * from "./critical-apps.service";
export * from "./critical-apps-api.service";
export * from "./risk-insights-api.service";
export * from "./risk-insights-report.service";
export * from "./risk-insights-data.service";
export * from "./all-activities.service";
export * from "./security-tasks-api.service";
export * from "./api/member-cipher-details-api.service";
export * from "./domain/password-health.service";
export * from "./domain/critical-apps.service";
export * from "./api/critical-apps-api.service";
export * from "./api/risk-insights-api.service";
export * from "./domain/risk-insights-report.service";
export * from "./view/risk-insights-data.service";
export * from "./view/all-activities.service";
export * from "./api/security-tasks-api.service";

View File

@@ -1,7 +1,7 @@
import { BehaviorSubject } from "rxjs";
import { ApplicationHealthReportDetailEnriched } from "../models";
import { OrganizationReportSummary } from "../models/report-models";
import { ApplicationHealthReportDetailEnriched } from "../../models";
import { OrganizationReportSummary } from "../../models/report-models";
import { RiskInsightsDataService } from "./risk-insights-data.service";

View File

@@ -20,12 +20,15 @@ import { AccountService } from "@bitwarden/common/auth/abstractions/account.serv
import { getUserId } from "@bitwarden/common/auth/services/account.service";
import { OrganizationId, UserId } from "@bitwarden/common/types/guid";
import { ApplicationHealthReportDetailEnriched } from "../models";
import { RiskInsightsEnrichedData } from "../models/report-data-service.types";
import { DrawerType, DrawerDetails, ApplicationHealthReportDetail } from "../models/report-models";
import { CriticalAppsService } from "./critical-apps.service";
import { RiskInsightsReportService } from "./risk-insights-report.service";
import { ApplicationHealthReportDetailEnriched } from "../../models";
import { RiskInsightsEnrichedData } from "../../models/report-data-service.types";
import {
DrawerType,
DrawerDetails,
ApplicationHealthReportDetail,
} from "../../models/report-models";
import { CriticalAppsService } from "../domain/critical-apps.service";
import { RiskInsightsReportService } from "../domain/risk-insights-report.service";
export class RiskInsightsDataService {
// -------------------------- Context state --------------------------
@@ -40,17 +43,6 @@ export class RiskInsightsDataService {
} | null>(null);
organizationDetails$ = this.organizationDetailsSubject.asObservable();
// -------------------------- Data ------------------------------------
// TODO: Remove. Will use report results
private LEGACY_applicationsSubject = new BehaviorSubject<ApplicationHealthReportDetail[] | null>(
null,
);
LEGACY_applications$ = this.LEGACY_applicationsSubject.asObservable();
// TODO: Remove. Will use date from report results
private LEGACY_dataLastUpdatedSubject = new BehaviorSubject<Date | null>(null);
dataLastUpdated$ = this.LEGACY_dataLastUpdatedSubject.asObservable();
// --------------------------- UI State ------------------------------------
private isLoadingSubject = new BehaviorSubject<boolean>(false);
isLoading$ = this.isLoadingSubject.asObservable();
@@ -154,36 +146,6 @@ export class RiskInsightsDataService {
});
}
/**
* Fetches the applications report and updates the applicationsSubject.
* @param organizationId The ID of the organization.
*/
LEGACY_fetchApplicationsReport(organizationId: OrganizationId, isRefresh?: boolean): void {
if (isRefresh) {
this.isRefreshingSubject.next(true);
} else {
this.isLoadingSubject.next(true);
}
this.reportService
.LEGACY_generateApplicationsReport$(organizationId)
.pipe(
finalize(() => {
this.isLoadingSubject.next(false);
this.isRefreshingSubject.next(false);
this.LEGACY_dataLastUpdatedSubject.next(new Date());
}),
)
.subscribe({
next: (reports: ApplicationHealthReportDetail[]) => {
this.LEGACY_applicationsSubject.next(reports);
this.errorSubject.next(null);
},
error: () => {
this.LEGACY_applicationsSubject.next([]);
},
});
}
// ------------------------------- Enrichment methods -------------------------------
/**
* Takes the basic application health report details and enriches them to include

View File

@@ -12,7 +12,7 @@ import {
RiskInsightsReportService,
SecurityTasksApiService,
} from "@bitwarden/bit-common/dirt/reports/risk-insights/services";
import { RiskInsightsEncryptionService } from "@bitwarden/bit-common/dirt/reports/risk-insights/services/risk-insights-encryption.service";
import { RiskInsightsEncryptionService } from "@bitwarden/bit-common/dirt/reports/risk-insights/services/domain/risk-insights-encryption.service";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
import { AuditService } from "@bitwarden/common/abstractions/audit.service";
import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";