mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix KubeApi tests
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
4551357808
commit
7646106d0e
@ -6,13 +6,11 @@ import type { ApiManager } from "../api-manager";
|
|||||||
import type { IngressApi } from "../endpoints";
|
import type { IngressApi } from "../endpoints";
|
||||||
import { Ingress } from "../endpoints";
|
import { Ingress } from "../endpoints";
|
||||||
import { getDiForUnitTesting } from "../../../renderer/getDiForUnitTesting";
|
import { getDiForUnitTesting } from "../../../renderer/getDiForUnitTesting";
|
||||||
import apiManagerInjectable from "../api-manager/manager.injectable";
|
|
||||||
import type { Fetch } from "../../fetch/fetch.injectable";
|
import type { Fetch } from "../../fetch/fetch.injectable";
|
||||||
import fetchInjectable from "../../fetch/fetch.injectable";
|
import fetchInjectable from "../../fetch/fetch.injectable";
|
||||||
import type { AsyncFnMock } from "@async-fn/jest";
|
import type { AsyncFnMock } from "@async-fn/jest";
|
||||||
import asyncFn from "@async-fn/jest";
|
import asyncFn from "@async-fn/jest";
|
||||||
import { flushPromises } from "../../test-utils/flush-promises";
|
import { flushPromises } from "../../test-utils/flush-promises";
|
||||||
import createKubeJsonApiInjectable from "../create-kube-json-api.injectable";
|
|
||||||
import setupAutoRegistrationInjectable from "../../../renderer/before-frame-starts/runnables/setup-auto-registration.injectable";
|
import setupAutoRegistrationInjectable from "../../../renderer/before-frame-starts/runnables/setup-auto-registration.injectable";
|
||||||
import { createMockResponseFromString } from "../../../test-utils/mock-responses";
|
import { createMockResponseFromString } from "../../../test-utils/mock-responses";
|
||||||
import storesAndApisCanBeCreatedInjectable from "../../../renderer/stores-apis-can-be-created.injectable";
|
import storesAndApisCanBeCreatedInjectable from "../../../renderer/stores-apis-can-be-created.injectable";
|
||||||
@ -20,14 +18,14 @@ import directoryForUserDataInjectable from "../../app-paths/directory-for-user-d
|
|||||||
import createClusterInjectable from "../../../main/create-cluster/create-cluster.injectable";
|
import createClusterInjectable from "../../../main/create-cluster/create-cluster.injectable";
|
||||||
import hostedClusterInjectable from "../../../renderer/cluster-frame-context/hosted-cluster.injectable";
|
import hostedClusterInjectable from "../../../renderer/cluster-frame-context/hosted-cluster.injectable";
|
||||||
import directoryForKubeConfigsInjectable from "../../app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable";
|
import directoryForKubeConfigsInjectable from "../../app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable";
|
||||||
import apiKubeInjectable from "../../../renderer/k8s/api-kube.injectable";
|
import apiManagerInjectable from "../api-manager/manager.injectable";
|
||||||
import type { DiContainer } from "@ogre-tools/injectable";
|
import type { DiContainer } from "@ogre-tools/injectable";
|
||||||
import ingressApiInjectable from "../endpoints/ingress.api.injectable";
|
import ingressApiInjectable from "../endpoints/ingress.api.injectable";
|
||||||
|
|
||||||
describe("KubeApi", () => {
|
describe("KubeApi", () => {
|
||||||
let di: DiContainer;
|
|
||||||
let registerApiSpy: jest.SpiedFunction<ApiManager["registerApi"]>;
|
|
||||||
let fetchMock: AsyncFnMock<Fetch>;
|
let fetchMock: AsyncFnMock<Fetch>;
|
||||||
|
let apiManager: ApiManager;
|
||||||
|
let di: DiContainer;
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
di = getDiForUnitTesting({ doGeneralOverrides: true });
|
di = getDiForUnitTesting({ doGeneralOverrides: true });
|
||||||
@ -40,7 +38,6 @@ describe("KubeApi", () => {
|
|||||||
di.override(storesAndApisCanBeCreatedInjectable, () => true);
|
di.override(storesAndApisCanBeCreatedInjectable, () => true);
|
||||||
|
|
||||||
const createCluster = di.inject(createClusterInjectable);
|
const createCluster = di.inject(createClusterInjectable);
|
||||||
const createKubeJsonApi = di.inject(createKubeJsonApiInjectable);
|
|
||||||
|
|
||||||
di.override(hostedClusterInjectable, () => createCluster({
|
di.override(hostedClusterInjectable, () => createCluster({
|
||||||
contextName: "some-context-name",
|
contextName: "some-context-name",
|
||||||
@ -50,12 +47,7 @@ describe("KubeApi", () => {
|
|||||||
clusterServerUrl: "https://localhost:8080",
|
clusterServerUrl: "https://localhost:8080",
|
||||||
}));
|
}));
|
||||||
|
|
||||||
di.override(apiKubeInjectable, () => createKubeJsonApi({
|
apiManager = di.inject(apiManagerInjectable);
|
||||||
serverAddress: `http://127.0.0.1:9999`,
|
|
||||||
apiBase: "/api-kube",
|
|
||||||
}));
|
|
||||||
|
|
||||||
registerApiSpy = jest.spyOn(di.inject(apiManagerInjectable), "registerApi");
|
|
||||||
|
|
||||||
const setupAutoRegistration = di.inject(setupAutoRegistrationInjectable);
|
const setupAutoRegistration = di.inject(setupAutoRegistrationInjectable);
|
||||||
|
|
||||||
@ -79,7 +71,7 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
it("requests version list from the api group from the initial apiBase", () => {
|
it("requests version list from the api group from the initial apiBase", () => {
|
||||||
expect(fetchMock.mock.lastCall).toMatchObject([
|
expect(fetchMock.mock.lastCall).toMatchObject([
|
||||||
"http://127.0.0.1:9999/api-kube/apis/networking.k8s.io",
|
"http://127.0.0.1:12345/api-kube/apis/networking.k8s.io",
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -92,8 +84,8 @@ describe("KubeApi", () => {
|
|||||||
describe("when the version list from the api group resolves", () => {
|
describe("when the version list from the api group resolves", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/networking.k8s.io"],
|
["http://127.0.0.1:12345/api-kube/apis/networking.k8s.io"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/networking.k8s.io", JSON.stringify({
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/networking.k8s.io", JSON.stringify({
|
||||||
apiVersion: "v1",
|
apiVersion: "v1",
|
||||||
kind: "APIGroup",
|
kind: "APIGroup",
|
||||||
name: "networking.k8s.io",
|
name: "networking.k8s.io",
|
||||||
@ -117,7 +109,7 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
it("requests resources from the versioned api group from the initial apiBase", () => {
|
it("requests resources from the versioned api group from the initial apiBase", () => {
|
||||||
expect(fetchMock.mock.lastCall).toMatchObject([
|
expect(fetchMock.mock.lastCall).toMatchObject([
|
||||||
"http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1",
|
"http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1",
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -130,8 +122,8 @@ describe("KubeApi", () => {
|
|||||||
describe("when resource request fufills with a resource", () => {
|
describe("when resource request fufills with a resource", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1"],
|
["http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1", JSON.stringify({
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1", JSON.stringify({
|
||||||
resources: [{
|
resources: [{
|
||||||
name: "ingresses",
|
name: "ingresses",
|
||||||
}],
|
}],
|
||||||
@ -141,7 +133,7 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
it("makes the request to get the resource", () => {
|
it("makes the request to get the resource", () => {
|
||||||
expect(fetchMock.mock.lastCall).toMatchObject([
|
expect(fetchMock.mock.lastCall).toMatchObject([
|
||||||
"http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo",
|
"http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo",
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -159,8 +151,8 @@ describe("KubeApi", () => {
|
|||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
it("registers the api with the changes info", () => {
|
it("api is retrievable with the new apiBase", () => {
|
||||||
expect(registerApiSpy).toBeCalledWith(ingressApi);
|
expect(apiManager.getApi("/apis/networking.k8s.io/v1/ingresses")).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("when the request resolves with no data", () => {
|
describe("when the request resolves with no data", () => {
|
||||||
@ -168,8 +160,8 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo"],
|
["http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo", JSON.stringify({})),
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo", JSON.stringify({})),
|
||||||
);
|
);
|
||||||
result = await getCall;
|
result = await getCall;
|
||||||
});
|
});
|
||||||
@ -193,7 +185,7 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
it("makes the request to get the resource", () => {
|
it("makes the request to get the resource", () => {
|
||||||
expect(fetchMock.mock.lastCall).toMatchObject([
|
expect(fetchMock.mock.lastCall).toMatchObject([
|
||||||
"http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo1",
|
"http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo1",
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -208,8 +200,8 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo1"],
|
["http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo1"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo1", JSON.stringify({})),
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo1", JSON.stringify({})),
|
||||||
);
|
);
|
||||||
result = await getCall;
|
result = await getCall;
|
||||||
});
|
});
|
||||||
@ -226,8 +218,8 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo"],
|
["http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo", JSON.stringify({
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo", JSON.stringify({
|
||||||
apiVersion: "v1",
|
apiVersion: "v1",
|
||||||
kind: "Ingress",
|
kind: "Ingress",
|
||||||
metadata: {
|
metadata: {
|
||||||
@ -260,7 +252,7 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
it("makes the request to get the resource", () => {
|
it("makes the request to get the resource", () => {
|
||||||
expect(fetchMock.mock.lastCall).toMatchObject([
|
expect(fetchMock.mock.lastCall).toMatchObject([
|
||||||
"http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo1",
|
"http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo1",
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -275,8 +267,8 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo1"],
|
["http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo1"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo1", JSON.stringify({})),
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1/namespaces/default/ingresses/foo1", JSON.stringify({})),
|
||||||
);
|
);
|
||||||
result = await getCall;
|
result = await getCall;
|
||||||
});
|
});
|
||||||
@ -292,8 +284,8 @@ describe("KubeApi", () => {
|
|||||||
describe("when resource request fufills with no resource", () => {
|
describe("when resource request fufills with no resource", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1"],
|
["http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1", JSON.stringify({
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1", JSON.stringify({
|
||||||
resources: [],
|
resources: [],
|
||||||
})),
|
})),
|
||||||
);
|
);
|
||||||
@ -301,7 +293,7 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
it("requests resources from the second versioned api group from the initial apiBase", () => {
|
it("requests resources from the second versioned api group from the initial apiBase", () => {
|
||||||
expect(fetchMock.mock.lastCall).toMatchObject([
|
expect(fetchMock.mock.lastCall).toMatchObject([
|
||||||
"http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1beta1",
|
"http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1beta1",
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -316,8 +308,8 @@ describe("KubeApi", () => {
|
|||||||
describe("when resource request fufills with a resource", () => {
|
describe("when resource request fufills with a resource", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1beta1"],
|
["http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1beta1"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1beta1", JSON.stringify({
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1beta1", JSON.stringify({
|
||||||
resources: [{
|
resources: [{
|
||||||
name: "ingresses",
|
name: "ingresses",
|
||||||
}],
|
}],
|
||||||
@ -327,7 +319,7 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
it("makes the request to get the resource", () => {
|
it("makes the request to get the resource", () => {
|
||||||
expect(fetchMock.mock.lastCall).toMatchObject([
|
expect(fetchMock.mock.lastCall).toMatchObject([
|
||||||
"http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo",
|
"http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo",
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -345,8 +337,8 @@ describe("KubeApi", () => {
|
|||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
it("registers the api with the changes info", () => {
|
it("api is retrievable with the new apiBase", () => {
|
||||||
expect(registerApiSpy).toBeCalledWith(ingressApi);
|
expect(apiManager.getApi("/apis/networking.k8s.io/v1beta1/ingresses")).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("when the request resolves with no data", () => {
|
describe("when the request resolves with no data", () => {
|
||||||
@ -354,8 +346,8 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo"],
|
["http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo", JSON.stringify({})),
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo", JSON.stringify({})),
|
||||||
);
|
);
|
||||||
result = await getCall;
|
result = await getCall;
|
||||||
});
|
});
|
||||||
@ -379,7 +371,7 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
it("makes the request to get the resource", () => {
|
it("makes the request to get the resource", () => {
|
||||||
expect(fetchMock.mock.lastCall).toMatchObject([
|
expect(fetchMock.mock.lastCall).toMatchObject([
|
||||||
"http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo1",
|
"http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo1",
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -394,8 +386,8 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo1"],
|
["http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo1"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo1", JSON.stringify({})),
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo1", JSON.stringify({})),
|
||||||
);
|
);
|
||||||
result = await getCall;
|
result = await getCall;
|
||||||
});
|
});
|
||||||
@ -412,8 +404,8 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo"],
|
["http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo", JSON.stringify({
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo", JSON.stringify({
|
||||||
apiVersion: "v1",
|
apiVersion: "v1",
|
||||||
kind: "Ingress",
|
kind: "Ingress",
|
||||||
metadata: {
|
metadata: {
|
||||||
@ -446,7 +438,7 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
it("makes the request to get the resource", () => {
|
it("makes the request to get the resource", () => {
|
||||||
expect(fetchMock.mock.lastCall).toMatchObject([
|
expect(fetchMock.mock.lastCall).toMatchObject([
|
||||||
"http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo1",
|
"http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo1",
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -461,8 +453,8 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo1"],
|
["http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo1"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo1", JSON.stringify({})),
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/networking.k8s.io/v1beta1/namespaces/default/ingresses/foo1", JSON.stringify({})),
|
||||||
);
|
);
|
||||||
result = await getCall;
|
result = await getCall;
|
||||||
});
|
});
|
||||||
@ -480,8 +472,8 @@ describe("KubeApi", () => {
|
|||||||
describe("when the version list from the api group resolves with no versions", () => {
|
describe("when the version list from the api group resolves with no versions", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/networking.k8s.io"],
|
["http://127.0.0.1:12345/api-kube/apis/networking.k8s.io"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/networking.k8s.io", JSON.stringify({
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/networking.k8s.io", JSON.stringify({
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"status": "Failure",
|
"status": "Failure",
|
||||||
"message": "the server could not find the requested resource",
|
"message": "the server could not find the requested resource",
|
||||||
@ -501,7 +493,7 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
it("requests the resources from the base api url from the fallback api", () => {
|
it("requests the resources from the base api url from the fallback api", () => {
|
||||||
expect(fetchMock.mock.lastCall).toMatchObject([
|
expect(fetchMock.mock.lastCall).toMatchObject([
|
||||||
"http://127.0.0.1:9999/api-kube/apis/extensions",
|
"http://127.0.0.1:12345/api-kube/apis/extensions",
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -514,8 +506,8 @@ describe("KubeApi", () => {
|
|||||||
describe("when resource request fufills with a resource", () => {
|
describe("when resource request fufills with a resource", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/extensions"],
|
["http://127.0.0.1:12345/api-kube/apis/extensions"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/extensions", JSON.stringify({
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/extensions", JSON.stringify({
|
||||||
apiVersion: "v1",
|
apiVersion: "v1",
|
||||||
kind: "APIGroup",
|
kind: "APIGroup",
|
||||||
name: "extensions",
|
name: "extensions",
|
||||||
@ -535,7 +527,7 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
it("requests resource versions from the versioned api group from the fallback apiBase", () => {
|
it("requests resource versions from the versioned api group from the fallback apiBase", () => {
|
||||||
expect(fetchMock.mock.lastCall).toMatchObject([
|
expect(fetchMock.mock.lastCall).toMatchObject([
|
||||||
"http://127.0.0.1:9999/api-kube/apis/extensions/v1beta1",
|
"http://127.0.0.1:12345/api-kube/apis/extensions/v1beta1",
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -548,8 +540,8 @@ describe("KubeApi", () => {
|
|||||||
describe("when the preferred version request resolves to v1beta1", () => {
|
describe("when the preferred version request resolves to v1beta1", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/extensions/v1beta1"],
|
["http://127.0.0.1:12345/api-kube/apis/extensions/v1beta1"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/extensions", JSON.stringify({
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/extensions", JSON.stringify({
|
||||||
resources: [{
|
resources: [{
|
||||||
name: "ingresses",
|
name: "ingresses",
|
||||||
}],
|
}],
|
||||||
@ -559,7 +551,7 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
it("makes the request to get the resource", () => {
|
it("makes the request to get the resource", () => {
|
||||||
expect(fetchMock.mock.lastCall).toMatchObject([
|
expect(fetchMock.mock.lastCall).toMatchObject([
|
||||||
"http://127.0.0.1:9999/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo",
|
"http://127.0.0.1:12345/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo",
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -577,8 +569,8 @@ describe("KubeApi", () => {
|
|||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
it("registers the api with the changes info", () => {
|
it("api is retrievable with the new apiBase", () => {
|
||||||
expect(registerApiSpy).toBeCalledWith(ingressApi);
|
expect(apiManager.getApi("/apis/extensions/v1beta1/ingresses")).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("when the request resolves with no data", () => {
|
describe("when the request resolves with no data", () => {
|
||||||
@ -586,8 +578,8 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo"],
|
["http://127.0.0.1:12345/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo", JSON.stringify({})),
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo", JSON.stringify({})),
|
||||||
);
|
);
|
||||||
result = await getCall;
|
result = await getCall;
|
||||||
});
|
});
|
||||||
@ -611,7 +603,7 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
it("makes the request to get the resource", () => {
|
it("makes the request to get the resource", () => {
|
||||||
expect(fetchMock.mock.lastCall).toMatchObject([
|
expect(fetchMock.mock.lastCall).toMatchObject([
|
||||||
"http://127.0.0.1:9999/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo1",
|
"http://127.0.0.1:12345/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo1",
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -626,8 +618,8 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo1"],
|
["http://127.0.0.1:12345/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo1"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo1", JSON.stringify({})),
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo1", JSON.stringify({})),
|
||||||
);
|
);
|
||||||
result = await getCall;
|
result = await getCall;
|
||||||
});
|
});
|
||||||
@ -644,8 +636,8 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo"],
|
["http://127.0.0.1:12345/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo", JSON.stringify({
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo", JSON.stringify({
|
||||||
apiVersion: "v1beta1",
|
apiVersion: "v1beta1",
|
||||||
kind: "Ingress",
|
kind: "Ingress",
|
||||||
metadata: {
|
metadata: {
|
||||||
@ -678,7 +670,7 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
it("makes the request to get the resource", () => {
|
it("makes the request to get the resource", () => {
|
||||||
expect(fetchMock.mock.lastCall).toMatchObject([
|
expect(fetchMock.mock.lastCall).toMatchObject([
|
||||||
"http://127.0.0.1:9999/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo1",
|
"http://127.0.0.1:12345/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo1",
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -693,8 +685,8 @@ describe("KubeApi", () => {
|
|||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await fetchMock.resolveSpecific(
|
await fetchMock.resolveSpecific(
|
||||||
["http://127.0.0.1:9999/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo1"],
|
["http://127.0.0.1:12345/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo1"],
|
||||||
createMockResponseFromString("http://127.0.0.1:9999/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo1", JSON.stringify({})),
|
createMockResponseFromString("http://127.0.0.1:12345/api-kube/apis/extensions/v1beta1/namespaces/default/ingresses/foo1", JSON.stringify({})),
|
||||||
);
|
);
|
||||||
result = await getCall;
|
result = await getCall;
|
||||||
});
|
});
|
||||||
|
|||||||
@ -22,6 +22,7 @@ import type { PartialDeep } from "type-fest";
|
|||||||
import type { Logger } from "../logger";
|
import type { Logger } from "../logger";
|
||||||
import type AbortController from "abort-controller";
|
import type AbortController from "abort-controller";
|
||||||
import { matches } from "lodash/fp";
|
import { matches } from "lodash/fp";
|
||||||
|
import { action, makeObservable, observable } from "mobx";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The options used for creating a `KubeApi`
|
* The options used for creating a `KubeApi`
|
||||||
@ -215,7 +216,9 @@ export class KubeApi<
|
|||||||
> {
|
> {
|
||||||
readonly kind: string;
|
readonly kind: string;
|
||||||
readonly apiVersion: string;
|
readonly apiVersion: string;
|
||||||
apiBase: string;
|
|
||||||
|
@observable apiBase: string;
|
||||||
|
|
||||||
apiPrefix: string;
|
apiPrefix: string;
|
||||||
apiGroup: string;
|
apiGroup: string;
|
||||||
apiVersionPreferred: string | undefined;
|
apiVersionPreferred: string | undefined;
|
||||||
@ -242,6 +245,7 @@ export class KubeApi<
|
|||||||
fallbackApiBases,
|
fallbackApiBases,
|
||||||
} = opts;
|
} = opts;
|
||||||
|
|
||||||
|
makeObservable(this);
|
||||||
assert(fullApiPathname, "apiBase MUST be provied either via KubeApiOptions.apiBase or KubeApiOptions.objectConstructor.apiBase");
|
assert(fullApiPathname, "apiBase MUST be provied either via KubeApiOptions.apiBase or KubeApiOptions.objectConstructor.apiBase");
|
||||||
assert(request, "request MUST be provided if not in a cluster page frame context");
|
assert(request, "request MUST be provided if not in a cluster page frame context");
|
||||||
|
|
||||||
@ -308,6 +312,7 @@ export class KubeApi<
|
|||||||
throw new Error(`Can't find working API for the Kubernetes resource ${this.apiResource}`);
|
throw new Error(`Can't find working API for the Kubernetes resource ${this.apiResource}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@action
|
||||||
protected async checkPreferredVersion() {
|
protected async checkPreferredVersion() {
|
||||||
if (this.fallbackApiBases && !this.doCheckPreferredVersion) {
|
if (this.fallbackApiBases && !this.doCheckPreferredVersion) {
|
||||||
throw new Error("checkPreferredVersion must be enabled if fallbackApiBases is set in KubeApi");
|
throw new Error("checkPreferredVersion must be enabled if fallbackApiBases is set in KubeApi");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user