@@ -191,6 +191,48 @@ func TestLicensesListReal(t *testing.T) {
191
191
})
192
192
}
193
193
194
+ func TestLicensesDeleteFake (t * testing.T ) {
195
+ t .Parallel ()
196
+ // We can't check a real license into the git repo, and can't patch out the keys from here,
197
+ // so instead we have to fake the HTTP interaction.
198
+ t .Run ("Mainline" , func (t * testing.T ) {
199
+ t .Parallel ()
200
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
201
+ defer cancel ()
202
+ cmd := setupFakeLicenseServerTest (t , "licenses" , "delete" , "55" )
203
+ pty := attachPty (t , cmd )
204
+ errC := make (chan error )
205
+ go func () {
206
+ errC <- cmd .ExecuteContext (ctx )
207
+ }()
208
+ require .NoError (t , <- errC )
209
+ pty .ExpectMatch ("License with ID 55 deleted" )
210
+ })
211
+ }
212
+
213
+ func TestLicensesDeleteReal (t * testing.T ) {
214
+ t .Parallel ()
215
+ t .Run ("Empty" , func (t * testing.T ) {
216
+ t .Parallel ()
217
+ client := coderdtest .New (t , & coderdtest.Options {APIBuilder : coderd .NewEnterprise })
218
+ coderdtest .CreateFirstUser (t , client )
219
+ cmd , root := clitest .NewWithSubcommands (t , cli .EnterpriseSubcommands (),
220
+ "licenses" , "delete" , "1" )
221
+ clitest .SetupConfig (t , client , root )
222
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
223
+ defer cancel ()
224
+ errC := make (chan error )
225
+ go func () {
226
+ errC <- cmd .ExecuteContext (ctx )
227
+ }()
228
+ err := <- errC
229
+ var coderError * codersdk.Error
230
+ require .True (t , xerrors .As (err , & coderError ))
231
+ assert .Equal (t , 404 , coderError .StatusCode ())
232
+ assert .Contains (t , "Unknown license ID" , coderError .Message )
233
+ })
234
+ }
235
+
194
236
func setupFakeLicenseServerTest (t * testing.T , args ... string ) * cobra.Command {
195
237
t .Helper ()
196
238
s := httptest .NewServer (newFakeLicenseAPI (t ))
@@ -217,6 +259,7 @@ func newFakeLicenseAPI(t *testing.T) http.Handler {
217
259
r .Post ("/api/v2/licenses" , a .postLicense )
218
260
r .Get ("/api/v2/licenses" , a .licenses )
219
261
r .Get ("/api/v2/buildinfo" , a .noop )
262
+ r .Delete ("/api/v2/licenses/{id}" , a .deleteLicense )
220
263
return r
221
264
}
222
265
@@ -282,3 +325,8 @@ func (s *fakeLicenseAPI) licenses(rw http.ResponseWriter, _ *http.Request) {
282
325
err := json .NewEncoder (rw ).Encode (resp )
283
326
assert .NoError (s .t , err )
284
327
}
328
+
329
+ func (s * fakeLicenseAPI ) deleteLicense (rw http.ResponseWriter , r * http.Request ) {
330
+ assert .Equal (s .t , "55" , chi .URLParam (r , "id" ))
331
+ rw .WriteHeader (200 )
332
+ }
0 commit comments