Skip to content

Commit dbe3ceb

Browse files
committed
chore: fix regression when handling URI
with a different URL from the one that is already opened.
1 parent ddc23d0 commit dbe3ceb

3 files changed

Lines changed: 49 additions & 2 deletions

File tree

src/main/kotlin/com/coder/toolbox/CoderRemoteProvider.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ class CoderRemoteProvider(
386386
onTokenRefreshed = ::onTokenRefreshed,
387387
)
388388
router.navigate(wizard)
389-
context.envPageManager.showPluginEnvironmentsPage()
389+
context.popupPluginMainPage()
390390
}
391391
} catch (ex: Exception) {
392392
val textError = if (ex is APIResponseException) {
@@ -524,7 +524,13 @@ class CoderRemoteProvider(
524524
* list.
525525
*/
526526
override fun getOverrideUiPage(): UiPage? {
527+
// Show the setup wizard if one is already scheduled.
528+
router.activeWizard?.let { return it }
529+
530+
// Let the default workspace UI render if the HTTP client is initialized.
527531
if (client != null) return null
532+
533+
// Otherwise, schedule our own setup wizard.
528534
return router.getOrCreate { buildSetupWizard() }
529535
}
530536

src/main/kotlin/com/coder/toolbox/views/state/PageRouter.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class PageRouter {
4444
}
4545

4646
fun clear() {
47+
activeWizard?.dispose()
4748
route.value = PageRoute.None
4849
}
4950
}

src/test/kotlin/com/coder/toolbox/CoderRemoteProviderTest.kt

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,23 @@ import com.coder.toolbox.sdk.v2.models.WorkspaceAgentStatus
99
import com.coder.toolbox.sdk.v2.models.WorkspaceBuild
1010
import com.coder.toolbox.sdk.v2.models.WorkspaceResource
1111
import com.coder.toolbox.sdk.v2.models.WorkspaceStatus
12+
import com.coder.toolbox.views.CoderSetupWizardPage
1213
import io.mockk.clearAllMocks
1314
import io.mockk.coEvery
1415
import io.mockk.coVerify
1516
import io.mockk.every
1617
import io.mockk.mockk
18+
import io.mockk.verify
1719
import kotlinx.coroutines.test.runTest
1820
import org.junit.jupiter.api.Assertions.assertTrue
21+
import java.net.URI
1922
import java.util.UUID
2023
import kotlin.test.AfterTest
2124
import kotlin.test.BeforeTest
2225
import kotlin.test.Test
2326
import kotlin.test.assertEquals
27+
import kotlin.test.assertNotNull
28+
import kotlin.test.assertNull
2429
import kotlin.test.assertSame
2530

2631
class 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

Comments
 (0)