mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix tests finally
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
3d860cb036
commit
2768a63feb
@ -55,7 +55,7 @@ import { ChildProcess, spawn } from "child_process";
|
||||
import { bundledKubectlPath, Kubectl } from "../kubectl";
|
||||
import { mock, MockProxy } from "jest-mock-extended";
|
||||
import { waitUntilUsed } from "tcp-port-used";
|
||||
import type { Readable } from "stream";
|
||||
import { EventEmitter, Readable } from "stream";
|
||||
import { UserStore } from "../../common/user-store";
|
||||
import { Console } from "console";
|
||||
import { stdout, stderr } from "process";
|
||||
@ -134,30 +134,73 @@ describe("kube auth proxy tests", () => {
|
||||
|
||||
describe("spawn tests", () => {
|
||||
let mockedCP: MockProxy<ChildProcess>;
|
||||
let listeners: Record<string, (...args: any[]) => void>;
|
||||
let listeners: EventEmitter;
|
||||
let proxy: KubeAuthProxy;
|
||||
|
||||
beforeEach(async () => {
|
||||
mockedCP = mock<ChildProcess>();
|
||||
listeners = {};
|
||||
listeners = new EventEmitter();
|
||||
|
||||
jest.spyOn(Kubectl.prototype, "checkBinary").mockReturnValueOnce(Promise.resolve(true));
|
||||
jest.spyOn(Kubectl.prototype, "ensureKubectl").mockReturnValueOnce(Promise.resolve(false));
|
||||
mockedCP.on.mockImplementation((event: string, listener: (message: any, sendHandle: any) => void): ChildProcess => {
|
||||
listeners[event] = listener;
|
||||
listeners.on(event, listener);
|
||||
|
||||
return mockedCP;
|
||||
});
|
||||
mockedCP.stderr = mock<Readable>();
|
||||
mockedCP.stderr.on.mockImplementation((event: string, listener: (message: any, sendHandle: any) => void): Readable => {
|
||||
listeners[`stderr/${event}`] = listener;
|
||||
listeners.on(`stderr/${event}`, listener);
|
||||
|
||||
return mockedCP.stderr;
|
||||
});
|
||||
mockedCP.stderr.off.mockImplementation((event: string, listener: (message: any, sendHandle: any) => void): Readable => {
|
||||
listeners.off(`stderr/${event}`, listener);
|
||||
|
||||
return mockedCP.stderr;
|
||||
});
|
||||
mockedCP.stderr.removeListener.mockImplementation((event: string, listener: (message: any, sendHandle: any) => void): Readable => {
|
||||
listeners.off(`stderr/${event}`, listener);
|
||||
|
||||
return mockedCP.stderr;
|
||||
});
|
||||
mockedCP.stderr.once.mockImplementation((event: string, listener: (message: any, sendHandle: any) => void): Readable => {
|
||||
listeners.once(`stderr/${event}`, listener);
|
||||
|
||||
return mockedCP.stderr;
|
||||
});
|
||||
mockedCP.stderr.removeAllListeners.mockImplementation((event?: string): Readable => {
|
||||
listeners.removeAllListeners(event ?? `stderr/${event}`);
|
||||
|
||||
return mockedCP.stderr;
|
||||
});
|
||||
mockedCP.stdout = mock<Readable>();
|
||||
mockedCP.stdout.on.mockImplementation((event: string, listener: (message: any, sendHandle: any) => void): Readable => {
|
||||
listeners[`stdout/${event}`] = listener;
|
||||
listeners[`stdout/${event}`]("Starting to serve on 127.0.0.1:9191");
|
||||
listeners.on(`stdout/${event}`, listener);
|
||||
|
||||
if (event === "data") {
|
||||
listeners.emit("stdout/data", "Starting to serve on 127.0.0.1:9191");
|
||||
}
|
||||
|
||||
return mockedCP.stdout;
|
||||
});
|
||||
mockedCP.stdout.once.mockImplementation((event: string, listener: (message: any, sendHandle: any) => void): Readable => {
|
||||
listeners.once(`stdout/${event}`, listener);
|
||||
|
||||
return mockedCP.stdout;
|
||||
});
|
||||
mockedCP.stdout.off.mockImplementation((event: string, listener: (message: any, sendHandle: any) => void): Readable => {
|
||||
listeners.off(`stdout/${event}`, listener);
|
||||
|
||||
return mockedCP.stdout;
|
||||
});
|
||||
mockedCP.stdout.removeListener.mockImplementation((event: string, listener: (message: any, sendHandle: any) => void): Readable => {
|
||||
listeners.off(`stdout/${event}`, listener);
|
||||
|
||||
return mockedCP.stdout;
|
||||
});
|
||||
mockedCP.stdout.removeAllListeners.mockImplementation((event?: string): Readable => {
|
||||
listeners.removeAllListeners(event ?? `stdout/${event}`);
|
||||
|
||||
return mockedCP.stdout;
|
||||
});
|
||||
@ -175,36 +218,36 @@ describe("kube auth proxy tests", () => {
|
||||
|
||||
it("should call spawn and broadcast errors", async () => {
|
||||
await proxy.run();
|
||||
listeners["error"]({ message: "foobarbat" });
|
||||
listeners.emit("error", { message: "foobarbat" });
|
||||
|
||||
expect(mockBroadcastIpc).toBeCalledWith("cluster:foobar:connection-update", { data: "foobarbat", error: true });
|
||||
expect(mockBroadcastIpc).toBeCalledWith("cluster:foobar:connection-update", { message: "foobarbat", isError: true });
|
||||
});
|
||||
|
||||
it("should call spawn and broadcast exit", async () => {
|
||||
await proxy.run();
|
||||
listeners["exit"](0);
|
||||
listeners.emit("exit", 0);
|
||||
|
||||
expect(mockBroadcastIpc).toBeCalledWith("cluster:foobar:connection-update", { data: "proxy exited with code: 0", error: false });
|
||||
expect(mockBroadcastIpc).toBeCalledWith("cluster:foobar:connection-update", { message: "proxy exited with code: 0", isError: false });
|
||||
});
|
||||
|
||||
it("should call spawn and broadcast errors from stderr", async () => {
|
||||
await proxy.run();
|
||||
listeners["stderr/data"]("an error");
|
||||
listeners.emit("stderr/data", "an error");
|
||||
|
||||
expect(mockBroadcastIpc).toBeCalledWith("cluster:foobar:connection-update", { data: "an error", error: true });
|
||||
expect(mockBroadcastIpc).toBeCalledWith("cluster:foobar:connection-update", { message: "an error", isError: true });
|
||||
});
|
||||
|
||||
it("should call spawn and broadcast stdout serving info", async () => {
|
||||
await proxy.run();
|
||||
|
||||
expect(mockBroadcastIpc).toBeCalledWith("cluster:foobar:connection-update", { data: "Authentication proxy started\n" });
|
||||
expect(mockBroadcastIpc).toBeCalledWith("cluster:foobar:connection-update", { message: "Authentication proxy started", isError: false });
|
||||
});
|
||||
|
||||
it("should call spawn and broadcast stdout other info", async () => {
|
||||
await proxy.run();
|
||||
listeners["stdout/data"]("some info");
|
||||
listeners.emit("stdout/data", "some info");
|
||||
|
||||
expect(mockBroadcastIpc).toBeCalledWith("cluster:foobar:connection-update", { data: "some info" });
|
||||
expect(mockBroadcastIpc).toBeCalledWith("cluster:foobar:connection-update", { message: "some info", isError: false });
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user