@@ -15,7 +15,7 @@ struct WorkspaceAppTests {
15
15
func testCreateWorkspaceApp_Success( ) throws {
16
16
let sdkApp = CoderSDK . WorkspaceApp (
17
17
id: UUID ( ) ,
18
- url: URL ( string: " https ://localhost:3000/app " ) !,
18
+ url: URL ( string: " vscode ://myworkspace.coder/foo " ) !,
19
19
external: true ,
20
20
slug: " test-app " ,
21
21
display_name: " Test App " ,
@@ -28,21 +28,20 @@ struct WorkspaceAppTests {
28
28
let workspaceApp = try WorkspaceApp (
29
29
sdkApp,
30
30
iconBaseURL: baseAccessURL,
31
- sessionToken: sessionToken,
32
- newAppHost: host
31
+ sessionToken: sessionToken
33
32
)
34
33
35
34
#expect( workspaceApp. slug == " test-app " )
36
35
#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 " )
38
37
#expect( workspaceApp. icon? . absoluteString == " https://coder.example.com/icon/test-app.svg " )
39
38
}
40
39
41
40
@Test
42
41
func testCreateWorkspaceApp_SessionTokenReplacement( ) throws {
43
42
let sdkApp = CoderSDK . WorkspaceApp (
44
43
id: UUID ( ) ,
45
- url: URL ( string: " https ://localhost:3000/app ?token=$SESSION_TOKEN" ) !,
44
+ url: URL ( string: " vscode ://myworkspace.coder/foo ?token=$SESSION_TOKEN" ) !,
46
45
external: true ,
47
46
slug: " token-app " ,
48
47
display_name: " Token App " ,
@@ -55,12 +54,11 @@ struct WorkspaceAppTests {
55
54
let workspaceApp = try WorkspaceApp (
56
55
sdkApp,
57
56
iconBaseURL: baseAccessURL,
58
- sessionToken: sessionToken,
59
- newAppHost: host
57
+ sessionToken: sessionToken
60
58
)
61
59
62
60
#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"
64
62
)
65
63
}
66
64
@@ -82,8 +80,7 @@ struct WorkspaceAppTests {
82
80
try WorkspaceApp (
83
81
sdkApp,
84
82
iconBaseURL: baseAccessURL,
85
- sessionToken: sessionToken,
86
- newAppHost: host
83
+ sessionToken: sessionToken
87
84
)
88
85
}
89
86
}
@@ -92,7 +89,7 @@ struct WorkspaceAppTests {
92
89
func testCreateWorkspaceApp_CommandApp( ) throws {
93
90
let sdkApp = CoderSDK . WorkspaceApp (
94
91
id: UUID ( ) ,
95
- url: URL ( string: " https ://localhost:3000/app " ) !,
92
+ url: URL ( string: " vscode ://myworkspace.coder/foo " ) !,
96
93
external: true ,
97
94
slug: " command-app " ,
98
95
display_name: " Command App " ,
@@ -106,8 +103,7 @@ struct WorkspaceAppTests {
106
103
try WorkspaceApp (
107
104
sdkApp,
108
105
iconBaseURL: baseAccessURL,
109
- sessionToken: sessionToken,
110
- newAppHost: host
106
+ sessionToken: sessionToken
111
107
)
112
108
}
113
109
}
@@ -149,36 +145,59 @@ struct WorkspaceAppTests {
149
145
)
150
146
}
151
147
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
+
152
171
@Test
153
172
func testAgentToApps_MultipleApps( ) throws {
154
173
let sdkApp1 = CoderSDK . WorkspaceApp (
155
174
id: UUID ( ) ,
156
- url: URL ( string: " https ://localhost:3000/app1 " ) !,
175
+ url: URL ( string: " vscode ://myworkspace.coder/foo1 " ) !,
157
176
external: true ,
158
177
slug: " app1 " ,
159
178
display_name: " App 1 " ,
160
179
command: nil ,
161
- icon: URL ( string: " /icon/app1 .svg " ) !,
180
+ icon: URL ( string: " /icon/foo1 .svg " ) !,
162
181
subdomain: false ,
163
182
subdomain_name: nil
164
183
)
165
184
166
185
let sdkApp2 = CoderSDK . WorkspaceApp (
167
186
id: UUID ( ) ,
168
- url: URL ( string: " https ://localhost:3000/app2 " ) !,
187
+ url: URL ( string: " jetbrains ://myworkspace.coder/foo2 " ) !,
169
188
external: true ,
170
189
slug: " app2 " ,
171
190
display_name: " App 2 " ,
172
191
command: nil ,
173
- icon: URL ( string: " /icon/app2 .svg " ) !,
192
+ icon: URL ( string: " /icon/foo2 .svg " ) !,
174
193
subdomain: false ,
175
194
subdomain_name: nil
176
195
)
177
196
178
197
// Command app; skipped
179
198
let sdkApp3 = CoderSDK . WorkspaceApp (
180
199
id: UUID ( ) ,
181
- url: URL ( string: " https ://localhost:3000/app3 " ) !,
200
+ url: URL ( string: " vscode ://myworkspace.coder/foo3 " ) !,
182
201
external: true ,
183
202
slug: " app3 " ,
184
203
display_name: " App 3 " ,
@@ -191,12 +210,12 @@ struct WorkspaceAppTests {
191
210
// Web app skipped
192
211
let sdkApp4 = CoderSDK . WorkspaceApp (
193
212
id: UUID ( ) ,
194
- url: URL ( string: " https://localhost:3000/app4 " ) !,
195
- external: false ,
213
+ url: URL ( string: " https://myworkspace.coder/foo4 " ) !,
214
+ external: true ,
196
215
slug: " app4 " ,
197
216
display_name: " App 4 " ,
198
217
command: nil ,
199
- icon: URL ( string: " /icon/app4 .svg " ) !,
218
+ icon: URL ( string: " /icon/foo4 .svg " ) !,
200
219
subdomain: false , subdomain_name: nil
201
220
)
202
221
0 commit comments