@@ -307,6 +307,109 @@ func TestProvisionerDaemon_ProvisionerKey(t *testing.T) {
307
307
t .Run ("OK" , func (t * testing.T ) {
308
308
t .Parallel ()
309
309
310
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
311
+ defer cancel ()
312
+ dv := coderdtest .DeploymentValues (t )
313
+ dv .Experiments .Append (string (codersdk .ExperimentMultiOrganization ))
314
+ client , user := coderdenttest .New (t , & coderdenttest.Options {
315
+ ProvisionerDaemonPSK : "provisionersftw" ,
316
+ LicenseOptions : & coderdenttest.LicenseOptions {
317
+ Features : license.Features {
318
+ codersdk .FeatureExternalProvisionerDaemons : 1 ,
319
+ codersdk .FeatureMultipleOrganizations : 1 ,
320
+ },
321
+ },
322
+ Options : & coderdtest.Options {
323
+ DeploymentValues : dv ,
324
+ },
325
+ })
326
+ // nolint:gocritic // test
327
+ res , err := client .CreateProvisionerKey (ctx , user .OrganizationID , codersdk.CreateProvisionerKeyRequest {
328
+ Name : "dont-TEST-me" ,
329
+ })
330
+ require .NoError (t , err )
331
+ inv , conf := newCLI (t , "provisionerd" , "start" , "--key" , res .Key , "--name=matt-daemon" )
332
+ err = conf .URL ().Write (client .URL .String ())
333
+ require .NoError (t , err )
334
+ pty := ptytest .New (t ).Attach (inv )
335
+ clitest .Start (t , inv )
336
+ pty .ExpectNoMatchBefore (ctx , "check entitlement" , "starting provisioner daemon" )
337
+ pty .ExpectMatchContext (ctx , "matt-daemon" )
338
+
339
+ var daemons []codersdk.ProvisionerDaemon
340
+ require .Eventually (t , func () bool {
341
+ daemons , err = client .ProvisionerDaemons (ctx )
342
+ if err != nil {
343
+ return false
344
+ }
345
+ return len (daemons ) == 1
346
+ }, testutil .WaitShort , testutil .IntervalSlow )
347
+ require .Equal (t , "matt-daemon" , daemons [0 ].Name )
348
+ require .Equal (t , provisionersdk .ScopeOrganization , daemons [0 ].Tags [provisionersdk .TagScope ])
349
+ require .Equal (t , buildinfo .Version (), daemons [0 ].Version )
350
+ require .Equal (t , proto .CurrentVersion .String (), daemons [0 ].APIVersion )
351
+ })
352
+
353
+ t .Run ("NoPSK" , func (t * testing.T ) {
354
+ t .Parallel ()
355
+
356
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
357
+ defer cancel ()
358
+ dv := coderdtest .DeploymentValues (t )
359
+ dv .Experiments .Append (string (codersdk .ExperimentMultiOrganization ))
360
+ client , user := coderdenttest .New (t , & coderdenttest.Options {
361
+ ProvisionerDaemonPSK : "provisionersftw" ,
362
+ LicenseOptions : & coderdenttest.LicenseOptions {
363
+ Features : license.Features {
364
+ codersdk .FeatureExternalProvisionerDaemons : 1 ,
365
+ codersdk .FeatureMultipleOrganizations : 1 ,
366
+ },
367
+ },
368
+ Options : & coderdtest.Options {
369
+ DeploymentValues : dv ,
370
+ },
371
+ })
372
+ // nolint:gocritic // test
373
+ res , err := client .CreateProvisionerKey (ctx , user .OrganizationID , codersdk.CreateProvisionerKeyRequest {
374
+ Name : "dont-TEST-me" ,
375
+ })
376
+ require .NoError (t , err )
377
+ inv , conf := newCLI (t , "provisionerd" , "start" , "--psk" , "provisionersftw" , "--key" , res .Key , "--name=matt-daemon" )
378
+ err = conf .URL ().Write (client .URL .String ())
379
+ require .NoError (t , err )
380
+ err = inv .WithContext (ctx ).Run ()
381
+ require .ErrorContains (t , err , "cannot provide both provisioner key --key and pre-shared key --psk" )
382
+ })
383
+
384
+ t .Run ("NoTags" , func (t * testing.T ) {
385
+ t .Parallel ()
386
+
387
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
388
+ defer cancel ()
389
+ dv := coderdtest .DeploymentValues (t )
390
+ dv .Experiments .Append (string (codersdk .ExperimentMultiOrganization ))
391
+ client , user := coderdenttest .New (t , & coderdenttest.Options {
392
+ ProvisionerDaemonPSK : "provisionersftw" ,
393
+ LicenseOptions : & coderdenttest.LicenseOptions {
394
+ Features : license.Features {
395
+ codersdk .FeatureExternalProvisionerDaemons : 1 ,
396
+ codersdk .FeatureMultipleOrganizations : 1 ,
397
+ },
398
+ },
399
+ Options : & coderdtest.Options {
400
+ DeploymentValues : dv ,
401
+ },
402
+ })
403
+ // nolint:gocritic // test
404
+ res , err := client .CreateProvisionerKey (ctx , user .OrganizationID , codersdk.CreateProvisionerKeyRequest {
405
+ Name : "dont-TEST-me" ,
406
+ })
407
+ require .NoError (t , err )
408
+ inv , conf := newCLI (t , "provisionerd" , "start" , "--tag" , "mykey=yourvalue" , "--key" , res .Key , "--name=matt-daemon" )
409
+ err = conf .URL ().Write (client .URL .String ())
410
+ require .NoError (t , err )
411
+ err = inv .WithContext (ctx ).Run ()
412
+ require .ErrorContains (t , err , "cannot provide tags when using provisioner key" )
310
413
})
311
414
}
312
415
0 commit comments