@@ -294,6 +294,73 @@ func TestProvisionerDaemon_ProvisionerKey(t *testing.T) {
294
294
require .Equal (t , proto .CurrentVersion .String (), daemons [0 ].APIVersion )
295
295
})
296
296
297
+ t .Run ("OKWithTags" , func (t * testing.T ) {
298
+ t .Parallel ()
299
+
300
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
301
+ defer cancel ()
302
+ client , user := coderdenttest .New (t , & coderdenttest.Options {
303
+ ProvisionerDaemonPSK : "provisionersftw" ,
304
+ LicenseOptions : & coderdenttest.LicenseOptions {
305
+ Features : license.Features {
306
+ codersdk .FeatureExternalProvisionerDaemons : 1 ,
307
+ codersdk .FeatureMultipleOrganizations : 1 ,
308
+ },
309
+ },
310
+ })
311
+ //nolint:gocritic // ignore This client is operating as the owner user, which has unrestricted permissions
312
+ res , err := client .CreateProvisionerKey (ctx , user .OrganizationID , codersdk.CreateProvisionerKeyRequest {
313
+ Name : "dont-TEST-me" ,
314
+ Tags : map [string ]string {
315
+ "tag1" : "value1" ,
316
+ "tag2" : "value2" ,
317
+ },
318
+ })
319
+ require .NoError (t , err )
320
+ inv , conf := newCLI (t , "provisionerd" , "start" , "--key" , res .Key , "--name=matt-daemon" )
321
+ err = conf .URL ().Write (client .URL .String ())
322
+ require .NoError (t , err )
323
+ pty := ptytest .New (t ).Attach (inv )
324
+ clitest .Start (t , inv )
325
+ pty .ExpectNoMatchBefore (ctx , "check entitlement" , "starting provisioner daemon" )
326
+ pty .ExpectMatchContext (ctx , `tags={"tag1":"value1","tag2":"value2"}` )
327
+
328
+ var daemons []codersdk.ProvisionerDaemon
329
+ require .Eventually (t , func () bool {
330
+ daemons , err = client .OrganizationProvisionerDaemons (ctx , user .OrganizationID , nil )
331
+ if err != nil {
332
+ return false
333
+ }
334
+ return len (daemons ) == 1
335
+ }, testutil .WaitShort , testutil .IntervalSlow )
336
+ require .Equal (t , "matt-daemon" , daemons [0 ].Name )
337
+ require .Equal (t , provisionersdk .ScopeOrganization , daemons [0 ].Tags [provisionersdk .TagScope ])
338
+ require .Equal (t , buildinfo .Version (), daemons [0 ].Version )
339
+ require .Equal (t , proto .CurrentVersion .String (), daemons [0 ].APIVersion )
340
+ })
341
+
342
+ t .Run ("NoProvisionerKeyFound" , func (t * testing.T ) {
343
+ t .Parallel ()
344
+
345
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
346
+ defer cancel ()
347
+ client , _ := coderdenttest .New (t , & coderdenttest.Options {
348
+ ProvisionerDaemonPSK : "provisionersftw" ,
349
+ LicenseOptions : & coderdenttest.LicenseOptions {
350
+ Features : license.Features {
351
+ codersdk .FeatureExternalProvisionerDaemons : 1 ,
352
+ codersdk .FeatureMultipleOrganizations : 1 ,
353
+ },
354
+ },
355
+ })
356
+
357
+ inv , conf := newCLI (t , "provisionerd" , "start" , "--key" , "ThisKeyDoesNotExist" , "--name=matt-daemon" )
358
+ err := conf .URL ().Write (client .URL .String ())
359
+ require .NoError (t , err )
360
+ err = inv .WithContext (ctx ).Run ()
361
+ require .ErrorContains (t , err , "unable to get provisioner key details" )
362
+ })
363
+
297
364
t .Run ("NoPSK" , func (t * testing.T ) {
298
365
t .Parallel ()
299
366
0 commit comments