From 75e280e0903cf01df601075dea4369241f7aff97 Mon Sep 17 00:00:00 2001 From: RachelElysia <71795832+RachelElysia@users.noreply.github.com> Date: Fri, 8 Mar 2024 10:53:02 -0500 Subject: [PATCH] [unreleased bugs] Vuln details page: missing cards, incorrect link (#17495) --- frontend/__mocks__/vulnerabilitiesMock.ts | 8 ++++++-- frontend/interfaces/vulnerability.ts | 2 -- .../SoftwareVulnOSVersions.tsx | 4 ++-- .../SoftwareVulnSoftwareVersions.tsx | 4 ++-- .../SoftwareVulnSummary/SoftwareVulnSummary.tsx | 2 +- .../SoftwareVulnerabilityDetailsPage.tsx | 12 +++++------- frontend/services/entities/vulnerabilities.ts | 4 ++++ 7 files changed, 20 insertions(+), 16 deletions(-) diff --git a/frontend/__mocks__/vulnerabilitiesMock.ts b/frontend/__mocks__/vulnerabilitiesMock.ts index 86adde46c0..9969ea4f07 100644 --- a/frontend/__mocks__/vulnerabilitiesMock.ts +++ b/frontend/__mocks__/vulnerabilitiesMock.ts @@ -17,6 +17,10 @@ const DEFAULT_VULNERABILITY: IVulnerability = { cve_description: "Microsoft Windows Support Diagnostic Tool (MSDT) Remote Code Execution Vulnerability.", // Available in Fleet Premium resolved_in_version: "", // Available in Fleet Premium +}; + +const DEFAULT_VULNERABILITY_DETAILS: IVulnerabilityResponse = { + vulnerability: DEFAULT_VULNERABILITY, os_versions: [ { os_version_id: 1, @@ -130,9 +134,9 @@ const DEFAULT_VULNERABILITIES_RESPONSE: IVulnerabilitiesResponse = { }; export const createMockVulnerabilityResponse = ( - overrides?: Partial + overrides?: Partial ): IVulnerabilityResponse => { - return { vulnerability: { ...DEFAULT_VULNERABILITY, ...overrides } }; + return { ...DEFAULT_VULNERABILITY_DETAILS, ...overrides }; }; // eslint-disable-next-line import/prefer-default-export diff --git a/frontend/interfaces/vulnerability.ts b/frontend/interfaces/vulnerability.ts index cefdc82ddb..92329b2b1a 100644 --- a/frontend/interfaces/vulnerability.ts +++ b/frontend/interfaces/vulnerability.ts @@ -19,6 +19,4 @@ export interface IVulnerability { cve_published?: string | null; // premium cve_description?: string; // premium resolved_in_version?: string; // premium - os_versions: IVulnerabilityOSVersion[]; - software: IVulnerabilitySoftware[]; } diff --git a/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnOSVersions/SoftwareVulnOSVersions.tsx b/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnOSVersions/SoftwareVulnOSVersions.tsx index 7cc2664216..db78e7ac65 100644 --- a/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnOSVersions/SoftwareVulnOSVersions.tsx +++ b/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnOSVersions/SoftwareVulnOSVersions.tsx @@ -5,7 +5,7 @@ import React, { useCallback, useMemo } from "react"; import { InjectedRouter } from "react-router"; import PATHS from "router/paths"; -import { IVulnerability } from "interfaces/vulnerability"; +import { IVulnerabilityResponse } from "services/entities/vulnerabilities"; import { buildQueryStringFromParams } from "utilities/url"; import Card from "components/Card"; import TableContainer from "components/TableContainer"; @@ -15,7 +15,7 @@ import generateColumnConfigs from "./SwVulnOSTableConfig"; const baseClass = "software-vuln-os-versions"; interface ISoftwareVulnOSVersions { - osVersions: IVulnerability["os_versions"]; + osVersions: IVulnerabilityResponse["os_versions"]; isPremiumTier: boolean; router: InjectedRouter; teamIdForApi?: number; diff --git a/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnSoftwareVersions/SoftwareVulnSoftwareVersions.tsx b/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnSoftwareVersions/SoftwareVulnSoftwareVersions.tsx index c19ba2da64..dd87c190ed 100644 --- a/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnSoftwareVersions/SoftwareVulnSoftwareVersions.tsx +++ b/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnSoftwareVersions/SoftwareVulnSoftwareVersions.tsx @@ -4,7 +4,7 @@ import React, { useCallback, useMemo } from "react"; import { InjectedRouter } from "react-router"; -import { IVulnerability } from "interfaces/vulnerability"; +import { IVulnerabilityResponse } from "services/entities/vulnerabilities"; import PATHS from "router/paths"; import { buildQueryStringFromParams } from "utilities/url"; @@ -17,7 +17,7 @@ import generateColumnConfigs from "./SwVulnSwTableConfig"; const baseClass = "software-vuln-software-versions"; interface ISoftwareVulnSoftwareVersions { - vulnSoftware: IVulnerability["software"]; + vulnSoftware: IVulnerabilityResponse["software"]; isPremiumTier: boolean; router: InjectedRouter; teamIdForApi?: number; diff --git a/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnSummary/SoftwareVulnSummary.tsx b/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnSummary/SoftwareVulnSummary.tsx index 853901d5aa..916690f7d7 100644 --- a/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnSummary/SoftwareVulnSummary.tsx +++ b/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnSummary/SoftwareVulnSummary.tsx @@ -45,7 +45,7 @@ const SoftwareVulnSummary = ({ diff --git a/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnerabilityDetailsPage.tsx b/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnerabilityDetailsPage.tsx index ad5210da02..4b1da187d0 100644 --- a/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnerabilityDetailsPage.tsx +++ b/frontend/pages/SoftwarePage/SoftwareVulnerabilityDetailsPage/SoftwareVulnerabilityDetailsPage.tsx @@ -10,7 +10,6 @@ import useTeamIdParam from "hooks/useTeamIdParam"; import { AppContext } from "context/app"; -import { IVulnerability } from "interfaces/vulnerability"; import softwareVulnAPI, { IGetVulnerabilityQueryKey, IVulnerabilityResponse, @@ -29,7 +28,7 @@ import DetailsNoHosts from "../components/DetailsNoHosts"; const baseClass = "software-vulnerability-details-page"; interface ISoftwareVulnerabilityDetailsRouteParams { - vulnerability: string; + cve: string; team_id?: string; } @@ -65,13 +64,13 @@ const SoftwareVulnerabilityDetailsPage = ({ } = useQuery< IVulnerabilityResponse, AxiosError, - IVulnerability, + IVulnerabilityResponse, IGetVulnerabilityQueryKey[] >( [ { scope: "softwareVulnByCVE", - vulnerability: routeParams.vulnerability, + vulnerability: routeParams.cve, teamId: teamIdForApi, }, ], @@ -79,7 +78,6 @@ const SoftwareVulnerabilityDetailsPage = ({ return softwareVulnAPI.getVulnerability(queryKey[0]); }, { - select: (data) => data.vulnerability, onError: (error) => { if (!ignoreAxiosError(error, [403, 404])) { handlePageError(error); @@ -95,10 +93,10 @@ const SoftwareVulnerabilityDetailsPage = ({ [handleTeamChange] ); - const renderCards = (v: IVulnerability) => ( + const renderCards = (v: IVulnerabilityResponse) => ( <> diff --git a/frontend/services/entities/vulnerabilities.ts b/frontend/services/entities/vulnerabilities.ts index c3900e9bb3..eaeaf46cef 100644 --- a/frontend/services/entities/vulnerabilities.ts +++ b/frontend/services/entities/vulnerabilities.ts @@ -3,6 +3,8 @@ import sendRequest from "services"; import endpoints from "utilities/endpoints"; import { IVulnerability } from "interfaces/vulnerability"; import { buildQueryStringFromParams } from "utilities/url"; +import { IVulnerabilityOSVersion } from "interfaces/operating_system"; +import { IVulnerabilitySoftware } from "interfaces/software"; export interface IGetVulnerabilitiesQueryParams { teamId?: number; @@ -40,6 +42,8 @@ export interface IVulnerabilitiesResponse { export interface IVulnerabilityResponse { vulnerability: IVulnerability; + os_versions: IVulnerabilityOSVersion[]; + software: IVulnerabilitySoftware[]; } export const getVulnerabilities = ({