@@ -18,6 +18,7 @@ const (
18
18
authOpenIDClientSecret = "authOpenIDClientSecret"
19
19
authGitHubClientSecret = "authGitHubClientSecret"
20
20
authGitLabClientSecret = "authGitLabClientSecret"
21
+ authAzureDevOpsClientSecret = "authAzureDevOpsClientSecret"
21
22
emailSMTPPassword = "emailSMTPPassword"
22
23
organizationInvitationsSigningKey = "organizationInvitationsSigningKey"
23
24
githubClientSecret = "githubClientSecret"
@@ -216,16 +217,21 @@ func TestRedactSecrets(t *testing.T) {
216
217
redacted , err := RedactSecrets (
217
218
conftypes.RawUnified {
218
219
Site : getTestSiteWithSecrets (
219
- executorsAccessToken ,
220
- authOpenIDClientSecret , authGitLabClientSecret , authGitHubClientSecret ,
221
- emailSMTPPassword ,
222
- organizationInvitationsSigningKey ,
223
- githubClientSecret ,
224
- dotcomGitHubAppCloudClientSecret ,
225
- dotcomGitHubAppCloudPrivateKey ,
226
- dotcomSrcCliVersionCacheGitHubToken ,
227
- dotcomSrcCliVersionCacheGitHubWebhookSecret ,
228
- authUnlockAccountLinkSigningKey ,
220
+ testSecrets {
221
+ executorsAccessToken : executorsAccessToken ,
222
+ authOpenIDClientSecret : authOpenIDClientSecret ,
223
+ authGitLabClientSecret : authGitLabClientSecret ,
224
+ authGitHubClientSecret : authGitHubClientSecret ,
225
+ authAzureDevOpsClientSecret : authAzureDevOpsClientSecret ,
226
+ emailSMTPPassword : emailSMTPPassword ,
227
+ organizationInvitationsSigningKey : organizationInvitationsSigningKey ,
228
+ githubClientSecret : githubClientSecret ,
229
+ dotcomGitHubAppCloudClientSecret : dotcomGitHubAppCloudClientSecret ,
230
+ dotcomGitHubAppCloudPrivateKey : dotcomGitHubAppCloudPrivateKey ,
231
+ dotcomSrcCliVersionCacheGitHubToken : dotcomSrcCliVersionCacheGitHubToken ,
232
+ dotcomSrcCliVersionCacheGitHubWebhookSecret : dotcomSrcCliVersionCacheGitHubWebhookSecret ,
233
+ authUnlockAccountLinkSigningKey : authUnlockAccountLinkSigningKey ,
234
+ },
229
235
),
230
236
},
231
237
)
@@ -262,26 +268,26 @@ func TestRedactConfSecrets(t *testing.T) {
262
268
263
269
testCases := []struct {
264
270
name string
265
- hasSecrets bool
271
+ hashSecrets bool
266
272
redactedFmtStr string
267
273
}{
268
274
{
269
- name : "hasSecrets true" ,
270
- hasSecrets : true ,
275
+ name : "hashSecrets true" ,
276
+ hashSecrets : true ,
271
277
// This is the first 10 chars of the SHA256 of "strongsecret". See this go playground to
272
278
// verify: https://go.dev/play/p/N-4R4_fO9XI.
273
279
redactedFmtStr : "REDACTED-DATA-CHUNK-f434ecc765" ,
274
280
},
275
281
{
276
- name : "hasSecrets false" ,
277
- hasSecrets : false ,
282
+ name : "hashSecrets false" ,
283
+ hashSecrets : false ,
278
284
redactedFmtStr : "REDACTED" ,
279
285
},
280
286
}
281
287
282
288
for _ , tc := range testCases {
283
289
t .Run (tc .name , func (t * testing.T ) {
284
- redacted , err := redactConfSecrets (conftypes.RawUnified {Site : conf }, tc .hasSecrets )
290
+ redacted , err := redactConfSecrets (conftypes.RawUnified {Site : conf }, tc .hashSecrets )
285
291
require .NoError (t , err )
286
292
287
293
want := fmt .Sprintf (want , tc .redactedFmtStr )
@@ -307,16 +313,21 @@ func TestRedactSecrets_AuthProvidersSectionNotAdded(t *testing.T) {
307
313
308
314
func TestUnredactSecrets (t * testing.T ) {
309
315
previousSite := getTestSiteWithSecrets (
310
- executorsAccessToken ,
311
- authOpenIDClientSecret , authGitLabClientSecret , authGitHubClientSecret ,
312
- emailSMTPPassword ,
313
- organizationInvitationsSigningKey ,
314
- githubClientSecret ,
315
- dotcomGitHubAppCloudClientSecret ,
316
- dotcomGitHubAppCloudPrivateKey ,
317
- dotcomSrcCliVersionCacheGitHubToken ,
318
- dotcomSrcCliVersionCacheGitHubWebhookSecret ,
319
- authUnlockAccountLinkSigningKey ,
316
+ testSecrets {
317
+ executorsAccessToken : executorsAccessToken ,
318
+ authOpenIDClientSecret : authOpenIDClientSecret ,
319
+ authGitLabClientSecret : authGitLabClientSecret ,
320
+ authGitHubClientSecret : authGitHubClientSecret ,
321
+ authAzureDevOpsClientSecret : authAzureDevOpsClientSecret ,
322
+ emailSMTPPassword : emailSMTPPassword ,
323
+ organizationInvitationsSigningKey : organizationInvitationsSigningKey ,
324
+ githubClientSecret : githubClientSecret ,
325
+ dotcomGitHubAppCloudClientSecret : dotcomGitHubAppCloudClientSecret ,
326
+ dotcomGitHubAppCloudPrivateKey : dotcomGitHubAppCloudPrivateKey ,
327
+ dotcomSrcCliVersionCacheGitHubToken : dotcomSrcCliVersionCacheGitHubToken ,
328
+ dotcomSrcCliVersionCacheGitHubWebhookSecret : dotcomSrcCliVersionCacheGitHubWebhookSecret ,
329
+ authUnlockAccountLinkSigningKey : authUnlockAccountLinkSigningKey ,
330
+ },
320
331
)
321
332
322
333
t .Run ("replaces REDACTED with corresponding secret" , func (t * testing.T ) {
@@ -329,87 +340,129 @@ func TestUnredactSecrets(t *testing.T) {
329
340
330
341
t .Run ("unredacts secrets AND respects specified edits to secret" , func (t * testing.T ) {
331
342
input := getTestSiteWithSecrets (
332
- "new" + executorsAccessToken ,
333
- redactedSecret , "new" + authGitLabClientSecret , redactedSecret ,
334
- redactedSecret ,
335
- redactedSecret ,
336
- redactedSecret ,
337
- redactedSecret ,
338
- redactedSecret ,
339
- redactedSecret ,
340
- redactedSecret ,
341
- redactedSecret ,
343
+ testSecrets {
344
+ executorsAccessToken : "new" + executorsAccessToken ,
345
+ authOpenIDClientSecret : redactedSecret ,
346
+ authGitLabClientSecret : "new" + authGitLabClientSecret ,
347
+ authGitHubClientSecret : redactedSecret ,
348
+ authAzureDevOpsClientSecret : redactedSecret ,
349
+ emailSMTPPassword : redactedSecret ,
350
+ organizationInvitationsSigningKey : redactedSecret ,
351
+ githubClientSecret : redactedSecret ,
352
+ dotcomGitHubAppCloudClientSecret : redactedSecret ,
353
+ dotcomGitHubAppCloudPrivateKey : redactedSecret ,
354
+ dotcomSrcCliVersionCacheGitHubToken : redactedSecret ,
355
+ dotcomSrcCliVersionCacheGitHubWebhookSecret : redactedSecret ,
356
+ authUnlockAccountLinkSigningKey : redactedSecret ,
357
+ },
342
358
)
343
359
unredactedSite , err := UnredactSecrets (input , conftypes.RawUnified {Site : previousSite })
344
360
require .NoError (t , err )
345
361
346
362
// Expect to have newly-specified secrets and to fill in "REDACTED" secrets with secrets from previous site
347
363
want := getTestSiteWithSecrets (
348
- "new" + executorsAccessToken ,
349
- authOpenIDClientSecret , "new" + authGitLabClientSecret , authGitHubClientSecret ,
350
- emailSMTPPassword ,
351
- organizationInvitationsSigningKey ,
352
- githubClientSecret ,
353
- dotcomGitHubAppCloudClientSecret ,
354
- dotcomGitHubAppCloudPrivateKey ,
355
- dotcomSrcCliVersionCacheGitHubToken ,
356
- dotcomSrcCliVersionCacheGitHubWebhookSecret ,
357
- authUnlockAccountLinkSigningKey ,
364
+ testSecrets {
365
+ executorsAccessToken : "new" + executorsAccessToken ,
366
+ authOpenIDClientSecret : authOpenIDClientSecret ,
367
+ authGitLabClientSecret : "new" + authGitLabClientSecret ,
368
+ authGitHubClientSecret : authGitHubClientSecret ,
369
+ authAzureDevOpsClientSecret : authAzureDevOpsClientSecret ,
370
+ emailSMTPPassword : emailSMTPPassword ,
371
+ organizationInvitationsSigningKey : organizationInvitationsSigningKey ,
372
+ githubClientSecret : githubClientSecret ,
373
+ dotcomGitHubAppCloudClientSecret : dotcomGitHubAppCloudClientSecret ,
374
+ dotcomGitHubAppCloudPrivateKey : dotcomGitHubAppCloudPrivateKey ,
375
+ dotcomSrcCliVersionCacheGitHubToken : dotcomSrcCliVersionCacheGitHubToken ,
376
+ dotcomSrcCliVersionCacheGitHubWebhookSecret : dotcomSrcCliVersionCacheGitHubWebhookSecret ,
377
+ authUnlockAccountLinkSigningKey : authUnlockAccountLinkSigningKey ,
378
+ },
358
379
)
359
380
assert .Equal (t , want , unredactedSite )
360
381
})
361
382
362
383
t .Run ("unredacts secrets and respects edits to config" , func (t * testing.T ) {
363
384
const newEmail = "new_email@example.com"
364
385
input := getTestSiteWithSecrets (
365
- "new" + executorsAccessToken ,
366
- redactedSecret , "new" + authGitLabClientSecret , redactedSecret ,
367
- redactedSecret ,
368
- redactedSecret ,
369
- redactedSecret ,
370
- redactedSecret ,
371
- redactedSecret ,
372
- redactedSecret ,
373
- redactedSecret ,
374
- redactedSecret ,
386
+ testSecrets {
387
+ executorsAccessToken : "new" + executorsAccessToken ,
388
+ authOpenIDClientSecret : redactedSecret ,
389
+ authGitLabClientSecret : "new" + authGitLabClientSecret ,
390
+ authGitHubClientSecret : redactedSecret ,
391
+ authAzureDevOpsClientSecret : redactedSecret ,
392
+ emailSMTPPassword : redactedSecret ,
393
+ organizationInvitationsSigningKey : redactedSecret ,
394
+ githubClientSecret : redactedSecret ,
395
+ dotcomGitHubAppCloudClientSecret : redactedSecret ,
396
+ dotcomGitHubAppCloudPrivateKey : redactedSecret ,
397
+ dotcomSrcCliVersionCacheGitHubToken : redactedSecret ,
398
+ dotcomSrcCliVersionCacheGitHubWebhookSecret : redactedSecret ,
399
+ authUnlockAccountLinkSigningKey : redactedSecret ,
400
+ },
375
401
newEmail ,
376
402
)
377
403
unredactedSite , err := UnredactSecrets (input , conftypes.RawUnified {Site : previousSite })
378
404
require .NoError (t , err )
379
405
380
406
// Expect new secrets and new email to show up in the unredacted version
381
407
want := getTestSiteWithSecrets (
382
- "new" + executorsAccessToken ,
383
- authOpenIDClientSecret , "new" + authGitLabClientSecret , authGitHubClientSecret ,
384
- emailSMTPPassword ,
385
- organizationInvitationsSigningKey ,
386
- githubClientSecret ,
387
- dotcomGitHubAppCloudClientSecret ,
388
- dotcomGitHubAppCloudPrivateKey ,
389
- dotcomSrcCliVersionCacheGitHubToken ,
390
- dotcomSrcCliVersionCacheGitHubWebhookSecret ,
391
- authUnlockAccountLinkSigningKey ,
408
+ testSecrets {
409
+ executorsAccessToken : "new" + executorsAccessToken ,
410
+ authOpenIDClientSecret : authOpenIDClientSecret ,
411
+ authGitLabClientSecret : "new" + authGitLabClientSecret ,
412
+ authGitHubClientSecret : authGitHubClientSecret ,
413
+ authAzureDevOpsClientSecret : authAzureDevOpsClientSecret ,
414
+ emailSMTPPassword : emailSMTPPassword ,
415
+ organizationInvitationsSigningKey : organizationInvitationsSigningKey ,
416
+ githubClientSecret : githubClientSecret ,
417
+ dotcomGitHubAppCloudClientSecret : dotcomGitHubAppCloudClientSecret ,
418
+ dotcomGitHubAppCloudPrivateKey : dotcomGitHubAppCloudPrivateKey ,
419
+ dotcomSrcCliVersionCacheGitHubToken : dotcomSrcCliVersionCacheGitHubToken ,
420
+ dotcomSrcCliVersionCacheGitHubWebhookSecret : dotcomSrcCliVersionCacheGitHubWebhookSecret ,
421
+ authUnlockAccountLinkSigningKey : authUnlockAccountLinkSigningKey ,
422
+ },
392
423
newEmail ,
393
424
)
394
425
assert .Equal (t , want , unredactedSite )
395
426
})
396
427
}
397
428
398
429
func getTestSiteWithRedactedSecrets () string {
399
- return getTestSiteWithSecrets (redactedSecret , redactedSecret , redactedSecret , redactedSecret , redactedSecret , redactedSecret , redactedSecret , redactedSecret , redactedSecret , redactedSecret , redactedSecret , redactedSecret )
430
+ return getTestSiteWithSecrets (
431
+ testSecrets {
432
+ executorsAccessToken : redactedSecret ,
433
+ authOpenIDClientSecret : redactedSecret ,
434
+ authGitLabClientSecret : redactedSecret ,
435
+ authGitHubClientSecret : redactedSecret ,
436
+ authAzureDevOpsClientSecret : redactedSecret ,
437
+ emailSMTPPassword : redactedSecret ,
438
+ organizationInvitationsSigningKey : redactedSecret ,
439
+ githubClientSecret : redactedSecret ,
440
+ dotcomGitHubAppCloudClientSecret : redactedSecret ,
441
+ dotcomGitHubAppCloudPrivateKey : redactedSecret ,
442
+ dotcomSrcCliVersionCacheGitHubToken : redactedSecret ,
443
+ dotcomSrcCliVersionCacheGitHubWebhookSecret : redactedSecret ,
444
+ authUnlockAccountLinkSigningKey : redactedSecret ,
445
+ },
446
+ )
447
+ }
448
+
449
+ type testSecrets struct {
450
+ executorsAccessToken string
451
+ authOpenIDClientSecret string
452
+ authGitHubClientSecret string
453
+ authGitLabClientSecret string
454
+ authAzureDevOpsClientSecret string
455
+ emailSMTPPassword string
456
+ organizationInvitationsSigningKey string
457
+ githubClientSecret string
458
+ dotcomGitHubAppCloudClientSecret string
459
+ dotcomGitHubAppCloudPrivateKey string
460
+ dotcomSrcCliVersionCacheGitHubToken string
461
+ dotcomSrcCliVersionCacheGitHubWebhookSecret string
462
+ authUnlockAccountLinkSigningKey string
400
463
}
401
464
402
- func getTestSiteWithSecrets (
403
- executorsAccessToken ,
404
- authOpenIDClientSecret , authGitHubClientSecret , authGitLabClientSecret ,
405
- emailSMTPPassword ,
406
- organizationInvitationsSigningKey ,
407
- githubClientSecret ,
408
- dotcomGitHubAppCloudClientSecret , dotcomGitHubAppCloudPrivateKey ,
409
- dotcomSrcCliVersionCacheGitHubToken , dotcomSrcCliVersionCacheGitHubWebhookSecret ,
410
- authUnlockAccountLinkSigningKey string ,
411
- optionalEdit ... string ,
412
- ) string {
465
+ func getTestSiteWithSecrets (testSecrets testSecrets , optionalEdit ... string ) string {
413
466
email := "noreply+dev@sourcegraph.com"
414
467
if len (optionalEdit ) > 0 {
415
468
email = optionalEdit [0 ]
@@ -445,6 +498,13 @@ func getTestSiteWithSecrets(
445
498
"displayName": "GitLab.com",
446
499
"type": "gitlab",
447
500
"url": "https://gitlab.com"
501
+ },
502
+ {
503
+ "apiScope": "vso.code,vso.identity,vso.project,vso.work",
504
+ "clientID": "sourcegraph-client-azuredevops",
505
+ "clientSecret": "%s",
506
+ "displayName": "Azure DevOps",
507
+ "type": "azureDevOps"
448
508
}
449
509
],
450
510
"observability.tracing": {
@@ -474,15 +534,20 @@ func getTestSiteWithSecrets(
474
534
"auth.unlockAccountLinkSigningKey": "%s",
475
535
}` ,
476
536
email ,
477
- executorsAccessToken ,
478
- authOpenIDClientSecret , authGitHubClientSecret , authGitLabClientSecret ,
479
- emailSMTPPassword , // used again as username
480
- emailSMTPPassword ,
481
- organizationInvitationsSigningKey ,
482
- githubClientSecret ,
483
- dotcomGitHubAppCloudClientSecret , dotcomGitHubAppCloudPrivateKey ,
484
- dotcomSrcCliVersionCacheGitHubToken , dotcomSrcCliVersionCacheGitHubWebhookSecret ,
485
- authUnlockAccountLinkSigningKey ,
537
+ testSecrets .executorsAccessToken ,
538
+ testSecrets .authOpenIDClientSecret ,
539
+ testSecrets .authGitHubClientSecret ,
540
+ testSecrets .authGitLabClientSecret ,
541
+ testSecrets .authAzureDevOpsClientSecret ,
542
+ testSecrets .emailSMTPPassword , // used again as username
543
+ testSecrets .emailSMTPPassword ,
544
+ testSecrets .organizationInvitationsSigningKey ,
545
+ testSecrets .githubClientSecret ,
546
+ testSecrets .dotcomGitHubAppCloudClientSecret ,
547
+ testSecrets .dotcomGitHubAppCloudPrivateKey ,
548
+ testSecrets .dotcomSrcCliVersionCacheGitHubToken ,
549
+ testSecrets .dotcomSrcCliVersionCacheGitHubWebhookSecret ,
550
+ testSecrets .authUnlockAccountLinkSigningKey ,
486
551
)
487
552
488
553
}
0 commit comments