Skip to content

Commit 62e8b11

Browse files
authored
Merge pull request #1665 from mstruebing/ms/websocket-master
[MASTER] fix: use correct types for websocket
2 parents b8b0ec5 + ba17e29 commit 62e8b11

8 files changed

+49
-40
lines changed

src/attach.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export class Attach {
2323
stderr: stream.Writable | any,
2424
stdin: stream.Readable | any,
2525
tty: boolean,
26-
): Promise<WebSocket> {
26+
): Promise<WebSocket.WebSocket> {
2727
const query = {
2828
container: containerName,
2929
stderr: stderr != null,

src/attach_test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ describe('Attach', () => {
4949
it('should correctly attach to streams', async () => {
5050
const kc = new KubeConfig();
5151
const fakeWebSocketInterface: WebSocketInterface = mock(WebSocketHandler);
52-
const fakeWebSocket: WebSocket = mock(WebSocket);
52+
const fakeWebSocket: WebSocket.WebSocket = mock(WebSocket);
5353
const callAwaiter: CallAwaiter = new CallAwaiter();
5454
const attach = new Attach(kc, instance(fakeWebSocketInterface));
5555
const osStream = new ResizableWriteableStreamBuffer();
@@ -63,7 +63,7 @@ describe('Attach', () => {
6363
const path = `/api/v1/namespaces/${namespace}/pods/${pod}/attach`;
6464
const args = `container=${container}&stderr=true&stdin=true&stdout=true&tty=false`;
6565

66-
const fakeConn: WebSocket = instance(fakeWebSocket);
66+
const fakeConn: WebSocket.WebSocket = instance(fakeWebSocket);
6767
when(fakeWebSocketInterface.connect(`${path}?${args}`, null, anyFunction())).thenResolve(
6868
fakeConn,
6969
);

src/cp_test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ describe('Cp', () => {
4444
it('should run extract tar command to a url', async () => {
4545
const kc = new KubeConfig();
4646
const fakeWebSocketInterface: WebSocketInterface = mock(WebSocketHandler);
47-
const fakeWebSocket: WebSocket = mock(WebSocket) as WebSocket;
47+
const fakeWebSocket: WebSocket.WebSocket = mock(WebSocket) as WebSocket.WebSocket;
4848
const callAwaiter: CallAwaiter = new CallAwaiter();
4949
const exec = new Exec(kc, instance(fakeWebSocketInterface));
5050
const cp = new Cp(kc, exec);
@@ -67,7 +67,7 @@ describe('Cp', () => {
6767
};
6868
const queryStr = querystring.stringify(query);
6969

70-
const fakeConn: WebSocket = instance(fakeWebSocket);
70+
const fakeConn: WebSocket.WebSocket = instance(fakeWebSocket);
7171
when(fakeWebSocketInterface.connect(`${path}?${queryStr}`, null, anyFunction())).thenResolve(
7272
fakeConn,
7373
);

src/exec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export class Exec {
3939
stdin: stream.Readable | null,
4040
tty: boolean,
4141
statusCallback?: (status: V1Status) => void,
42-
): Promise<WebSocket> {
42+
): Promise<WebSocket.WebSocket> {
4343
const query = {
4444
stdout: stdout != null,
4545
stderr: stderr != null,

src/exec_test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ describe('Exec', () => {
5656
it('should correctly attach to streams', async () => {
5757
const kc = new KubeConfig();
5858
const fakeWebSocketInterface: WebSocketInterface = mock(WebSocketHandler);
59-
const fakeWebSocket: WebSocket = mock(WebSocket);
59+
const fakeWebSocket: WebSocket.WebSocket = mock(WebSocket);
6060
const callAwaiter: CallAwaiter = new CallAwaiter();
6161
const exec = new Exec(kc, instance(fakeWebSocketInterface));
6262
const osStream = new ResizableWriteableStreamBuffer();
@@ -73,7 +73,7 @@ describe('Exec', () => {
7373

7474
let statusOut = {} as V1Status;
7575

76-
const fakeConn: WebSocket = instance(fakeWebSocket);
76+
const fakeConn: WebSocket.WebSocket = instance(fakeWebSocket);
7777
when(fakeWebSocketInterface.connect(`${path}?${args}`, null, anyFunction())).thenResolve(
7878
fakeConn,
7979
);

src/portforward.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export class PortForward {
2424
err: stream.Writable | null,
2525
input: stream.Readable,
2626
retryCount: number = 0,
27-
): Promise<WebSocket | (() => WebSocket | null)> {
27+
): Promise<WebSocket.WebSocket | (() => WebSocket.WebSocket | null)> {
2828
if (targetPorts.length === 0) {
2929
throw new Error('You must provide at least one port to forward to.');
3030
}
@@ -41,7 +41,7 @@ export class PortForward {
4141
needsToReadPortNumber[index * 2 + 1] = true;
4242
});
4343
const path = `/api/v1/namespaces/${namespace}/pods/${podName}/portforward?${queryStr}`;
44-
const createWebSocket = (): Promise<WebSocket> => {
44+
const createWebSocket = (): Promise<WebSocket.WebSocket> => {
4545
return this.handler.connect(path, null, (streamNum: number, buff: Buffer | string): boolean => {
4646
if (streamNum >= targetPorts.length * 2) {
4747
return !this.disconnectOnErr;

src/web-socket-handler.ts

+11-11
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export interface WebSocketInterface {
1111
path: string,
1212
textHandler: ((text: string) => boolean) | null,
1313
binaryHandler: ((stream: number, buff: Buffer) => boolean) | null,
14-
): Promise<WebSocket>;
14+
): Promise<WebSocket.WebSocket>;
1515
}
1616

1717
export class WebSocketHandler implements WebSocketInterface {
@@ -50,7 +50,7 @@ export class WebSocketHandler implements WebSocketInterface {
5050
}
5151

5252
public static handleStandardInput(
53-
ws: WebSocket,
53+
ws: WebSocket.WebSocket,
5454
stdin: stream.Readable | any,
5555
streamNum: number = 0,
5656
): boolean {
@@ -74,11 +74,11 @@ export class WebSocketHandler implements WebSocketInterface {
7474

7575
public static async processData(
7676
data: string | Buffer,
77-
ws: WebSocket | null,
78-
createWS: () => Promise<WebSocket>,
77+
ws: WebSocket.WebSocket | null,
78+
createWS: () => Promise<WebSocket.WebSocket>,
7979
streamNum: number = 0,
8080
retryCount: number = 3,
81-
): Promise<WebSocket | null> {
81+
): Promise<WebSocket.WebSocket | null> {
8282
const buff = Buffer.alloc(data.length + 1);
8383

8484
buff.writeInt8(streamNum, 0);
@@ -108,17 +108,17 @@ export class WebSocketHandler implements WebSocketInterface {
108108
}
109109

110110
public static restartableHandleStandardInput(
111-
createWS: () => Promise<WebSocket>,
111+
createWS: () => Promise<WebSocket.WebSocket>,
112112
stdin: stream.Readable | any,
113113
streamNum: number = 0,
114114
retryCount: number = 3,
115-
): () => WebSocket | null {
115+
): () => WebSocket.WebSocket | null {
116116
if (retryCount < 0) {
117117
throw new Error("retryCount can't be lower than 0.");
118118
}
119119

120120
let queue: Promise<void> = Promise.resolve();
121-
let ws: WebSocket | null = null;
121+
let ws: WebSocket.WebSocket | null = null;
122122

123123
stdin.on('data', (data) => {
124124
queue = queue.then(async () => {
@@ -138,7 +138,7 @@ export class WebSocketHandler implements WebSocketInterface {
138138
// factory is really just for test injection
139139
public constructor(
140140
readonly config: KubeConfig,
141-
readonly socketFactory?: (uri: string, opts: WebSocket.ClientOptions) => WebSocket,
141+
readonly socketFactory?: (uri: string, opts: WebSocket.ClientOptions) => WebSocket.WebSocket,
142142
) {}
143143

144144
/**
@@ -153,7 +153,7 @@ export class WebSocketHandler implements WebSocketInterface {
153153
path: string,
154154
textHandler: ((text: string) => boolean) | null,
155155
binaryHandler: ((stream: number, buff: Buffer) => boolean) | null,
156-
): Promise<WebSocket> {
156+
): Promise<WebSocket.WebSocket> {
157157
const cluster = this.config.getCurrentCluster();
158158
if (!cluster) {
159159
throw new Error('No cluster is defined.');
@@ -168,7 +168,7 @@ export class WebSocketHandler implements WebSocketInterface {
168168

169169
await this.config.applyToHTTPSOptions(opts);
170170

171-
return await new Promise<WebSocket>((resolve, reject) => {
171+
return await new Promise<WebSocket.WebSocket>((resolve, reject) => {
172172
const client = this.socketFactory
173173
? this.socketFactory(uri, opts)
174174
: new WebSocket(uri, protocols, opts);

src/web-socket-handler_test.ts

+28-19
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,16 @@ describe('WebSocket', () => {
114114
} as User,
115115
];
116116

117-
const mockWs = {} as WebSocket;
117+
const mockWs = {} as WebSocket.WebSocket;
118118
let uriOut = '';
119119

120-
const handler = new WebSocketHandler(kc, (uri: string, opts: WebSocket.ClientOptions): WebSocket => {
121-
uriOut = uri;
122-
return mockWs as WebSocket;
123-
});
120+
const handler = new WebSocketHandler(
121+
kc,
122+
(uri: string, opts: WebSocket.ClientOptions): WebSocket.WebSocket => {
123+
uriOut = uri;
124+
return mockWs as WebSocket.WebSocket;
125+
},
126+
);
124127
const path = '/some/path';
125128

126129
const promise = handler.connect(path, null, null);
@@ -162,13 +165,16 @@ describe('WebSocket', () => {
162165
} as User,
163166
];
164167

165-
const mockWs = {} as WebSocket;
168+
const mockWs = {} as WebSocket.WebSocket;
166169
let uriOut = '';
167170

168-
const handler = new WebSocketHandler(kc, (uri: string, opts: WebSocket.ClientOptions): WebSocket => {
169-
uriOut = uri;
170-
return mockWs as WebSocket;
171-
});
171+
const handler = new WebSocketHandler(
172+
kc,
173+
(uri: string, opts: WebSocket.ClientOptions): WebSocket.WebSocket => {
174+
uriOut = uri;
175+
return mockWs as WebSocket.WebSocket;
176+
},
177+
);
172178
const path = '/some/path';
173179

174180
const promise = handler.connect(path, null, null);
@@ -228,13 +234,16 @@ describe('WebSocket', () => {
228234
close: () => {
229235
closeCount++;
230236
},
231-
} as WebSocket;
237+
} as WebSocket.WebSocket;
232238
let uriOut = '';
233239

234-
const handler = new WebSocketHandler(kc, (uri: string, opts: WebSocket.ClientOptions): WebSocket => {
235-
uriOut = uri;
236-
return mockWs as WebSocket;
237-
});
240+
const handler = new WebSocketHandler(
241+
kc,
242+
(uri: string, opts: WebSocket.ClientOptions): WebSocket.WebSocket => {
243+
uriOut = uri;
244+
return mockWs as WebSocket.WebSocket;
245+
},
246+
);
238247
const path = '/some/path';
239248

240249
let textReceived = '';
@@ -296,7 +305,7 @@ describe('WebSocket', () => {
296305

297306
describe('Restartable Handle Standard Input', () => {
298307
it('should throw on negative retry', () => {
299-
const p = new Promise<WebSocket>(() => {});
308+
const p = new Promise<WebSocket.WebSocket>(() => {});
300309
expect(() => WebSocketHandler.restartableHandleStandardInput(() => p, null, 0, -1)).to.throw(
301310
"retryCount can't be lower than 0.",
302311
);
@@ -311,10 +320,10 @@ describe('Restartable Handle Standard Input', () => {
311320
WebSocketHandler.processData(
312321
'some test data',
313322
null,
314-
(): Promise<WebSocket> => {
315-
return new Promise<WebSocket>((resolve) => {
323+
(): Promise<WebSocket.WebSocket> => {
324+
return new Promise<WebSocket.WebSocket>((resolve) => {
316325
count++;
317-
resolve(ws as WebSocket);
326+
resolve(ws as WebSocket.WebSocket);
318327
});
319328
},
320329
0,

0 commit comments

Comments
 (0)