diff --git a/web/package.json b/web/package.json index d4869c0a85..d281b34f65 100644 --- a/web/package.json +++ b/web/package.json @@ -51,7 +51,7 @@ "@codemirror/view": "^6.9.6", "@harnessio/design-system": "^2.1.1", "@harnessio/icons": "^2.1.18", - "@harnessio/react-har-service-client": "0.49.0", + "@harnessio/react-har-service-client": "0.50.0", "@harnessio/react-ng-manager-client": "^1.40.0", "@harnessio/react-ssca-manager-client": "^0.65.0", "@harnessio/uicore": "^4.3.4", diff --git a/web/src/ar/MFEAppTypes.ts b/web/src/ar/MFEAppTypes.ts index e4fb586e2d..da9a428bbe 100644 --- a/web/src/ar/MFEAppTypes.ts +++ b/web/src/ar/MFEAppTypes.ts @@ -19,11 +19,13 @@ import type React from 'react' import type { PermissionIdentifier, ResourceType } from '@ar/common/permissionTypes' import type RbacButton from '@ar/__mocks__/components/RbacButton' import type RbacMenuItem from '@ar/__mocks__/components/RbacMenuItem' +import type OssOverviewView from '@ar/__mocks__/components/OssOverviewView' import type NGBreadcrumbs from '@ar/__mocks__/components/NGBreadcrumbs' import type PageNotPublic from '@ar/__mocks__/components/PageNotPublic' import type DependencyView from '@ar/__mocks__/components/DependencyView' import type SecretFormInput from '@ar/__mocks__/components/SecretFormInput' import type VulnerabilityView from '@ar/__mocks__/components/VulnerabilityView' +import type OssVulnerabilitiesView from '@ar/__mocks__/components/OssVulnerabilitiesView' import type PolicySetFixedTypeSelector from '@ar/__mocks__/components/PolicySetFixedTypeSelector' import type { ModalProvider, @@ -106,6 +108,8 @@ export interface CustomComponents { SecretFormInput: typeof SecretFormInput VulnerabilityView: typeof VulnerabilityView DependencyView: typeof DependencyView + OssOverviewView: typeof OssOverviewView + OssVulnerabilitiesView: typeof OssVulnerabilitiesView PolicySetFixedTypeSelector: typeof PolicySetFixedTypeSelector PageNotPublic: typeof PageNotPublic } diff --git a/web/src/ar/__mocks__/components/OssOverviewView.tsx b/web/src/ar/__mocks__/components/OssOverviewView.tsx new file mode 100644 index 0000000000..b4ed9dcc4c --- /dev/null +++ b/web/src/ar/__mocks__/components/OssOverviewView.tsx @@ -0,0 +1,26 @@ +/* + * Copyright 2024 Harness, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react' + +interface OssSbomOverviewViewProps { + purl: string + onViewVulnerabilities: () => void +} + +export default function OssOverviewView(_props: OssSbomOverviewViewProps) { + return <>Mock Oss Overview View +} diff --git a/web/src/ar/__mocks__/components/OssVulnerabilitiesView.tsx b/web/src/ar/__mocks__/components/OssVulnerabilitiesView.tsx new file mode 100644 index 0000000000..1791278715 --- /dev/null +++ b/web/src/ar/__mocks__/components/OssVulnerabilitiesView.tsx @@ -0,0 +1,25 @@ +/* + * Copyright 2024 Harness, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react' + +interface OssSbomVulnerabilitiesViewProps { + purl: string +} + +export default function OssVulnerabilitiesView(_props: OssSbomVulnerabilitiesViewProps) { + return <>Mock Oss Vulnerabilities View +} diff --git a/web/src/ar/pages/version-details/ComposerVersion/ComposerVersionType.tsx b/web/src/ar/pages/version-details/ComposerVersion/ComposerVersionType.tsx index b4508b27fc..aab579b9f9 100644 --- a/web/src/ar/pages/version-details/ComposerVersion/ComposerVersionType.tsx +++ b/web/src/ar/pages/version-details/ComposerVersion/ComposerVersionType.tsx @@ -50,6 +50,7 @@ import VersionDetailsHeaderContent from '../components/VersionDetailsHeaderConte import VersionTreeNode from '../components/VersionTreeNode/VersionTreeNode' import VersionDetailsTabs from '../components/VersionDetailsTabs/VersionDetailsTabs' import DartVersionOverviewPage from './pages/overview/ComposerVersionOverviewPage' +import ScanDetailsPage from '../components/ScanDetailsPage/ScanDetailsPage' export class ComposerVersionType extends VersionStep { protected packageType = RepositoryPackageType.COMPOSER @@ -57,6 +58,7 @@ export class ComposerVersionType extends VersionStep { protected allowedVersionDetailsTabs: VersionDetailsTab[] = [ VersionDetailsTab.OVERVIEW, VersionDetailsTab.ARTIFACT_DETAILS, + VersionDetailsTab.EVALUATION_DETAILS, VersionDetailsTab.CODE ] @@ -109,6 +111,8 @@ export class ComposerVersionType extends VersionStep { ) + case VersionDetailsTab.EVALUATION_DETAILS: + return case VersionDetailsTab.OSS: return ( diff --git a/web/src/ar/pages/version-details/DockerVersion/__tests__/__mockData__.ts b/web/src/ar/pages/version-details/DockerVersion/__tests__/__mockData__.ts index afdfb7d45d..0cf018bbcf 100644 --- a/web/src/ar/pages/version-details/DockerVersion/__tests__/__mockData__.ts +++ b/web/src/ar/pages/version-details/DockerVersion/__tests__/__mockData__.ts @@ -87,7 +87,8 @@ export const mockDockerVersionSummary: ArtifactVersionSummaryResponseResponse = stoPipelineId: 'HARNESS_ARTIFACT_SCAN_PIPELINE', version: '1.0.0', uuid: 'uuid', - registryUUID: 'uuid' + registryUUID: 'uuid', + purl: 'test' }, status: 'SUCCESS' } @@ -98,7 +99,8 @@ export const mockDockerVersionSummaryWithoutSscaAndStoData: ArtifactVersionSumma packageType: 'DOCKER', version: '1.0.0', uuid: 'uuid', - registryUUID: 'uuid' + registryUUID: 'uuid', + purl: 'test' }, status: 'SUCCESS' } diff --git a/web/src/ar/pages/version-details/GenericVersion/__tests__/__mockData__.ts b/web/src/ar/pages/version-details/GenericVersion/__tests__/__mockData__.ts index a901205b4d..13c88bd145 100644 --- a/web/src/ar/pages/version-details/GenericVersion/__tests__/__mockData__.ts +++ b/web/src/ar/pages/version-details/GenericVersion/__tests__/__mockData__.ts @@ -49,7 +49,8 @@ export const mockGenericVersionSummary: ArtifactVersionSummaryResponseResponse = packageType: 'GENERIC', version: '1.0.0', uuid: 'uuid', - registryUUID: 'uuid' + registryUUID: 'uuid', + purl: 'test' }, status: 'SUCCESS' } diff --git a/web/src/ar/pages/version-details/GoVersion/GoVersionType.tsx b/web/src/ar/pages/version-details/GoVersion/GoVersionType.tsx index b6081d4cd2..35dcce8025 100644 --- a/web/src/ar/pages/version-details/GoVersion/GoVersionType.tsx +++ b/web/src/ar/pages/version-details/GoVersion/GoVersionType.tsx @@ -50,6 +50,7 @@ import GoVersionArtifactDetailsPage from './pages/artifact-dertails/GoVersionArt import VersionDetailsHeaderContent from '../components/VersionDetailsHeaderContent/VersionDetailsHeaderContent' import VersionTreeNode from '../components/VersionTreeNode/VersionTreeNode' import VersionDetailsTabs from '../components/VersionDetailsTabs/VersionDetailsTabs' +import ScanDetailsPage from '../components/ScanDetailsPage/ScanDetailsPage' export class GoVersionType extends VersionStep { protected packageType = RepositoryPackageType.GO @@ -57,6 +58,7 @@ export class GoVersionType extends VersionStep { protected allowedVersionDetailsTabs: VersionDetailsTab[] = [ VersionDetailsTab.OVERVIEW, VersionDetailsTab.ARTIFACT_DETAILS, + VersionDetailsTab.EVALUATION_DETAILS, VersionDetailsTab.CODE ] @@ -109,6 +111,8 @@ export class GoVersionType extends VersionStep { ) + case VersionDetailsTab.EVALUATION_DETAILS: + return case VersionDetailsTab.OSS: return ( diff --git a/web/src/ar/pages/version-details/HelmVersion/__tests__/__mockData__.ts b/web/src/ar/pages/version-details/HelmVersion/__tests__/__mockData__.ts index f360b57405..c8de060d7f 100644 --- a/web/src/ar/pages/version-details/HelmVersion/__tests__/__mockData__.ts +++ b/web/src/ar/pages/version-details/HelmVersion/__tests__/__mockData__.ts @@ -50,7 +50,8 @@ export const mockHelmVersionSummary: ArtifactVersionSummaryResponseResponse = { packageType: 'HELM', version: '1.0.0', uuid: 'uuid', - registryUUID: 'uuid' + registryUUID: 'uuid', + purl: 'test' }, status: 'SUCCESS' } diff --git a/web/src/ar/pages/version-details/MavenVersion/MavenVersion.tsx b/web/src/ar/pages/version-details/MavenVersion/MavenVersion.tsx index 12f258b603..478e558950 100644 --- a/web/src/ar/pages/version-details/MavenVersion/MavenVersion.tsx +++ b/web/src/ar/pages/version-details/MavenVersion/MavenVersion.tsx @@ -48,6 +48,7 @@ import ArtifactFilesContent from '../components/ArtifactFileListTable/ArtifactFi import VersionDetailsHeaderContent from '../components/VersionDetailsHeaderContent/VersionDetailsHeaderContent' import VersionActions from '../components/VersionActions/VersionActions' import { VersionAction } from '../components/VersionActions/types' +import ScanDetailsPage from '../components/ScanDetailsPage/ScanDetailsPage' export class MavenVersionType extends VersionStep { protected packageType = RepositoryPackageType.MAVEN @@ -55,6 +56,7 @@ export class MavenVersionType extends VersionStep { protected allowedVersionDetailsTabs: VersionDetailsTab[] = [ VersionDetailsTab.OVERVIEW, VersionDetailsTab.ARTIFACT_DETAILS, + VersionDetailsTab.EVALUATION_DETAILS, VersionDetailsTab.CODE ] @@ -100,6 +102,8 @@ export class MavenVersionType extends VersionStep { ) + case VersionDetailsTab.EVALUATION_DETAILS: + return case VersionDetailsTab.OSS: return default: diff --git a/web/src/ar/pages/version-details/MavenVersion/__tests__/__mockData__.ts b/web/src/ar/pages/version-details/MavenVersion/__tests__/__mockData__.ts index f8e138cbc2..3ec71c9b7f 100644 --- a/web/src/ar/pages/version-details/MavenVersion/__tests__/__mockData__.ts +++ b/web/src/ar/pages/version-details/MavenVersion/__tests__/__mockData__.ts @@ -48,7 +48,8 @@ export const mockMavenVersionSummary: ArtifactVersionSummaryResponseResponse = { packageType: 'MAVEN', version: '1.0.0', uuid: 'uuid', - registryUUID: 'uuid' + registryUUID: 'uuid', + purl: 'test' }, status: 'SUCCESS' } diff --git a/web/src/ar/pages/version-details/NpmVersion/NpmVersionType.tsx b/web/src/ar/pages/version-details/NpmVersion/NpmVersionType.tsx index f4607d2aa1..7e4e5ab834 100644 --- a/web/src/ar/pages/version-details/NpmVersion/NpmVersionType.tsx +++ b/web/src/ar/pages/version-details/NpmVersion/NpmVersionType.tsx @@ -49,6 +49,7 @@ import VersionDetailsHeaderContent from '../components/VersionDetailsHeaderConte import VersionFilesProvider from '../context/VersionFilesProvider' import ArtifactFilesContent from '../components/ArtifactFileListTable/ArtifactFilesContent' import { VersionAction } from '../components/VersionActions/types' +import ScanDetailsPage from '../components/ScanDetailsPage/ScanDetailsPage' export class NpmVersionType extends VersionStep { protected packageType = RepositoryPackageType.NPM @@ -56,6 +57,7 @@ export class NpmVersionType extends VersionStep { protected allowedVersionDetailsTabs: VersionDetailsTab[] = [ VersionDetailsTab.OVERVIEW, VersionDetailsTab.ARTIFACT_DETAILS, + VersionDetailsTab.EVALUATION_DETAILS, VersionDetailsTab.CODE ] @@ -100,6 +102,8 @@ export class NpmVersionType extends VersionStep { return case VersionDetailsTab.ARTIFACT_DETAILS: return + case VersionDetailsTab.EVALUATION_DETAILS: + return case VersionDetailsTab.OSS: return ( diff --git a/web/src/ar/pages/version-details/NuGetVersion/NuGetVersionType.tsx b/web/src/ar/pages/version-details/NuGetVersion/NuGetVersionType.tsx index 16429ad534..25d7f4e04a 100644 --- a/web/src/ar/pages/version-details/NuGetVersion/NuGetVersionType.tsx +++ b/web/src/ar/pages/version-details/NuGetVersion/NuGetVersionType.tsx @@ -50,6 +50,7 @@ import VersionFilesProvider from '../context/VersionFilesProvider' import ArtifactFilesContent from '../components/ArtifactFileListTable/ArtifactFilesContent' import { VersionAction } from '../components/VersionActions/types' import VersionOverviewProvider from '../context/VersionOverviewProvider' +import ScanDetailsPage from '../components/ScanDetailsPage/ScanDetailsPage' export class NuGetVersionType extends VersionStep { protected packageType = RepositoryPackageType.NUGET @@ -57,6 +58,7 @@ export class NuGetVersionType extends VersionStep { protected allowedVersionDetailsTabs: VersionDetailsTab[] = [ VersionDetailsTab.OVERVIEW, VersionDetailsTab.ARTIFACT_DETAILS, + VersionDetailsTab.EVALUATION_DETAILS, VersionDetailsTab.CODE ] @@ -109,6 +111,8 @@ export class NuGetVersionType extends VersionStep { ) + case VersionDetailsTab.EVALUATION_DETAILS: + return case VersionDetailsTab.OSS: return ( diff --git a/web/src/ar/pages/version-details/PythonVersion/PythonVersionType.tsx b/web/src/ar/pages/version-details/PythonVersion/PythonVersionType.tsx index 54e4e055d6..b361f96722 100644 --- a/web/src/ar/pages/version-details/PythonVersion/PythonVersionType.tsx +++ b/web/src/ar/pages/version-details/PythonVersion/PythonVersionType.tsx @@ -49,6 +49,7 @@ import VersionDetailsHeaderContent from '../components/VersionDetailsHeaderConte import VersionFilesProvider from '../context/VersionFilesProvider' import ArtifactFilesContent from '../components/ArtifactFileListTable/ArtifactFilesContent' import { VersionAction } from '../components/VersionActions/types' +import ScanDetailsPage from '../components/ScanDetailsPage/ScanDetailsPage' export class PythonVersionType extends VersionStep { protected packageType = RepositoryPackageType.PYTHON @@ -56,6 +57,7 @@ export class PythonVersionType extends VersionStep { protected allowedVersionDetailsTabs: VersionDetailsTab[] = [ VersionDetailsTab.OVERVIEW, VersionDetailsTab.ARTIFACT_DETAILS, + VersionDetailsTab.EVALUATION_DETAILS, VersionDetailsTab.CODE ] @@ -101,6 +103,8 @@ export class PythonVersionType extends VersionStep { return case VersionDetailsTab.ARTIFACT_DETAILS: return + case VersionDetailsTab.EVALUATION_DETAILS: + return case VersionDetailsTab.OSS: return ( diff --git a/web/src/ar/pages/version-details/RPMVersion/RPMVersionType.tsx b/web/src/ar/pages/version-details/RPMVersion/RPMVersionType.tsx index f7b7fb486f..a0a1e0f993 100644 --- a/web/src/ar/pages/version-details/RPMVersion/RPMVersionType.tsx +++ b/web/src/ar/pages/version-details/RPMVersion/RPMVersionType.tsx @@ -51,6 +51,7 @@ import RPMVersionArtifactDetailsPage from './pages/artifact-dertails/RPMVersionA import VersionDetailsHeaderContent from '../components/VersionDetailsHeaderContent/VersionDetailsHeaderContent' import VersionTreeNode from '../components/VersionTreeNode/VersionTreeNode' import VersionDetailsTabs from '../components/VersionDetailsTabs/VersionDetailsTabs' +import ScanDetailsPage from '../components/ScanDetailsPage/ScanDetailsPage' export class RPMVersionType extends VersionStep { protected packageType = RepositoryPackageType.RPM @@ -58,6 +59,7 @@ export class RPMVersionType extends VersionStep { protected allowedVersionDetailsTabs: VersionDetailsTab[] = [ VersionDetailsTab.OVERVIEW, VersionDetailsTab.ARTIFACT_DETAILS, + VersionDetailsTab.EVALUATION_DETAILS, VersionDetailsTab.CODE ] @@ -109,6 +111,8 @@ export class RPMVersionType extends VersionStep { ) + case VersionDetailsTab.EVALUATION_DETAILS: + return case VersionDetailsTab.OSS: return ( diff --git a/web/src/ar/pages/version-details/components/ScanDetailsPage/ScanDetailsPage.tsx b/web/src/ar/pages/version-details/components/ScanDetailsPage/ScanDetailsPage.tsx new file mode 100644 index 0000000000..69d353bf00 --- /dev/null +++ b/web/src/ar/pages/version-details/components/ScanDetailsPage/ScanDetailsPage.tsx @@ -0,0 +1,70 @@ +/* + * Copyright 2024 Harness, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React, { useContext, useState } from 'react' +import { Container, Layout } from '@harnessio/uicore' + +import { useParentComponents } from '@ar/hooks' +import { useStrings } from '@ar/frameworks/strings' +import { ButtonTab, ButtonTabs } from '@ar/components/ButtonTabs/ButtonTabs' +import { VersionProviderContext } from '@ar/pages/version-details/context/VersionProvider' + +import { ScanStatusDetailsTabEnum } from './types' + +function ScanDetailsPage() { + const [selectedTab, setSelectedTab] = useState(ScanStatusDetailsTabEnum.Overview) + const { data } = useContext(VersionProviderContext) + const { purl = '' } = data || {} + const { OssOverviewView, OssVulnerabilitiesView } = useParentComponents() + const { getString } = useStrings() + return ( + + + + {OssOverviewView ? ( + setSelectedTab(ScanStatusDetailsTabEnum.Vulnerabilities)} + /> + ) : ( + getString('tabNotFound') + )} + + } + title={getString('versionDetails.securityTests.tabs.overview')} + /> + + {OssVulnerabilitiesView ? : getString('tabNotFound')} + + } + title={getString('versionDetails.securityTests.tabs.vulnerabilities')} + /> + + + ) +} + +export default ScanDetailsPage diff --git a/web/src/ar/pages/version-details/components/ScanDetailsPage/types.ts b/web/src/ar/pages/version-details/components/ScanDetailsPage/types.ts new file mode 100644 index 0000000000..b3e3f30ba2 --- /dev/null +++ b/web/src/ar/pages/version-details/components/ScanDetailsPage/types.ts @@ -0,0 +1,20 @@ +/* + * Copyright 2024 Harness, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export enum ScanStatusDetailsTabEnum { + Overview = 'overview', + Vulnerabilities = 'vulnerabilities' +} diff --git a/web/src/ar/pages/version-details/components/VersionDetailsTabs/VersionDetailsTabs.tsx b/web/src/ar/pages/version-details/components/VersionDetailsTabs/VersionDetailsTabs.tsx index 38909390e0..3291d2a7b0 100644 --- a/web/src/ar/pages/version-details/components/VersionDetailsTabs/VersionDetailsTabs.tsx +++ b/web/src/ar/pages/version-details/components/VersionDetailsTabs/VersionDetailsTabs.tsx @@ -70,7 +70,9 @@ export default function VersionDetailsTabs(): JSX.Element { return VersionDetailsTabList.filter(each => !each.parent || each.parent === parent) .filter(each => (isCurrentSessionPublic ? each.isSupportedInPublicView : true)) .filter(each => versionType.getAllowedVersionDetailsTab().includes(each.value)) - }, [data, isCurrentSessionPublic, parent]) + .filter(each => (each.featureFlag ? featureFlags[each.featureFlag] : true)) + .filter(each => (each.registryType ? data?.registryType === each.registryType : true)) + }, [data, isCurrentSessionPublic, parent, featureFlags]) const handleTabChange = useCallback( (nextTab: VersionDetailsTab): void => { diff --git a/web/src/ar/pages/version-details/components/VersionDetailsTabs/constants.tsx b/web/src/ar/pages/version-details/components/VersionDetailsTabs/constants.tsx index 6454c00e70..b0cc81d8c3 100644 --- a/web/src/ar/pages/version-details/components/VersionDetailsTabs/constants.tsx +++ b/web/src/ar/pages/version-details/components/VersionDetailsTabs/constants.tsx @@ -14,14 +14,16 @@ * limitations under the License. */ -import { Parent } from '@ar/common/types' +import { Parent, RepositoryConfigType } from '@ar/common/types' import type { StringsMap } from '@ar/frameworks/strings' +import { FeatureFlags } from '@ar/MFEAppTypes' export enum VersionDetailsTab { OVERVIEW = 'overview', ARTIFACT_DETAILS = 'artifact_details', SUPPLY_CHAIN = 'supply_chain', SECURITY_TESTS = 'security_tests', + EVALUATION_DETAILS = 'evaluation_details', DEPLOYMENTS = 'deployments', CODE = 'code', OSS = 'OSS' // added for open source system view @@ -33,6 +35,8 @@ interface VersionDetailsTabListItem { disabled?: boolean parent?: Parent isSupportedInPublicView?: boolean + featureFlag?: FeatureFlags + registryType?: RepositoryConfigType supportActions?: boolean } @@ -63,6 +67,15 @@ export const VersionDetailsTabList: VersionDetailsTabListItem[] = [ isSupportedInPublicView: false, supportActions: false }, + { + label: 'versionDetails.tabs.evaluationDetails', + value: VersionDetailsTab.EVALUATION_DETAILS, + parent: Parent.Enterprise, + isSupportedInPublicView: true, + supportActions: false, + featureFlag: FeatureFlags.HAR_DEPENDENCY_FIREWALL, + registryType: RepositoryConfigType.UPSTREAM + }, { label: 'versionDetails.tabs.deployments', value: VersionDetailsTab.DEPLOYMENTS, diff --git a/web/src/ar/pages/version-details/strings/strings.en.yaml b/web/src/ar/pages/version-details/strings/strings.en.yaml index 680b40dadd..88bb563f7a 100644 --- a/web/src/ar/pages/version-details/strings/strings.en.yaml +++ b/web/src/ar/pages/version-details/strings/strings.en.yaml @@ -10,6 +10,7 @@ tabs: supplyChain: SBOM securityTests: Vulnerabilities deployments: Deployments + evaluationDetails: Evaluation Details code: Code cards: deploymentsCard: @@ -40,19 +41,19 @@ cards: denyListViolation: Deny List Violation container: title: Container - versionDigest: '{{ version}} ({{ digest }} digests)' + versionDigest: "{{ version}} ({{ digest }} digests)" overview: generalInformation: title: General Information - name: '{{ $.artifactList.table.columns.name }}' + name: "{{ $.artifactList.table.columns.name }}" version: Version packageType: Package type repositoryPath: Registry path digest: Digest url: URL to file projectUrl: Project URL - size: '{{ $.digestList.table.columns.size }}' - downloads: '{{ $.repositoryList.table.columns.downloads }}' + size: "{{ $.digestList.table.columns.size }}" + downloads: "{{ $.repositoryList.table.columns.downloads }}" uploadedBy: Uploaded At createdAndLastModifiedAt: Created | Last modified createdAt: Created At @@ -84,12 +85,16 @@ artifactDetails: files: Files dependencies: Dependencies layers: - digest: '{{ $.digestList.table.columns.digest }}' + digest: "{{ $.digestList.table.columns.digest }}" imageLayers: Image Layers lastPush: Last Push - size: '{{ $.digestList.table.columns.size }}' + size: "{{ $.digestList.table.columns.size }}" archSelectLabel: OS/ARCH archSelectPlaceholder: Select OS/ARCH +securityTests: + tabs: + overview: Overview + vulnerabilities: Vulnerabilities deploymentsTable: noDeploymentsTitle: There are no deployments available. columns: @@ -109,7 +114,7 @@ artifactFiles: downloadCommand: Download Command created: Created dependencyList: - dependencyNameWithRelease: '{{ name }} (release: {{ release }})' + dependencyNameWithRelease: "{{ name }} (release: {{ release }})" table: columns: name: Dependency Name diff --git a/web/src/ar/strings/types.ts b/web/src/ar/strings/types.ts index 919a4f705b..92e10799f9 100644 --- a/web/src/ar/strings/types.ts +++ b/web/src/ar/strings/types.ts @@ -382,6 +382,8 @@ export interface StringsMap { 'versionDetails.restoreModal.inputLabel': string 'versionDetails.restoreModal.inputPlaceholder': string 'versionDetails.restoreModal.title': string + 'versionDetails.securityTests.tabs.overview': string + 'versionDetails.securityTests.tabs.vulnerabilities': string 'versionDetails.selectDigestPlaceholder': string 'versionDetails.softDeleteModal.contentText': string 'versionDetails.softDeleteModal.inputLabel': string @@ -390,6 +392,7 @@ export interface StringsMap { 'versionDetails.tabs.artifactDetails': string 'versionDetails.tabs.code': string 'versionDetails.tabs.deployments': string + 'versionDetails.tabs.evaluationDetails': string 'versionDetails.tabs.overview': string 'versionDetails.tabs.securityTests': string 'versionDetails.tabs.supplyChain': string diff --git a/web/src/ar/utils/testUtils/utils.ts b/web/src/ar/utils/testUtils/utils.ts index 04e43af7bb..ce71decd94 100644 --- a/web/src/ar/utils/testUtils/utils.ts +++ b/web/src/ar/utils/testUtils/utils.ts @@ -44,6 +44,8 @@ import { getApiBaseUrl } from '@ar/__mocks__/utils/getApiBaseUrl' import getCustomHeaders from '@ar/__mocks__/utils/getCustomHeaders' import { useGovernanceMetaDataModal } from '@ar/__mocks__/hooks/useGovernanceMetaDataModal' import { routeToRegistryDetails } from '@ar/__mocks__/utils/routeToRegistryDetails' +import OssOverviewView from '@ar/__mocks__/components/OssOverviewView' +import OssVulnerabilitiesView from '@ar/__mocks__/components/OssVulnerabilitiesView' export const MockTestUtils: { hooks?: ParentProviderProps['hooks'] @@ -74,7 +76,9 @@ MockTestUtils.components = { DependencyView, ModalProvider, PolicySetFixedTypeSelector, - PageNotPublic + PageNotPublic, + OssOverviewView, + OssVulnerabilitiesView } MockTestUtils.utils = { diff --git a/web/yarn.lock b/web/yarn.lock index eb11c555da..215280685c 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -1945,10 +1945,10 @@ yargs "^17.6.2" zod "^3.19.1" -"@harnessio/react-har-service-client@0.49.0": - version "0.49.0" - resolved "https://registry.yarnpkg.com/@harnessio/react-har-service-client/-/react-har-service-client-0.49.0.tgz#1eeb9769e46cd28b8a78706796900d928e652683" - integrity sha512-vUcGelrFbip/lyjKsXX4Ls6ZW6663RiTIsPcZKnqXSZrpFKuaCFHM5ymnJMgSbo4wX3APQQuo1jjsM95NXmGIA== +"@harnessio/react-har-service-client@0.50.0": + version "0.50.0" + resolved "https://registry.yarnpkg.com/@harnessio/react-har-service-client/-/react-har-service-client-0.50.0.tgz#ad5f92a119d0b05deda0238b18d63a3461f1ff81" + integrity sha512-KJtEBOv3RXgc/tOF5KkKVkb8VWinc48swhl6B/Pp9u2CC5uWNXXFMUoZ8FADRefK19qMyXmHVpe6gVF1tDc5Pw== dependencies: "@harnessio/oats-cli" "^3.0.0"