From e9399684701bae73eb17f7665c621443c71099c8 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Tue, 22 Feb 2022 10:37:59 -0500 Subject: [PATCH] Fix HelmChart validator requiring digest field Signed-off-by: Sebastian Malton --- .../k8s-api/__tests__/helm-charts.test.ts | 26 +++++++++++++++++++ .../k8s-api/endpoints/helm-charts.api.ts | 18 ++++++++----- 2 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 src/common/k8s-api/__tests__/helm-charts.test.ts diff --git a/src/common/k8s-api/__tests__/helm-charts.test.ts b/src/common/k8s-api/__tests__/helm-charts.test.ts new file mode 100644 index 0000000000..f8c3526afb --- /dev/null +++ b/src/common/k8s-api/__tests__/helm-charts.test.ts @@ -0,0 +1,26 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { HelmChart } from "../endpoints/helm-charts.api"; + +describe("Helm Charts", () => { + it("should accept a helm chart without a digest field", () => { + expect(() => HelmChart.create({ + apiVersion: "foo", + name: "bar", + version: "1.0.0", + repo: "localhost:9090", + created: "yesterday", + description: "my bar chart", + keywords: ["test"], + sources: [], + urls: [], + annotations: {}, + dependencies: [], + maintainers: [], + deprecated: false, + })).not.toThrowError(); + }); +}); diff --git a/src/common/k8s-api/endpoints/helm-charts.api.ts b/src/common/k8s-api/endpoints/helm-charts.api.ts index b73bcfdaf2..163f90ef36 100644 --- a/src/common/k8s-api/endpoints/helm-charts.api.ts +++ b/src/common/k8s-api/endpoints/helm-charts.api.ts @@ -75,7 +75,7 @@ export interface RawHelmChart { version: string; repo: string; created: string; - digest: string; + digest?: string; kubeVersion?: string; description?: string; home?: string; @@ -142,7 +142,7 @@ const helmChartValidator = Joi.object({ .required(), digest: Joi .string() - .required(), + .optional(), kubeVersion: Joi .string() .optional(), @@ -247,22 +247,22 @@ export interface HelmChart { name: string; version: string; repo: string; - kubeVersion?: string; created: string; description: string; - digest: string; keywords: string[]; - home?: string; sources: string[]; urls: string[]; annotations: Record; dependencies: HelmChartDependency[]; maintainers: HelmChartMaintainer[]; + deprecated: boolean; + kubeVersion?: string; + digest?: string; + home?: string; engine?: string; icon?: string; appVersion?: string; type?: string; - deprecated: boolean; tillerVersion?: string; } @@ -324,7 +324,11 @@ export class HelmChart { } getId(): string { - return `${this.repo}:${this.apiVersion}/${this.name}@${this.getAppVersion()}+${this.digest}`; + const digestPart = this.digest + ? `+${this.digest}` + : ""; + + return `${this.repo}:${this.apiVersion}/${this.name}@${this.getAppVersion()}${digestPart}`; } getName(): string {