@@ -14,6 +14,7 @@ import {
1414 createMockAxiosInstance ,
1515 createMockConfiguration ,
1616 createMockTreeView ,
17+ createMockUri ,
1718} from "./test-helpers" ;
1819
1920// Setup all mocks
@@ -116,12 +117,33 @@ beforeEach(() => {
116117 vi . clearAllMocks ( ) ;
117118} ) ;
118119
120+ // Test helper functions
121+ const setupVSCodeMocks = async ( ) => {
122+ const vscode = await import ( "vscode" ) ;
123+ return vscode ;
124+ } ;
125+
126+ const createAuthTestContext = ( ) => {
127+ const mockStorage = createMockStorage ( { writeToCoderOutputChannel : vi . fn ( ) } ) ;
128+ const mockMyWorkspacesProvider = createMockWorkspaceProvider ( {
129+ fetchAndRefresh : vi . fn ( ) ,
130+ } ) ;
131+ const mockAllWorkspacesProvider = createMockWorkspaceProvider ( {
132+ fetchAndRefresh : vi . fn ( ) ,
133+ } ) ;
134+ return {
135+ mockStorage,
136+ mockMyWorkspacesProvider,
137+ mockAllWorkspacesProvider,
138+ } ;
139+ } ;
140+
119141describe ( "extension" , ( ) => {
120142 describe ( "setupRemoteSSHExtension" , ( ) => {
121143 it . each ( [
122144 [ "ms-vscode-remote.remote-ssh" , "ms-vscode-remote.remote-ssh" , false ] ,
123145 ] ) ( "should handle %s" , async ( _ , extensionId , shouldShowError ) => {
124- const vscode = await import ( "vscode" ) ;
146+ const vscode = await setupVSCodeMocks ( ) ;
125147 const mockExtension = extensionId
126148 ? createMockRemoteSSHExtension ( { extensionPath : "/path/to/extension" } )
127149 : undefined ;
@@ -150,7 +172,7 @@ describe("extension", () => {
150172
151173 describe ( "initializeInfrastructure" , ( ) => {
152174 it ( "should create storage and logger with verbose setting from config" , async ( ) => {
153- const vscode = await import ( "vscode" ) ;
175+ const vscode = await setupVSCodeMocks ( ) ;
154176 const Storage = ( await import ( "./storage" ) ) . Storage ;
155177 const Logger = ( await import ( "./logger" ) ) . Logger ;
156178
@@ -165,17 +187,13 @@ describe("extension", () => {
165187 } ) ;
166188
167189 // Track Storage and Logger creation
168- // eslint-disable-next-line @typescript-eslint/no-explicit-any
169- let storageInstance : any ;
170- // eslint-disable-next-line @typescript-eslint/no-explicit-any
171- let loggerInstance : any ;
172- // eslint-disable-next-line @typescript-eslint/no-explicit-any
173- vi . mocked ( Storage ) . mockImplementation ( ( ...args : any [ ] ) => {
190+ let storageInstance : unknown ;
191+ let loggerInstance : unknown ;
192+ vi . mocked ( Storage ) . mockImplementation ( ( ...args : unknown [ ] ) => {
174193 storageInstance = { args, setLogger : vi . fn ( ) } ;
175194 return storageInstance as never ;
176195 } ) ;
177- // eslint-disable-next-line @typescript-eslint/no-explicit-any
178- vi . mocked ( Logger ) . mockImplementation ( ( ...args : any [ ] ) => {
196+ vi . mocked ( Logger ) . mockImplementation ( ( ...args : unknown [ ] ) => {
179197 loggerInstance = { args } ;
180198 return loggerInstance as never ;
181199 } ) ;
@@ -316,17 +334,15 @@ describe("extension", () => {
316334 } ) ;
317335
318336 describe ( "registerUriHandler" , ( ) => {
319- // eslint-disable-next-line @typescript-eslint/no-explicit-any
320- let registeredHandler : any ;
337+ let registeredHandler : vscodeActual . UriHandler ;
321338
322339 const setupUriHandler = async ( ) => {
323340 const { needToken } = await import ( "./api" ) ;
324341 const { toSafeHost } = await import ( "./util" ) ;
325- const vscode = await import ( "vscode" ) ;
342+ const vscode = await setupVSCodeMocks ( ) ;
326343
327344 vi . mocked ( vscode . window . registerUriHandler ) . mockImplementation (
328- // eslint-disable-next-line @typescript-eslint/no-explicit-any
329- ( handler : any ) => {
345+ ( handler : vscodeActual . UriHandler ) => {
330346 registeredHandler = handler ;
331347 return { dispose : vi . fn ( ) } ;
332348 } ,
@@ -335,7 +351,8 @@ describe("extension", () => {
335351 return { needToken, toSafeHost } ;
336352 } ;
337353
338- it . each ( [
354+ // Test data for URI handler tests
355+ const uriHandlerTestCases = [
339356 {
340357 name : "/open path with all parameters" ,
341358 path : "/open" ,
@@ -370,7 +387,9 @@ describe("extension", () => {
370387 "/workspace" ,
371388 ] ,
372389 } ,
373- ] ) (
390+ ] ;
391+
392+ it . each ( uriHandlerTestCases ) (
374393 "should handle $name" ,
375394 async ( { path, query, mockUrl, oldUrl, hasToken, expectedCommand } ) => {
376395 const vscode = await import ( "vscode" ) ;
@@ -394,7 +413,7 @@ describe("extension", () => {
394413 mockRestClient as never ,
395414 mockStorage as never ,
396415 ) ;
397- await registeredHandler . handleUri ( { path, query } ) ;
416+ await registeredHandler . handleUri ( createMockUri ( ` ${ path } ? ${ query } ` ) ) ;
398417
399418 expect ( mockCommands . maybeAskUrl ) . toHaveBeenCalledWith ( mockUrl , oldUrl ) ;
400419 expect ( mockRestClient . setHost ) . toHaveBeenCalledWith ( mockUrl ) ;
@@ -429,7 +448,7 @@ describe("extension", () => {
429448 mocks . storage as never ,
430449 ) ;
431450 await expect (
432- registeredHandler . handleUri ( { path : "/unknown" , query : "" } ) ,
451+ registeredHandler . handleUri ( createMockUri ( "/unknown?" ) ) ,
433452 ) . rejects . toThrow ( "Unknown path /unknown" ) ;
434453 } ) ;
435454
@@ -458,7 +477,7 @@ describe("extension", () => {
458477 mocks . storage as never ,
459478 ) ;
460479 await expect (
461- registeredHandler . handleUri ( { path, query } ) ,
480+ registeredHandler . handleUri ( createMockUri ( ` ${ path } ? ${ query } ` ) ) ,
462481 ) . rejects . toThrow ( error ) ;
463482 } ) ;
464483 } ) ;
@@ -571,21 +590,6 @@ describe("extension", () => {
571590 vi . clearAllMocks ( ) ;
572591 } ) ;
573592
574- const createAuthTestSetup = ( ) => {
575- const mockStorage = { writeToCoderOutputChannel : vi . fn ( ) } ;
576- const mockMyWorkspacesProvider = createMockWorkspaceProvider ( {
577- fetchAndRefresh : vi . fn ( ) ,
578- } ) ;
579- const mockAllWorkspacesProvider = createMockWorkspaceProvider ( {
580- fetchAndRefresh : vi . fn ( ) ,
581- } ) ;
582- return {
583- mockStorage,
584- mockMyWorkspacesProvider,
585- mockAllWorkspacesProvider,
586- } ;
587- } ;
588-
589593 it . each ( [
590594 [
591595 "valid member authentication" ,
@@ -600,7 +604,7 @@ describe("extension", () => {
600604 mockStorage,
601605 mockMyWorkspacesProvider,
602606 mockAllWorkspacesProvider,
603- } = createAuthTestSetup ( ) ;
607+ } = createAuthTestContext ( ) ;
604608
605609 const mockRestClient = {
606610 getAxiosInstance : vi
0 commit comments