From a912f8f8d033b0467143798e02f45d86ed6c6325 Mon Sep 17 00:00:00 2001 From: Frank van Lankvelt Date: Mon, 13 Oct 2025 11:22:24 +0200 Subject: [PATCH 1/5] STAC-23512: direct call to observability --- .changeset/nice-pigs-roll.md | 5 + .../components/ComponentHealth.vue | 2 +- .../Dashboard/ConfigurationView.vue | 2 +- pkg/observability/components/MonitorTab.vue | 3 +- .../components/ObservabilityClusterCard.vue | 2 - .../ObservabilityClusterCard.spec.ts | 74 ++++-- .../formatters/ComponentLinkedHealthState.vue | 6 +- pkg/observability/modules/rancher.ts | 1 - .../modules/suseObservability.ts | 75 +++--- pkg/observability/package.json | 1 + yarn.lock | 245 +++++++++++++++++- 11 files changed, 346 insertions(+), 70 deletions(-) create mode 100644 .changeset/nice-pigs-roll.md diff --git a/.changeset/nice-pigs-roll.md b/.changeset/nice-pigs-roll.md new file mode 100644 index 00000000..265a1692 --- /dev/null +++ b/.changeset/nice-pigs-roll.md @@ -0,0 +1,5 @@ +--- +"observability": patch +--- + +use direct calls to observability diff --git a/pkg/observability/components/ComponentHealth.vue b/pkg/observability/components/ComponentHealth.vue index 2c7c00bd..d0548f94 100644 --- a/pkg/observability/components/ComponentHealth.vue +++ b/pkg/observability/components/ComponentHealth.vue @@ -46,7 +46,7 @@ export default { return; } - const component = await loadComponent(this.$store, settings, this.urn); + const component = await loadComponent(settings, this.urn); this.health = component.state.healthState; }, }; diff --git a/pkg/observability/components/Dashboard/ConfigurationView.vue b/pkg/observability/components/Dashboard/ConfigurationView.vue index 69c623fc..acbf02c8 100644 --- a/pkg/observability/components/Dashboard/ConfigurationView.vue +++ b/pkg/observability/components/Dashboard/ConfigurationView.vue @@ -78,7 +78,7 @@ export default { }, async save(btnCb) { - const conn = await checkConnection(this.$store, { + const conn = await checkConnection({ apiURL: this.suseObservabilityURL, serviceToken: this.suseObservabilityServiceToken, }); diff --git a/pkg/observability/components/MonitorTab.vue b/pkg/observability/components/MonitorTab.vue index f0b72845..33ea2b67 100644 --- a/pkg/observability/components/MonitorTab.vue +++ b/pkg/observability/components/MonitorTab.vue @@ -97,10 +97,9 @@ export default { this.urn = this.componentIdentifier; - const component = await loadComponent(this.$store, settings, this.urn); + const component = await loadComponent(settings, this.urn); if (!component) { this.observationStatus = await loadObservationStatus( - this.$store, this.clusterId, settings, ); diff --git a/pkg/observability/components/ObservabilityClusterCard.vue b/pkg/observability/components/ObservabilityClusterCard.vue index 75fcf048..a78522db 100644 --- a/pkg/observability/components/ObservabilityClusterCard.vue +++ b/pkg/observability/components/ObservabilityClusterCard.vue @@ -70,7 +70,6 @@ export default { this.installUrl = `${settings.url}/#/stackpacks/kubernetes-v2`; this.observationStatus = await loadObservationStatus( - this.$store, this.resource.spec.displayName, settings, ); @@ -80,7 +79,6 @@ export default { try { this.snapshot = await getSnapshot( - this.$store, `not healthstate in ("CLEAR", "UNKNOWN") AND label = "cluster-name:${this.resource.spec.displayName}"`, settings, ); diff --git a/pkg/observability/components/__tests__/ObservabilityClusterCard.spec.ts b/pkg/observability/components/__tests__/ObservabilityClusterCard.spec.ts index ba0bcf63..c5649dbc 100644 --- a/pkg/observability/components/__tests__/ObservabilityClusterCard.spec.ts +++ b/pkg/observability/components/__tests__/ObservabilityClusterCard.spec.ts @@ -1,5 +1,7 @@ -import { test, expect } from "vitest"; +import { beforeAll, afterAll, afterEach, test, expect } from "vitest"; import { mount } from "@vue/test-utils"; +import { setupServer } from "msw/node"; +import { http, HttpResponse } from "msw"; import ObservabilityClusterCard from "../ObservabilityClusterCard.vue"; @@ -23,6 +25,50 @@ const mountComponent = (mockStore: any) => { }); }; +export const restHandlers = [ + http.get("https://ye-observability.invalid.com/api/components", () => + HttpResponse.text("Unauthorized", { status: 401 }), + ), + http.post("https://ye-observability.invalid.com/api/snapshot", () => + HttpResponse.text("Unauthorized", { status: 401 }), + ), + http.get("https://ye-observability.example.com/api/components", () => + HttpResponse.json({}), + ), + http.post("https://ye-observability.example.com/api/snapshot", () => + HttpResponse.json({ + viewSnapshotResponse: { + components: [ + { + state: { + healthState: "CRITICAL", + }, + }, + ], + }, + }), + ), + http.get("https://no-observability.example.com/api/components", () => + HttpResponse.text("Not found", { status: 404 }), + ), + http.post("https://no-observability.example.com/api/snapshot", () => + HttpResponse.json({ + viewSnapshotResponse: { components: [] }, + }), + ), +]; + +const server = setupServer(...restHandlers); + +// Start server before all tests +beforeAll(() => server.listen({ onUnhandledRequest: "error" })); + +// Close server after all tests +afterAll(() => server.close()); + +// Reset handlers after each test for test isolation +afterEach(() => server.resetHandlers()); + test("initial state", () => { const mockStore = {}; const wrapper = mountComponent(mockStore); @@ -57,18 +103,6 @@ test("happy flow - installed & connected", async () => { }, }, ]); - case "management/request": - return Promise.resolve({ - viewSnapshotResponse: { - components: [ - { - state: { - healthState: "CRITICAL", - }, - }, - ], - }, - }); } }, }; @@ -144,13 +178,11 @@ test("configured, but cannot connect", async () => { }, apiVersion: "observability.rancher.io/v1", spec: { - url: "https://ye-observability.example.com", + url: "https://ye-observability.invalid.com", serviceToken: "ye-token", }, }, ]); - case "management/request": - return Promise.reject(Error("Cannot connect to SUSE Observability")); } }, }; @@ -183,14 +215,11 @@ test("no component for cluster, agent is not deployed", async () => { }, apiVersion: "observability.rancher.io/v1", spec: { - url: "https://ye-observability.example.com", + url: "https://no-observability.example.com", serviceToken: "ye-token", }, }, ]); - case "management/request": - // eslint-disable-next-line prefer-promise-reject-errors - return Promise.reject("no such cluster component"); case "cluster/request": return Promise.resolve({ data: [] }); } @@ -225,14 +254,11 @@ test("no component for cluster, though agent is deployed", async () => { }, apiVersion: "observability.rancher.io/v1", spec: { - url: "https://ye-observability.example.com", + url: "https://no-observability.example.com", serviceToken: "ye-token", }, }, ]); - case "management/request": - // eslint-disable-next-line prefer-promise-reject-errors - return Promise.reject("no such cluster component"); case "cluster/request": return Promise.resolve({ data: [ diff --git a/pkg/observability/formatters/ComponentLinkedHealthState.vue b/pkg/observability/formatters/ComponentLinkedHealthState.vue index 9bce6066..0bf1f1da 100644 --- a/pkg/observability/formatters/ComponentLinkedHealthState.vue +++ b/pkg/observability/formatters/ComponentLinkedHealthState.vue @@ -65,11 +65,7 @@ export default { try { const settings = await loadSuseObservabilitySettings(this.$store); - const component = await loadComponent( - this.$store, - settings, - componentIdentifier, - ); + const component = await loadComponent(settings, componentIdentifier); this.data = { health: component.state.healthState, diff --git a/pkg/observability/modules/rancher.ts b/pkg/observability/modules/rancher.ts index 789156a1..aedde5c1 100644 --- a/pkg/observability/modules/rancher.ts +++ b/pkg/observability/modules/rancher.ts @@ -149,7 +149,6 @@ export async function loadAgentStatus( "stackstate-k8s-agent"), ); - console.log(deployments); return deployments.length > 0 ? AgentStatus.Installed : AgentStatus.NotInstalled; diff --git a/pkg/observability/modules/suseObservability.ts b/pkg/observability/modules/suseObservability.ts index 7438f188..e5d3ba32 100644 --- a/pkg/observability/modules/suseObservability.ts +++ b/pkg/observability/modules/suseObservability.ts @@ -1,5 +1,15 @@ import { ConnectionInfo } from "types/component"; import { ObservabilitySettings } from "./settings"; + +class FetchError extends Error { + status: number; + + constructor(message: string, status: number) { + super(message); + this.status = status; + } +} + /** * Check whether the connection credentials are valid. * @param store The Vue Store @@ -13,29 +23,23 @@ export enum ConnectionStatus { } export async function checkConnection( - store: any, credentials: ConnectionInfo, ): Promise { const creds = token(credentials.serviceToken); try { - const resp = await store.dispatch("management/request", { - url: `${credentials.apiURL}/api/server/info`, - method: "GET", + const resp = await window.fetch(`${credentials.apiURL}/api/server/info`, { + credentials: "omit", + mode: "cors", headers: { "Content-Type": "application/json", Authorization: creds, }, - redirectUnauthorized: false, }); - - if (resp._status !== 200) { - return ConnectionStatus.InvalidToken; - } - return ConnectionStatus.Connected; } catch (e) { - if (e instanceof Error) { + const err = e as FetchError; + if (err.status >= 500) { return ConnectionStatus.CrossOriginError; } else { return ConnectionStatus.InvalidToken; @@ -50,25 +54,24 @@ export enum ObservationStatus { } export async function loadObservationStatus( - store: any, clusterName: string, settings: ObservabilitySettings, ): Promise { try { const clusterUrn = `urn:cluster:/kubernetes:${clusterName}`; - await loadComponent(store, settings, clusterUrn); + await loadComponent(settings, clusterUrn); return ObservationStatus.Observed; } catch (e) { - if (e instanceof Error) { - return ObservationStatus.ConnectionError; - } else { + const err = e as FetchError; + if (err.status === 404) { return ObservationStatus.NotDeployed; + } else { + return ObservationStatus.ConnectionError; } } } export async function getSnapshot( - store: any, stql: string, settings: ObservabilitySettings, ): Promise { @@ -81,15 +84,15 @@ export async function getSnapshot( const httpToken = token(serviceToken); - return await store.dispatch("management/request", { - url: `${suseObservabilityURL}/api/snapshot`, + const resp = await window.fetch(`${suseObservabilityURL}/api/snapshot`, { method: "POST", + credentials: "omit", + mode: "cors", headers: { "Content-Type": "application/json", Authorization: httpToken, }, - withCredentials: true, - data: { + body: JSON.stringify({ query: stql, queryVersion: "1.0", metadata: { @@ -104,22 +107,34 @@ export async function getSnapshot( neighboringComponents: false, showFullComponent: false, }, - }, + }), }); + if (resp.ok) { + return await resp.json(); + } else { + throw new FetchError(await resp.text(), resp.status); + } } -export function loadComponent( - store: any, +export async function loadComponent( spec: ObservabilitySettings, identifier: string, ) { const creds = token(spec.serviceToken); - - return store.dispatch("management/request", { - url: `${spec.url}/api/components?identifier=${encodeURIComponent(identifier)}`, - method: "GET", - headers: { "Content-Type": "application/json", Authorization: creds }, - }); + const resp = await window.fetch( + `${spec.url}/api/components?identifier=${encodeURIComponent(identifier)}`, + { + method: "GET", + mode: "cors", + credentials: "omit", + headers: { "Content-Type": "application/json", Authorization: creds }, + }, + ); + if (resp.ok) { + return await resp.json(); + } else { + throw new FetchError(await resp.text(), resp.status); + } } function token(serviceToken: string): string { diff --git a/pkg/observability/package.json b/pkg/observability/package.json index 2ad67550..febd529f 100644 --- a/pkg/observability/package.json +++ b/pkg/observability/package.json @@ -33,6 +33,7 @@ "@vue/tsconfig": "^0.7.0", "jiti": "^2.4.2", "jsdom": "^26.1.0", + "msw": "^2.11.5", "npm-run-all2": "^8.0.4", "prettier": "3.6.2", "sass": "^1.93.2", diff --git a/yarn.lock b/yarn.lock index 0a76ad22..4a40ed40 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3462,6 +3462,43 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@inquirer/ansi@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@inquirer/ansi/-/ansi-1.0.0.tgz#29525c673caf36c12e719712830705b9c31f0462" + integrity sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA== + +"@inquirer/confirm@^5.0.0": + version "5.1.18" + resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-5.1.18.tgz#0b76e5082d834c0e3528023705b867fc1222d535" + integrity sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw== + dependencies: + "@inquirer/core" "^10.2.2" + "@inquirer/type" "^3.0.8" + +"@inquirer/core@^10.2.2": + version "10.2.2" + resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-10.2.2.tgz#d31eb50ba0c76b26e7703c2c0d1d0518144c23ab" + integrity sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA== + dependencies: + "@inquirer/ansi" "^1.0.0" + "@inquirer/figures" "^1.0.13" + "@inquirer/type" "^3.0.8" + cli-width "^4.1.0" + mute-stream "^2.0.0" + signal-exit "^4.1.0" + wrap-ansi "^6.2.0" + yoctocolors-cjs "^2.1.2" + +"@inquirer/figures@^1.0.13": + version "1.0.13" + resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.13.tgz#ad0afd62baab1c23175115a9b62f511b6a751e45" + integrity sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw== + +"@inquirer/type@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-3.0.8.tgz#efc293ba0ed91e90e6267f1aacc1c70d20b8b4e8" + integrity sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -3770,6 +3807,18 @@ globby "^11.0.0" read-yaml-file "^1.1.0" +"@mswjs/interceptors@^0.39.1": + version "0.39.7" + resolved "https://registry.yarnpkg.com/@mswjs/interceptors/-/interceptors-0.39.7.tgz#a8860285ebe228c3043cde32c1843dd088e5276a" + integrity sha512-sURvQbbKsq5f8INV54YJgJEdk8oxBanqkTiXXd33rKmofFCwZLhLRszPduMZ9TA9b8/1CHc/IJmOlBHJk2Q5AQ== + dependencies: + "@open-draft/deferred-promise" "^2.2.0" + "@open-draft/logger" "^0.3.0" + "@open-draft/until" "^2.0.0" + is-node-process "^1.2.0" + outvariant "^1.4.3" + strict-event-emitter "^0.5.1" + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -3856,6 +3905,24 @@ resolved "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323" integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw== +"@open-draft/deferred-promise@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz#4a822d10f6f0e316be4d67b4d4f8c9a124b073bd" + integrity sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA== + +"@open-draft/logger@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@open-draft/logger/-/logger-0.3.0.tgz#2b3ab1242b360aa0adb28b85f5d7da1c133a0954" + integrity sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ== + dependencies: + is-node-process "^1.2.0" + outvariant "^1.4.0" + +"@open-draft/until@^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@open-draft/until/-/until-2.1.0.tgz#0acf32f470af2ceaf47f095cdecd40d68666efda" + integrity sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg== + "@parcel/watcher-android-arm64@2.5.1": version "2.5.1" resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1" @@ -4928,7 +4995,7 @@ dependencies: "@types/lodash" "*" -"@types/lodash@*", "@types/lodash@4.14.184", "@types/lodash@^4.14.182": +"@types/lodash@*", "@types/lodash@^4.14.182": version "4.14.184" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.184.tgz#23f96cd2a21a28e106dc24d825d4aa966de7a9fe" integrity sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q== @@ -5051,6 +5118,11 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== +"@types/statuses@^2.0.4": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/statuses/-/statuses-2.0.6.tgz#66748315cc9a96d63403baa8671b2c124f8633aa" + integrity sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA== + "@types/strip-bom@^3.0.0": version "3.0.0" resolved "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" @@ -7451,6 +7523,11 @@ cli-truncate@^2.1.0: slice-ansi "^3.0.0" string-width "^4.2.0" +cli-width@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" + integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== + clipboard-polyfill@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clipboard-polyfill/-/clipboard-polyfill-4.0.1.tgz#8bff9da4b37565d4fac9dd85249c65bd24f3d1a8" @@ -7483,6 +7560,15 @@ cliui@^7.0.2, cliui@^7.0.4: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -7748,6 +7834,11 @@ cookie@^0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookie@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-1.0.2.tgz#27360701532116bd3f1f9416929d176afe1e4610" + integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA== + copy-anything@^3.0.2: version "3.0.5" resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-3.0.5.tgz#2d92dce8c498f790fa7ad16b01a1ae5a45b020a0" @@ -10661,6 +10752,11 @@ graphlib@^2.1.8: dependencies: lodash "^4.17.15" +graphql@^16.8.1: + version "16.11.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.11.0.tgz#96d17f66370678027fdf59b2d4c20b4efaa8a633" + integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw== + gzip-size@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" @@ -10772,6 +10868,11 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +headers-polyfill@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/headers-polyfill/-/headers-polyfill-4.0.3.tgz#922a0155de30ecc1f785bcf04be77844ca95ad07" + integrity sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ== + highlight.js@11.6.0: version "11.6.0" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.6.0.tgz#a50e9da05763f1bb0c1322c8f4f755242cff3f5a" @@ -11397,6 +11498,11 @@ is-negative-zero@^2.0.3: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== +is-node-process@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-node-process/-/is-node-process-1.2.0.tgz#ea02a1b90ddb3934a19aea414e88edef7e11d134" + integrity sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw== + is-number-object@^1.0.4: version "1.0.7" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" @@ -13067,6 +13173,30 @@ ms@2.1.3, ms@^2.1.1, ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +msw@^2.11.5: + version "2.11.5" + resolved "https://registry.yarnpkg.com/msw/-/msw-2.11.5.tgz#69572ab70a60b5d72c8b6aed344595a7604241c0" + integrity sha512-atFI4GjKSJComxcigz273honh8h4j5zzpk5kwG4tGm0TPcYne6bqmVrufeRll6auBeouIkXqZYXxVbWSWxM3RA== + dependencies: + "@inquirer/confirm" "^5.0.0" + "@mswjs/interceptors" "^0.39.1" + "@open-draft/deferred-promise" "^2.2.0" + "@types/statuses" "^2.0.4" + cookie "^1.0.2" + graphql "^16.8.1" + headers-polyfill "^4.0.2" + is-node-process "^1.2.0" + outvariant "^1.4.3" + path-to-regexp "^6.3.0" + picocolors "^1.1.1" + rettime "^0.7.0" + statuses "^2.0.2" + strict-event-emitter "^0.5.1" + tough-cookie "^6.0.0" + type-fest "^4.26.1" + until-async "^3.0.2" + yargs "^17.7.2" + muggle-string@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/muggle-string/-/muggle-string-0.4.1.tgz#3b366bd43b32f809dc20659534dd30e7c8a0d328" @@ -13085,6 +13215,11 @@ multimap@^1.1.0: resolved "https://registry.yarnpkg.com/multimap/-/multimap-1.1.0.tgz#5263febc085a1791c33b59bb3afc6a76a2a10ca8" integrity sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw== +mute-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b" + integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== + mz@^2.4.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" @@ -13551,6 +13686,11 @@ outdent@^0.5.0: resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff" integrity sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q== +outvariant@^1.4.0, outvariant@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/outvariant/-/outvariant-1.4.3.tgz#221c1bfc093e8fec7075497e7799fdbf43d14873" + integrity sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA== + p-filter@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" @@ -13822,6 +13962,11 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" +path-to-regexp@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" + integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -14839,6 +14984,11 @@ retry@^0.13.1: resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== +rettime@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/rettime/-/rettime-0.7.0.tgz#c040f1a65e396eaa4b8346dd96ed937edc79d96f" + integrity sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -15588,6 +15738,11 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +statuses@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" + integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== + std-env@^3.9.0: version "3.9.0" resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.9.0.tgz#1a6f7243b339dca4c9fd55e1c7504c77ef23e8f1" @@ -15618,6 +15773,11 @@ stream-http@^3.2.0: readable-stream "^3.6.0" xtend "^4.0.2" +strict-event-emitter@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz#1602ece81c51574ca39c6815e09f1a3e8550bd93" + integrity sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ== + string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -15626,7 +15786,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -15643,6 +15803,15 @@ string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" @@ -15694,7 +15863,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -15708,6 +15877,13 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -16001,6 +16177,11 @@ tldts-core@^6.1.86: resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.86.tgz#a93e6ed9d505cb54c542ce43feb14c73913265d8" integrity sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA== +tldts-core@^7.0.17: + version "7.0.17" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-7.0.17.tgz#dadfee3750dd272ed219d7367beb7cbb2ff29eb8" + integrity sha512-DieYoGrP78PWKsrXr8MZwtQ7GLCUeLxihtjC1jZsW1DnvSMdKPitJSe8OSYDM2u5H6g3kWJZpePqkp43TfLh0g== + tldts@^6.1.32: version "6.1.86" resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.86.tgz#087e0555b31b9725ee48ca7e77edc56115cd82f7" @@ -16008,6 +16189,13 @@ tldts@^6.1.32: dependencies: tldts-core "^6.1.86" +tldts@^7.0.5: + version "7.0.17" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-7.0.17.tgz#a6cdc067b9e80ea05f3be471c0ea410688cc78b2" + integrity sha512-Y1KQBgDd/NUc+LfOtKS6mNsC9CCaH+m2P1RoIZy7RAPo3C3/t8X45+zgut31cRZtZ3xKPjfn3TkGTrctC2TQIQ== + dependencies: + tldts-core "^7.0.17" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -16079,6 +16267,13 @@ tough-cookie@^5.1.1: dependencies: tldts "^6.1.32" +tough-cookie@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-6.0.0.tgz#11e418b7864a2c0d874702bc8ce0f011261940e5" + integrity sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w== + dependencies: + tldts "^7.0.5" + tr46@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" @@ -16206,6 +16401,11 @@ type-fest@^0.8.0, type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^4.26.1: + version "4.41.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" + integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== + type-fest@^4.4.0: version "4.26.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz#a4a17fa314f976dd3e6d6675ef6c775c16d7955e" @@ -16405,6 +16605,11 @@ unplugin@^1.4.0: acorn "^8.14.0" webpack-virtual-modules "^0.6.2" +until-async@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/until-async/-/until-async-3.0.2.tgz#447f1531fdd7bb2b4c7a98869bdb1a4c2a23865f" + integrity sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw== + untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" @@ -17190,7 +17395,7 @@ worker-loader@3.0.8: loader-utils "^2.0.0" schema-utils "^3.0.0" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -17216,6 +17421,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -17360,6 +17574,11 @@ yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + yargs@^15.0.2: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" @@ -17390,6 +17609,19 @@ yargs@^16.0.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yarn@1.22.18: version "1.22.18" resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.18.tgz#05b822ade8c672987bab8858635145da0850f78a" @@ -17408,6 +17640,11 @@ yn@3.1.1: resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== +yoctocolors-cjs@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz#7e4964ea8ec422b7a40ac917d3a344cfd2304baa" + integrity sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw== + yoctocolors@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/yoctocolors/-/yoctocolors-2.1.2.tgz#d795f54d173494e7d8db93150cec0ed7f678c83a" From 703e691cfa3c56da23b6ad502a4561d90b0fbe45 Mon Sep 17 00:00:00 2001 From: Frank van Lankvelt Date: Mon, 13 Oct 2025 14:52:40 +0200 Subject: [PATCH 2/5] STAC-23512: bump node version --- .nvmrc | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.nvmrc b/.nvmrc index 2edeafb0..2bd5a0a9 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -20 \ No newline at end of file +22 diff --git a/package.json b/package.json index c7b7bcbd..2d3b8c48 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "license": "Apache-2.0", "private": true, "engines": { - "node": ">=20" + "node": ">=22" }, "workspaces": [ "pkg/*" From 64c01c9b3cb1426a348714a6d69cce9bc11172a8 Mon Sep 17 00:00:00 2001 From: Frank van Lankvelt Date: Tue, 14 Oct 2025 13:02:11 +0200 Subject: [PATCH 3/5] STAC-23512: mock fetch directly --- .../ObservabilityClusterCard.spec.ts | 98 ++++---- .../modules/suseObservability.ts | 7 +- pkg/observability/package.json | 1 - yarn.lock | 214 +----------------- 4 files changed, 64 insertions(+), 256 deletions(-) diff --git a/pkg/observability/components/__tests__/ObservabilityClusterCard.spec.ts b/pkg/observability/components/__tests__/ObservabilityClusterCard.spec.ts index c5649dbc..185ab887 100644 --- a/pkg/observability/components/__tests__/ObservabilityClusterCard.spec.ts +++ b/pkg/observability/components/__tests__/ObservabilityClusterCard.spec.ts @@ -1,7 +1,5 @@ import { beforeAll, afterAll, afterEach, test, expect } from "vitest"; import { mount } from "@vue/test-utils"; -import { setupServer } from "msw/node"; -import { http, HttpResponse } from "msw"; import ObservabilityClusterCard from "../ObservabilityClusterCard.vue"; @@ -25,49 +23,71 @@ const mountComponent = (mockStore: any) => { }); }; -export const restHandlers = [ - http.get("https://ye-observability.invalid.com/api/components", () => - HttpResponse.text("Unauthorized", { status: 401 }), - ), - http.post("https://ye-observability.invalid.com/api/snapshot", () => - HttpResponse.text("Unauthorized", { status: 401 }), - ), - http.get("https://ye-observability.example.com/api/components", () => - HttpResponse.json({}), - ), - http.post("https://ye-observability.example.com/api/snapshot", () => - HttpResponse.json({ - viewSnapshotResponse: { - components: [ - { - state: { - healthState: "CRITICAL", +const setupServer = () => { + const restHandlers = [ + { + url: "https://ye-observability.invalid.com/api/components", + resp: () => new Response("Unauthorized", { status: 401 }), + }, + { + url: "https://ye-observability.invalid.com/api/snapshot", + resp: () => new Response("Unauthorized", { status: 401 }), + }, + { + url: "https://ye-observability.example.com/api/components", + resp: () => new Response(JSON.stringify({}), { status: 200 }), + }, + { + url: "https://ye-observability.example.com/api/snapshot", + resp: () => + new Response( + JSON.stringify({ + viewSnapshotResponse: { + components: [ + { + state: { + healthState: "CRITICAL", + }, + }, + ], }, - }, - ], - }, - }), - ), - http.get("https://no-observability.example.com/api/components", () => - HttpResponse.text("Not found", { status: 404 }), - ), - http.post("https://no-observability.example.com/api/snapshot", () => - HttpResponse.json({ - viewSnapshotResponse: { components: [] }, - }), - ), -]; + }), + { status: 200 }, + ), + }, + { + url: "https://no-observability.example.com/api/components", + resp: () => new Response("Not found", { status: 404 }), + }, + { + url: "https://no-observability.example.com/api/snapshot", + resp: () => + new Response( + JSON.stringify({ + viewSnapshotResponse: { components: [] }, + }), + { status: 200 }, + ), + }, + ]; + global.fetch = (url: RequestInfo | URL, options?: RequestInit) => { + console.log(url.toString()); + const handler = restHandlers.find((handler) => + url.toString().startsWith(handler.url), + ); + return Promise.resolve(handler!.resp()); + }; +}; -const server = setupServer(...restHandlers); +const fetch = global.fetch; // Start server before all tests -beforeAll(() => server.listen({ onUnhandledRequest: "error" })); +beforeAll(() => setupServer()); // Close server after all tests -afterAll(() => server.close()); - -// Reset handlers after each test for test isolation -afterEach(() => server.resetHandlers()); +afterAll(() => { + global.fetch = fetch; +}); test("initial state", () => { const mockStore = {}; diff --git a/pkg/observability/modules/suseObservability.ts b/pkg/observability/modules/suseObservability.ts index e5d3ba32..b7959ada 100644 --- a/pkg/observability/modules/suseObservability.ts +++ b/pkg/observability/modules/suseObservability.ts @@ -28,7 +28,7 @@ export async function checkConnection( const creds = token(credentials.serviceToken); try { - const resp = await window.fetch(`${credentials.apiURL}/api/server/info`, { + const resp = await fetch(`${credentials.apiURL}/api/server/info`, { credentials: "omit", mode: "cors", headers: { @@ -63,6 +63,7 @@ export async function loadObservationStatus( return ObservationStatus.Observed; } catch (e) { const err = e as FetchError; + console.log("LOAD_STAATUS: ", err); if (err.status === 404) { return ObservationStatus.NotDeployed; } else { @@ -84,7 +85,7 @@ export async function getSnapshot( const httpToken = token(serviceToken); - const resp = await window.fetch(`${suseObservabilityURL}/api/snapshot`, { + const resp = await fetch(`${suseObservabilityURL}/api/snapshot`, { method: "POST", credentials: "omit", mode: "cors", @@ -121,7 +122,7 @@ export async function loadComponent( identifier: string, ) { const creds = token(spec.serviceToken); - const resp = await window.fetch( + const resp = await fetch( `${spec.url}/api/components?identifier=${encodeURIComponent(identifier)}`, { method: "GET", diff --git a/pkg/observability/package.json b/pkg/observability/package.json index febd529f..2ad67550 100644 --- a/pkg/observability/package.json +++ b/pkg/observability/package.json @@ -33,7 +33,6 @@ "@vue/tsconfig": "^0.7.0", "jiti": "^2.4.2", "jsdom": "^26.1.0", - "msw": "^2.11.5", "npm-run-all2": "^8.0.4", "prettier": "3.6.2", "sass": "^1.93.2", diff --git a/yarn.lock b/yarn.lock index 4a40ed40..46f5ddcf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3462,43 +3462,6 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== -"@inquirer/ansi@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@inquirer/ansi/-/ansi-1.0.0.tgz#29525c673caf36c12e719712830705b9c31f0462" - integrity sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA== - -"@inquirer/confirm@^5.0.0": - version "5.1.18" - resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-5.1.18.tgz#0b76e5082d834c0e3528023705b867fc1222d535" - integrity sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw== - dependencies: - "@inquirer/core" "^10.2.2" - "@inquirer/type" "^3.0.8" - -"@inquirer/core@^10.2.2": - version "10.2.2" - resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-10.2.2.tgz#d31eb50ba0c76b26e7703c2c0d1d0518144c23ab" - integrity sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA== - dependencies: - "@inquirer/ansi" "^1.0.0" - "@inquirer/figures" "^1.0.13" - "@inquirer/type" "^3.0.8" - cli-width "^4.1.0" - mute-stream "^2.0.0" - signal-exit "^4.1.0" - wrap-ansi "^6.2.0" - yoctocolors-cjs "^2.1.2" - -"@inquirer/figures@^1.0.13": - version "1.0.13" - resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.13.tgz#ad0afd62baab1c23175115a9b62f511b6a751e45" - integrity sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw== - -"@inquirer/type@^3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-3.0.8.tgz#efc293ba0ed91e90e6267f1aacc1c70d20b8b4e8" - integrity sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw== - "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -3807,18 +3770,6 @@ globby "^11.0.0" read-yaml-file "^1.1.0" -"@mswjs/interceptors@^0.39.1": - version "0.39.7" - resolved "https://registry.yarnpkg.com/@mswjs/interceptors/-/interceptors-0.39.7.tgz#a8860285ebe228c3043cde32c1843dd088e5276a" - integrity sha512-sURvQbbKsq5f8INV54YJgJEdk8oxBanqkTiXXd33rKmofFCwZLhLRszPduMZ9TA9b8/1CHc/IJmOlBHJk2Q5AQ== - dependencies: - "@open-draft/deferred-promise" "^2.2.0" - "@open-draft/logger" "^0.3.0" - "@open-draft/until" "^2.0.0" - is-node-process "^1.2.0" - outvariant "^1.4.3" - strict-event-emitter "^0.5.1" - "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -3905,24 +3856,6 @@ resolved "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323" integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw== -"@open-draft/deferred-promise@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz#4a822d10f6f0e316be4d67b4d4f8c9a124b073bd" - integrity sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA== - -"@open-draft/logger@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@open-draft/logger/-/logger-0.3.0.tgz#2b3ab1242b360aa0adb28b85f5d7da1c133a0954" - integrity sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ== - dependencies: - is-node-process "^1.2.0" - outvariant "^1.4.0" - -"@open-draft/until@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@open-draft/until/-/until-2.1.0.tgz#0acf32f470af2ceaf47f095cdecd40d68666efda" - integrity sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg== - "@parcel/watcher-android-arm64@2.5.1": version "2.5.1" resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1" @@ -4995,7 +4928,7 @@ dependencies: "@types/lodash" "*" -"@types/lodash@*", "@types/lodash@^4.14.182": +"@types/lodash@*", "@types/lodash@4.14.184", "@types/lodash@^4.14.182": version "4.14.184" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.184.tgz#23f96cd2a21a28e106dc24d825d4aa966de7a9fe" integrity sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q== @@ -5118,11 +5051,6 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== -"@types/statuses@^2.0.4": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/statuses/-/statuses-2.0.6.tgz#66748315cc9a96d63403baa8671b2c124f8633aa" - integrity sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA== - "@types/strip-bom@^3.0.0": version "3.0.0" resolved "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" @@ -7523,11 +7451,6 @@ cli-truncate@^2.1.0: slice-ansi "^3.0.0" string-width "^4.2.0" -cli-width@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" - integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== - clipboard-polyfill@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clipboard-polyfill/-/clipboard-polyfill-4.0.1.tgz#8bff9da4b37565d4fac9dd85249c65bd24f3d1a8" @@ -7560,15 +7483,6 @@ cliui@^7.0.2, cliui@^7.0.4: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -7834,11 +7748,6 @@ cookie@^0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -cookie@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-1.0.2.tgz#27360701532116bd3f1f9416929d176afe1e4610" - integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA== - copy-anything@^3.0.2: version "3.0.5" resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-3.0.5.tgz#2d92dce8c498f790fa7ad16b01a1ae5a45b020a0" @@ -10752,11 +10661,6 @@ graphlib@^2.1.8: dependencies: lodash "^4.17.15" -graphql@^16.8.1: - version "16.11.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.11.0.tgz#96d17f66370678027fdf59b2d4c20b4efaa8a633" - integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw== - gzip-size@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" @@ -10868,11 +10772,6 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -headers-polyfill@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/headers-polyfill/-/headers-polyfill-4.0.3.tgz#922a0155de30ecc1f785bcf04be77844ca95ad07" - integrity sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ== - highlight.js@11.6.0: version "11.6.0" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.6.0.tgz#a50e9da05763f1bb0c1322c8f4f755242cff3f5a" @@ -11498,11 +11397,6 @@ is-negative-zero@^2.0.3: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== -is-node-process@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-node-process/-/is-node-process-1.2.0.tgz#ea02a1b90ddb3934a19aea414e88edef7e11d134" - integrity sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw== - is-number-object@^1.0.4: version "1.0.7" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" @@ -13173,30 +13067,6 @@ ms@2.1.3, ms@^2.1.1, ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -msw@^2.11.5: - version "2.11.5" - resolved "https://registry.yarnpkg.com/msw/-/msw-2.11.5.tgz#69572ab70a60b5d72c8b6aed344595a7604241c0" - integrity sha512-atFI4GjKSJComxcigz273honh8h4j5zzpk5kwG4tGm0TPcYne6bqmVrufeRll6auBeouIkXqZYXxVbWSWxM3RA== - dependencies: - "@inquirer/confirm" "^5.0.0" - "@mswjs/interceptors" "^0.39.1" - "@open-draft/deferred-promise" "^2.2.0" - "@types/statuses" "^2.0.4" - cookie "^1.0.2" - graphql "^16.8.1" - headers-polyfill "^4.0.2" - is-node-process "^1.2.0" - outvariant "^1.4.3" - path-to-regexp "^6.3.0" - picocolors "^1.1.1" - rettime "^0.7.0" - statuses "^2.0.2" - strict-event-emitter "^0.5.1" - tough-cookie "^6.0.0" - type-fest "^4.26.1" - until-async "^3.0.2" - yargs "^17.7.2" - muggle-string@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/muggle-string/-/muggle-string-0.4.1.tgz#3b366bd43b32f809dc20659534dd30e7c8a0d328" @@ -13215,11 +13085,6 @@ multimap@^1.1.0: resolved "https://registry.yarnpkg.com/multimap/-/multimap-1.1.0.tgz#5263febc085a1791c33b59bb3afc6a76a2a10ca8" integrity sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw== -mute-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b" - integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== - mz@^2.4.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" @@ -13686,11 +13551,6 @@ outdent@^0.5.0: resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff" integrity sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q== -outvariant@^1.4.0, outvariant@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/outvariant/-/outvariant-1.4.3.tgz#221c1bfc093e8fec7075497e7799fdbf43d14873" - integrity sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA== - p-filter@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" @@ -13962,11 +13822,6 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" -path-to-regexp@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" - integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== - path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -14984,11 +14839,6 @@ retry@^0.13.1: resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== -rettime@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/rettime/-/rettime-0.7.0.tgz#c040f1a65e396eaa4b8346dd96ed937edc79d96f" - integrity sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw== - reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -15738,11 +15588,6 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== -statuses@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" - integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== - std-env@^3.9.0: version "3.9.0" resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.9.0.tgz#1a6f7243b339dca4c9fd55e1c7504c77ef23e8f1" @@ -15773,11 +15618,6 @@ stream-http@^3.2.0: readable-stream "^3.6.0" xtend "^4.0.2" -strict-event-emitter@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz#1602ece81c51574ca39c6815e09f1a3e8550bd93" - integrity sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ== - string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -16177,11 +16017,6 @@ tldts-core@^6.1.86: resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.86.tgz#a93e6ed9d505cb54c542ce43feb14c73913265d8" integrity sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA== -tldts-core@^7.0.17: - version "7.0.17" - resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-7.0.17.tgz#dadfee3750dd272ed219d7367beb7cbb2ff29eb8" - integrity sha512-DieYoGrP78PWKsrXr8MZwtQ7GLCUeLxihtjC1jZsW1DnvSMdKPitJSe8OSYDM2u5H6g3kWJZpePqkp43TfLh0g== - tldts@^6.1.32: version "6.1.86" resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.86.tgz#087e0555b31b9725ee48ca7e77edc56115cd82f7" @@ -16189,13 +16024,6 @@ tldts@^6.1.32: dependencies: tldts-core "^6.1.86" -tldts@^7.0.5: - version "7.0.17" - resolved "https://registry.yarnpkg.com/tldts/-/tldts-7.0.17.tgz#a6cdc067b9e80ea05f3be471c0ea410688cc78b2" - integrity sha512-Y1KQBgDd/NUc+LfOtKS6mNsC9CCaH+m2P1RoIZy7RAPo3C3/t8X45+zgut31cRZtZ3xKPjfn3TkGTrctC2TQIQ== - dependencies: - tldts-core "^7.0.17" - tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -16267,13 +16095,6 @@ tough-cookie@^5.1.1: dependencies: tldts "^6.1.32" -tough-cookie@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-6.0.0.tgz#11e418b7864a2c0d874702bc8ce0f011261940e5" - integrity sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w== - dependencies: - tldts "^7.0.5" - tr46@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" @@ -16401,11 +16222,6 @@ type-fest@^0.8.0, type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-fest@^4.26.1: - version "4.41.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" - integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== - type-fest@^4.4.0: version "4.26.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz#a4a17fa314f976dd3e6d6675ef6c775c16d7955e" @@ -16605,11 +16421,6 @@ unplugin@^1.4.0: acorn "^8.14.0" webpack-virtual-modules "^0.6.2" -until-async@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/until-async/-/until-async-3.0.2.tgz#447f1531fdd7bb2b4c7a98869bdb1a4c2a23865f" - integrity sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw== - untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" @@ -17574,11 +17385,6 @@ yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - yargs@^15.0.2: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" @@ -17609,19 +17415,6 @@ yargs@^16.0.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - yarn@1.22.18: version "1.22.18" resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.18.tgz#05b822ade8c672987bab8858635145da0850f78a" @@ -17640,11 +17433,6 @@ yn@3.1.1: resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== -yoctocolors-cjs@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz#7e4964ea8ec422b7a40ac917d3a344cfd2304baa" - integrity sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw== - yoctocolors@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/yoctocolors/-/yoctocolors-2.1.2.tgz#d795f54d173494e7d8db93150cec0ed7f678c83a" From 3ccdec36219d7ed89ef104b5d0410c330d79eede Mon Sep 17 00:00:00 2001 From: Frank van Lankvelt Date: Tue, 14 Oct 2025 15:56:14 +0200 Subject: [PATCH 4/5] STAC-23512: handle errors being thrown by fetch --- .../modules/suseObservability.ts | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/pkg/observability/modules/suseObservability.ts b/pkg/observability/modules/suseObservability.ts index b7959ada..ec8f9951 100644 --- a/pkg/observability/modules/suseObservability.ts +++ b/pkg/observability/modules/suseObservability.ts @@ -36,14 +36,17 @@ export async function checkConnection( Authorization: creds, }, }); - return ConnectionStatus.Connected; - } catch (e) { - const err = e as FetchError; - if (err.status >= 500) { - return ConnectionStatus.CrossOriginError; + if (resp.ok) { + return ConnectionStatus.Connected; } else { return ConnectionStatus.InvalidToken; } + } catch (e) { + if (e instanceof FetchError) { + return ConnectionStatus.InvalidToken; + } else { + return ConnectionStatus.CrossOriginError; + } } } @@ -62,13 +65,13 @@ export async function loadObservationStatus( await loadComponent(settings, clusterUrn); return ObservationStatus.Observed; } catch (e) { - const err = e as FetchError; - console.log("LOAD_STAATUS: ", err); - if (err.status === 404) { - return ObservationStatus.NotDeployed; - } else { - return ObservationStatus.ConnectionError; + if (e instanceof FetchError) { + const err = e as FetchError; + if (err.status === 404) { + return ObservationStatus.NotDeployed; + } } + return ObservationStatus.ConnectionError; } } From 7cb206defb9e569188d0d77468d71b20d983a736 Mon Sep 17 00:00:00 2001 From: Frank van Lankvelt Date: Tue, 14 Oct 2025 16:42:51 +0200 Subject: [PATCH 5/5] STAC-23512: clean up tests --- .../components/__tests__/ObservabilityClusterCard.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/observability/components/__tests__/ObservabilityClusterCard.spec.ts b/pkg/observability/components/__tests__/ObservabilityClusterCard.spec.ts index 185ab887..0fd4e390 100644 --- a/pkg/observability/components/__tests__/ObservabilityClusterCard.spec.ts +++ b/pkg/observability/components/__tests__/ObservabilityClusterCard.spec.ts @@ -71,7 +71,6 @@ const setupServer = () => { }, ]; global.fetch = (url: RequestInfo | URL, options?: RequestInit) => { - console.log(url.toString()); const handler = restHandlers.find((handler) => url.toString().startsWith(handler.url), );