mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Get tests to pass
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
70a9a2476d
commit
8e2c535bd3
@ -35,6 +35,7 @@ import writeFileInjectable from "../fs/write-file.injectable";
|
||||
import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
|
||||
import getConfigurationFileModelInjectable from "../get-configuration-file-model/get-configuration-file-model.injectable";
|
||||
import appVersionInjectable from "../get-configuration-file-model/app-version/app-version.injectable";
|
||||
import fsInjectable from "../fs/fs.injectable";
|
||||
|
||||
console = new Console(stdout, stderr);
|
||||
|
||||
@ -49,8 +50,9 @@ describe("user store tests", () => {
|
||||
|
||||
di.override(writeFileInjectable, () => () => Promise.resolve());
|
||||
di.override(directoryForUserDataInjectable, () => "some-directory-for-user-data");
|
||||
di.permitSideEffects(getConfigurationFileModelInjectable);
|
||||
|
||||
di.permitSideEffects(getConfigurationFileModelInjectable);
|
||||
di.permitSideEffects(fsInjectable);
|
||||
di.permitSideEffects(appVersionInjectable);
|
||||
di.permitSideEffects(userStoreInjectable);
|
||||
|
||||
|
||||
@ -18,11 +18,12 @@ import type { DiContainer } from "@ogre-tools/injectable";
|
||||
import { parse } from "url";
|
||||
import loggerInjectable from "../../common/logger.injectable";
|
||||
import type { Logger } from "../../common/logger";
|
||||
import assert from "assert";
|
||||
import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||
import normalizedPlatformInjectable from "../../common/vars/normalized-platform.injectable";
|
||||
import kubectlBinaryNameInjectable from "../kubectl/binary-name.injectable";
|
||||
import kubectlDownloadingNormalizedArchInjectable from "../kubectl/normalized-arch.injectable";
|
||||
import readFileInjectable from "../../common/fs/read-file.injectable";
|
||||
import fsInjectable from "../../common/fs/fs.injectable";
|
||||
|
||||
console = new Console(process.stdout, process.stderr); // fix mockFS
|
||||
|
||||
@ -30,7 +31,7 @@ const clusterServerUrl = "https://192.168.64.3:8443";
|
||||
|
||||
describe("kubeconfig manager tests", () => {
|
||||
let clusterFake: Cluster;
|
||||
let createKubeconfigManager: (cluster: Cluster) => KubeconfigManager | undefined;
|
||||
let createKubeconfigManager: (cluster: Cluster) => KubeconfigManager;
|
||||
let di: DiContainer;
|
||||
let loggerMock: jest.Mocked<Logger>;
|
||||
|
||||
@ -43,6 +44,9 @@ describe("kubeconfig manager tests", () => {
|
||||
di.override(kubectlDownloadingNormalizedArchInjectable, () => "amd64");
|
||||
di.override(normalizedPlatformInjectable, () => "darwin");
|
||||
|
||||
di.unoverride(readFileInjectable);
|
||||
di.permitSideEffects(fsInjectable);
|
||||
|
||||
loggerMock = {
|
||||
warn: jest.fn(),
|
||||
debug: jest.fn(),
|
||||
@ -110,11 +114,17 @@ describe("kubeconfig manager tests", () => {
|
||||
|
||||
it("should create 'temp' kube config with proxy", async () => {
|
||||
const kubeConfManager = createKubeconfigManager(clusterFake);
|
||||
let kubeConfigPath: string;
|
||||
|
||||
assert(kubeConfManager, "should actually create one");
|
||||
try {
|
||||
kubeConfigPath = await kubeConfManager.getPath();
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
fail(error);
|
||||
}
|
||||
|
||||
expect(loggerMock.error).not.toBeCalled();
|
||||
expect(await kubeConfManager.getPath()).toBe(`some-directory-for-temp${path.sep}kubeconfig-foo`);
|
||||
expect(kubeConfigPath).toBe(`some-directory-for-temp${path.sep}kubeconfig-foo`);
|
||||
// this causes an intermittent "ENXIO: no such device or address, read" error
|
||||
// const file = await fse.readFile(await kubeConfManager.getPath());
|
||||
const file = fse.readFileSync(await kubeConfManager.getPath());
|
||||
@ -127,9 +137,6 @@ describe("kubeconfig manager tests", () => {
|
||||
|
||||
it("should remove 'temp' kube config on unlink and remove reference from inside class", async () => {
|
||||
const kubeConfManager = createKubeconfigManager(clusterFake);
|
||||
|
||||
assert(kubeConfManager, "should actually create one");
|
||||
|
||||
const configPath = await kubeConfManager.getPath();
|
||||
|
||||
expect(await fse.pathExists(configPath)).toBe(true);
|
||||
|
||||
@ -15,6 +15,7 @@ import listNamespacesInjectable from "../../common/cluster/list-namespaces.injec
|
||||
import loggerInjectable from "../../common/logger.injectable";
|
||||
import detectorRegistryInjectable from "../cluster-detectors/detector-registry.injectable";
|
||||
import createVersionDetectorInjectable from "../cluster-detectors/create-version-detector.injectable";
|
||||
import readFileInjectable from "../../common/fs/read-file.injectable";
|
||||
|
||||
const createClusterInjectable = getInjectable({
|
||||
id: "create-cluster",
|
||||
@ -30,6 +31,7 @@ const createClusterInjectable = getInjectable({
|
||||
logger: di.inject(loggerInjectable),
|
||||
detectorRegistry: di.inject(detectorRegistryInjectable),
|
||||
createVersionDetector: di.inject(createVersionDetectorInjectable),
|
||||
readFile: di.inject(readFileInjectable),
|
||||
};
|
||||
|
||||
return (model, configData) => new Cluster(dependencies, model, configData);
|
||||
|
||||
@ -16,7 +16,7 @@ import type { Logger } from "../../common/logger";
|
||||
export interface KubeconfigManagerDependencies {
|
||||
readonly directoryForTemp: string;
|
||||
readonly logger: Logger;
|
||||
lensProxyPort: { get: () => number };
|
||||
readonly lensProxyPort: { get: () => number };
|
||||
}
|
||||
|
||||
export class KubeconfigManager {
|
||||
@ -78,7 +78,7 @@ export class KubeconfigManager {
|
||||
|
||||
return this.tempFilePath = await this.createProxyKubeconfig();
|
||||
} catch (error) {
|
||||
throw Object.assign(new Error("Failed to creat temp config for auth-proxy"), { cause: error });
|
||||
throw new Error("Failed to creat temp config for auth-proxy", { cause: error as Error });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
import joinMigrationsInjectable from "../join.injectable";
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { clusterStoreMigrationDeclarationInjectionToken } from "./migration";
|
||||
import { clusterStoreMigrationsInjectionToken } from "../../../common/cluster-store/migrations";
|
||||
|
||||
const clusterStoreMigrationsInjectable = getInjectable({
|
||||
id: "cluster-store-migrations",
|
||||
@ -17,6 +18,7 @@ const clusterStoreMigrationsInjectable = getInjectable({
|
||||
|
||||
return joinMigrations(migrationDeclarations);
|
||||
},
|
||||
injectionToken: clusterStoreMigrationsInjectionToken,
|
||||
});
|
||||
|
||||
export default clusterStoreMigrationsInjectable;
|
||||
|
||||
@ -8,7 +8,7 @@ import path from "path";
|
||||
import os from "os";
|
||||
import type { ClusterStoreModel } from "../../../common/cluster-store/cluster-store";
|
||||
import type { KubeconfigSyncEntry } from "../../../common/user-store";
|
||||
import { hasTypedProperty, isErrnoException, isLogicalChildPath } from "../../../common/utils";
|
||||
import { hasOptionalTypedProperty, isErrnoException, isLogicalChildPath } from "../../../common/utils";
|
||||
import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||
import directoryForKubeConfigsInjectable from "../../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable";
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
@ -39,17 +39,20 @@ const userStoreV503Beta1MigrationInjectable = getInjectable({
|
||||
return;
|
||||
}
|
||||
|
||||
if (!hasTypedProperty(preferences, "syncKubeconfigEntries", Array.isArray)) {
|
||||
if (!hasOptionalTypedProperty(preferences, "syncKubeconfigEntries", Array.isArray)) {
|
||||
delete (preferences as any).syncKubeconfigEntries;
|
||||
|
||||
store.set("preferences", preferences);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const { syncKubeconfigEntries } = preferences;
|
||||
|
||||
const { syncKubeconfigEntries = [] } = preferences;
|
||||
const { clusters = [] }: ClusterStoreModel = JSON.parse(readFileSync(joinPaths(userDataPath, "lens-cluster-store.json"))) ?? {};
|
||||
const extensionDataDir = joinPaths(userDataPath, "extension_data");
|
||||
const syncPaths = new Set(syncKubeconfigEntries.map(s => s.filePath));
|
||||
|
||||
syncPaths.add(path.join(os.homedir(), ".kube"));
|
||||
syncPaths.add(joinPaths(os.homedir(), ".kube"));
|
||||
|
||||
for (const cluster of clusters) {
|
||||
if (!cluster.kubeConfigPath) {
|
||||
|
||||
@ -26,6 +26,7 @@ const createClusterInjectable = getInjectable({
|
||||
createListNamespaces: () => { throw new Error("Tried to access back-end feature in front-end."); },
|
||||
detectorRegistry: undefined as never,
|
||||
createVersionDetector: () => { throw new Error("Tried to access back-end feature in front-end."); },
|
||||
readFile: () => { throw new Error("Tried to access back-end feature in front-end."); },
|
||||
};
|
||||
|
||||
return (model, configData) => new Cluster(dependencies, model, configData);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user