@@ -9,18 +9,23 @@ import com.coder.toolbox.sdk.v2.models.WorkspaceAgentStatus
99import com.coder.toolbox.sdk.v2.models.WorkspaceBuild
1010import com.coder.toolbox.sdk.v2.models.WorkspaceResource
1111import com.coder.toolbox.sdk.v2.models.WorkspaceStatus
12+ import com.coder.toolbox.views.CoderSetupWizardPage
1213import io.mockk.clearAllMocks
1314import io.mockk.coEvery
1415import io.mockk.coVerify
1516import io.mockk.every
1617import io.mockk.mockk
18+ import io.mockk.verify
1719import kotlinx.coroutines.test.runTest
1820import org.junit.jupiter.api.Assertions.assertTrue
21+ import java.net.URI
1922import java.util.UUID
2023import kotlin.test.AfterTest
2124import kotlin.test.BeforeTest
2225import kotlin.test.Test
2326import kotlin.test.assertEquals
27+ import kotlin.test.assertNotNull
28+ import kotlin.test.assertNull
2429import kotlin.test.assertSame
2530
2631class CoderRemoteProviderTest {
@@ -227,6 +232,30 @@ class CoderRemoteProviderTest {
227232 coVerify(exactly = 1 ) { existingEnv.update(workspace, agent) }
228233 }
229234
235+ @Test
236+ fun `given connected client when URI targets different deployment then scheduled wizard overrides client` () =
237+ runTest {
238+ // given
239+ every { mockClient.url } returns URI (" https://old.example.com" ).toURL()
240+ every { mockContext.settingsStore.requiresMTlsAuth } returns false
241+ every { mockContext.settingsStore.requiresTokenAuth } returns true
242+ setPrivateField(remoteProvider, " client" , mockClient)
243+ setPrivateField(remoteProvider, " cli" , mockCli)
244+
245+ assertNull(remoteProvider.getOverrideUiPage())
246+
247+ // when
248+ remoteProvider.handleUri(
249+ URI (" jetbrains://gateway/com.coder.toolbox?url=https%3A%2F%2Fnew.example.com&token=new-token" )
250+ )
251+
252+ // then
253+ val overridePage = remoteProvider.getOverrideUiPage()
254+ assertNotNull(overridePage)
255+ assertTrue(overridePage is CoderSetupWizardPage )
256+ verify { mockContext.popupPluginMainPage() }
257+ }
258+
230259 @Test
231260 fun `given no existing environment then one is created` () = runTest {
232261 // given
@@ -371,4 +400,15 @@ class CoderRemoteProviderTest {
371400 every { this @mockk.outdated } returns false
372401 }
373402 }
374- }
403+
404+ private fun setPrivateField (
405+ target : Any ,
406+ name : String ,
407+ value : Any ,
408+ ) {
409+ target.javaClass.getDeclaredField(name).apply {
410+ isAccessible = true
411+ set(target, value)
412+ }
413+ }
414+ }
0 commit comments