@@ -38,16 +38,37 @@ func TestSetPermissionsForCloudBuildSA(t *testing.T) {
3838 serviceAccount := "serviceAccount:test-sa@example.com"
3939 serviceAccountWOPrefix := "test-sa@example.com"
4040
41+ roles := []string {
42+ "roles/logging.logWriter" ,
43+ "roles/artifactregistry.writer" ,
44+ "roles/developerconnect.tokenAccessor" ,
45+ "roles/storage.admin" ,
46+ "roles/secretmanager.admin" ,
47+ "roles/run.admin" ,
48+ "roles/iam.serviceAccountUser" ,
49+ "roles/cloudbuild.builds.builder" ,
50+ }
51+ projectNumber := int64 (12345 )
52+ p4sa := fmt .Sprintf ("serviceAccount:service-%d@gcp-sa-developerconnect.iam.gserviceaccount.com" , projectNumber )
53+
4154 t .Run ("with service account" , func (t * testing.T ) {
42- mockIAMClient .EXPECT ().AddIAMRoleBinding (ctx , fmt .Sprintf ("projects/%s" , projectID ), "roles/developerconnect.tokenAccessor" , serviceAccount ).Return (nil , nil )
55+ for _ , r := range roles {
56+ mockIAMClient .EXPECT ().AddIAMRoleBinding (ctx , fmt .Sprintf ("projects/%s" , projectID ), r , serviceAccount ).Return (nil , nil )
57+ }
58+ mockRMClient .EXPECT ().ToProjectNumber (ctx , projectID ).Return (projectNumber , nil )
59+ mockIAMClient .EXPECT ().AddIAMRoleBinding (ctx , fmt .Sprintf ("projects/%s" , projectID ), "roles/secretmanager.admin" , p4sa ).Return (nil , nil )
4360
4461 resolvedSA , err := setPermissionsForCloudBuildSA (ctx , projectID , serviceAccount , mockRMClient , mockIAMClient )
4562 assert .NoError (t , err )
4663 assert .Equal (t , serviceAccount , resolvedSA )
4764 })
4865
4966 t .Run ("with service account, no prefix" , func (t * testing.T ) {
50- mockIAMClient .EXPECT ().AddIAMRoleBinding (ctx , fmt .Sprintf ("projects/%s" , projectID ), "roles/developerconnect.tokenAccessor" , serviceAccount ).Return (nil , nil )
67+ for _ , r := range roles {
68+ mockIAMClient .EXPECT ().AddIAMRoleBinding (ctx , fmt .Sprintf ("projects/%s" , projectID ), r , serviceAccount ).Return (nil , nil )
69+ }
70+ mockRMClient .EXPECT ().ToProjectNumber (ctx , projectID ).Return (projectNumber , nil )
71+ mockIAMClient .EXPECT ().AddIAMRoleBinding (ctx , fmt .Sprintf ("projects/%s" , projectID ), "roles/secretmanager.admin" , p4sa ).Return (nil , nil )
5172
5273 resolvedSA , err := setPermissionsForCloudBuildSA (ctx , projectID , serviceAccountWOPrefix , mockRMClient , mockIAMClient )
5374 assert .NoError (t , err )
0 commit comments