@@ -15,7 +15,7 @@ struct WorkspaceAppTests {
1515 func testCreateWorkspaceApp_Success( ) throws {
1616 let sdkApp = CoderSDK . WorkspaceApp (
1717 id: UUID ( ) ,
18- url: URL ( string: " https ://localhost:3000/app " ) !,
18+ url: URL ( string: " vscode ://myworkspace.coder/foo " ) !,
1919 external: true ,
2020 slug: " test-app " ,
2121 display_name: " Test App " ,
@@ -28,21 +28,20 @@ struct WorkspaceAppTests {
2828 let workspaceApp = try WorkspaceApp (
2929 sdkApp,
3030 iconBaseURL: baseAccessURL,
31- sessionToken: sessionToken,
32- newAppHost: host
31+ sessionToken: sessionToken
3332 )
3433
3534 #expect( workspaceApp. slug == " test-app " )
3635 #expect( workspaceApp. displayName == " Test App " )
37- #expect( workspaceApp. url. absoluteString == " https ://test-workspace .coder.test:3000/app " )
36+ #expect( workspaceApp. url. absoluteString == " vscode ://myworkspace .coder/foo " )
3837 #expect( workspaceApp. icon? . absoluteString == " https://coder.example.com/icon/test-app.svg " )
3938 }
4039
4140 @Test
4241 func testCreateWorkspaceApp_SessionTokenReplacement( ) throws {
4342 let sdkApp = CoderSDK . WorkspaceApp (
4443 id: UUID ( ) ,
45- url: URL ( string: " https ://localhost:3000/app ?token=$SESSION_TOKEN" ) !,
44+ url: URL ( string: " vscode ://myworkspace.coder/foo ?token=$SESSION_TOKEN" ) !,
4645 external: true ,
4746 slug: " token-app " ,
4847 display_name: " Token App " ,
@@ -55,12 +54,11 @@ struct WorkspaceAppTests {
5554 let workspaceApp = try WorkspaceApp (
5655 sdkApp,
5756 iconBaseURL: baseAccessURL,
58- sessionToken: sessionToken,
59- newAppHost: host
57+ sessionToken: sessionToken
6058 )
6159
6260 #expect(
63- workspaceApp. url. absoluteString == " https ://test-workspace .coder.test:3000/app ?token=test-session-token"
61+ workspaceApp. url. absoluteString == " vscode ://myworkspace .coder/foo ?token=test-session-token"
6462 )
6563 }
6664
@@ -82,8 +80,7 @@ struct WorkspaceAppTests {
8280 try WorkspaceApp (
8381 sdkApp,
8482 iconBaseURL: baseAccessURL,
85- sessionToken: sessionToken,
86- newAppHost: host
83+ sessionToken: sessionToken
8784 )
8885 }
8986 }
@@ -92,7 +89,7 @@ struct WorkspaceAppTests {
9289 func testCreateWorkspaceApp_CommandApp( ) throws {
9390 let sdkApp = CoderSDK . WorkspaceApp (
9491 id: UUID ( ) ,
95- url: URL ( string: " https ://localhost:3000/app " ) !,
92+ url: URL ( string: " vscode ://myworkspace.coder/foo " ) !,
9693 external: true ,
9794 slug: " command-app " ,
9895 display_name: " Command App " ,
@@ -106,8 +103,7 @@ struct WorkspaceAppTests {
106103 try WorkspaceApp (
107104 sdkApp,
108105 iconBaseURL: baseAccessURL,
109- sessionToken: sessionToken,
110- newAppHost: host
106+ sessionToken: sessionToken
111107 )
112108 }
113109 }
@@ -149,36 +145,59 @@ struct WorkspaceAppTests {
149145 )
150146 }
151147
148+ @Test
149+ func testCreateWorkspaceApp_WebAppFilter( ) throws {
150+ let sdkApp = CoderSDK . WorkspaceApp (
151+ id: UUID ( ) ,
152+ url: URL ( string: " https://myworkspace.coder/foo " ) !,
153+ external: false ,
154+ slug: " web-app " ,
155+ display_name: " Web App " ,
156+ command: nil ,
157+ icon: URL ( string: " /icon/web-app.svg " ) !,
158+ subdomain: false ,
159+ subdomain_name: nil
160+ )
161+
162+ #expect( throws: WorkspaceAppError . isWebApp) {
163+ try WorkspaceApp (
164+ sdkApp,
165+ iconBaseURL: baseAccessURL,
166+ sessionToken: sessionToken
167+ )
168+ }
169+ }
170+
152171 @Test
153172 func testAgentToApps_MultipleApps( ) throws {
154173 let sdkApp1 = CoderSDK . WorkspaceApp (
155174 id: UUID ( ) ,
156- url: URL ( string: " https ://localhost:3000/app1 " ) !,
175+ url: URL ( string: " vscode ://myworkspace.coder/foo1 " ) !,
157176 external: true ,
158177 slug: " app1 " ,
159178 display_name: " App 1 " ,
160179 command: nil ,
161- icon: URL ( string: " /icon/app1 .svg " ) !,
180+ icon: URL ( string: " /icon/foo1 .svg " ) !,
162181 subdomain: false ,
163182 subdomain_name: nil
164183 )
165184
166185 let sdkApp2 = CoderSDK . WorkspaceApp (
167186 id: UUID ( ) ,
168- url: URL ( string: " https ://localhost:3000/app2 " ) !,
187+ url: URL ( string: " jetbrains ://myworkspace.coder/foo2 " ) !,
169188 external: true ,
170189 slug: " app2 " ,
171190 display_name: " App 2 " ,
172191 command: nil ,
173- icon: URL ( string: " /icon/app2 .svg " ) !,
192+ icon: URL ( string: " /icon/foo2 .svg " ) !,
174193 subdomain: false ,
175194 subdomain_name: nil
176195 )
177196
178197 // Command app; skipped
179198 let sdkApp3 = CoderSDK . WorkspaceApp (
180199 id: UUID ( ) ,
181- url: URL ( string: " https ://localhost:3000/app3 " ) !,
200+ url: URL ( string: " vscode ://myworkspace.coder/foo3 " ) !,
182201 external: true ,
183202 slug: " app3 " ,
184203 display_name: " App 3 " ,
@@ -191,12 +210,12 @@ struct WorkspaceAppTests {
191210 // Web app skipped
192211 let sdkApp4 = CoderSDK . WorkspaceApp (
193212 id: UUID ( ) ,
194- url: URL ( string: " https://localhost:3000/app4 " ) !,
195- external: false ,
213+ url: URL ( string: " https://myworkspace.coder/foo4 " ) !,
214+ external: true ,
196215 slug: " app4 " ,
197216 display_name: " App 4 " ,
198217 command: nil ,
199- icon: URL ( string: " /icon/app4 .svg " ) !,
218+ icon: URL ( string: " /icon/foo4 .svg " ) !,
200219 subdomain: false , subdomain_name: nil
201220 )
202221
0 commit comments