@@ -129,7 +129,8 @@ func TestResourceEnterpriseRoleBindingCreateContext(t *testing.T) {
129129 Name : "engineering-viewer" ,
130130 Description : lo .ToPtr ("Engineering viewer role binding" ),
131131 Definition : organization_management.RoleBindingDefinition {
132- RoleId : lo .ToPtr (roleID ),
132+ RoleId : lo .ToPtr (roleID ),
133+ ChildOrganizationId : lo .ToPtr (organizationID1 ),
133134 Subjects : & []organization_management.Subject {
134135 {
135136 User : & organization_management.UserSubject {
@@ -511,6 +512,121 @@ func TestResourceEnterpriseRoleBindingCreateContext(t *testing.T) {
511512 r .True (result .HasError ())
512513 r .Contains (result [0 ].Summary , "at least one scope (organization or cluster) must be defined" )
513514 })
515+
516+ t .Run ("when organization_id differs from enterprise_id then ChildOrganizationId is set in definition" , func (t * testing.T ) {
517+ t .Parallel ()
518+ r := require .New (t )
519+ mockClient := mockOrganizationManagement .NewMockClientWithResponsesInterface (gomock .NewController (t ))
520+
521+ ctx := context .Background ()
522+ provider := & ProviderConfig {
523+ organizationManagementClient : mockClient ,
524+ }
525+
526+ enterpriseID := uuid .NewString ()
527+ childOrgID := uuid .NewString () // different from enterpriseID
528+ roleBindingID := uuid .NewString ()
529+ roleID := uuid .NewString ()
530+ userID := uuid .NewString ()
531+
532+ expectedCreateRequest := organization_management.BatchCreateEnterpriseRoleBindingsRequest {
533+ EnterpriseId : enterpriseID ,
534+ Requests : []organization_management.BatchCreateEnterpriseRoleBindingsRequestCreateRoleBindingRequest {
535+ {
536+ OrganizationId : childOrgID ,
537+ RoleBinding : organization_management.BatchCreateEnterpriseRoleBindingsRequestRoleBinding {
538+ Name : "child-org-binding" ,
539+ Description : lo .ToPtr ("" ),
540+ Definition : organization_management.RoleBindingDefinition {
541+ RoleId : lo .ToPtr (roleID ),
542+ ChildOrganizationId : lo .ToPtr (childOrgID ),
543+ Subjects : & []organization_management.Subject {
544+ {
545+ User : & organization_management.UserSubject {Id : userID },
546+ },
547+ },
548+ Scopes : & []organization_management.Scope {
549+ {
550+ Organization : & organization_management.OrganizationScope {Id : childOrgID },
551+ },
552+ },
553+ },
554+ },
555+ },
556+ },
557+ }
558+
559+ mockClient .EXPECT ().
560+ EnterpriseAPIBatchCreateEnterpriseRoleBindingsWithResponse (gomock .Any (), enterpriseID , expectedCreateRequest ).
561+ Return (& organization_management.EnterpriseAPIBatchCreateEnterpriseRoleBindingsResponse {
562+ Body : nil ,
563+ HTTPResponse : & http.Response {StatusCode : http .StatusOK },
564+ JSON200 : & organization_management.BatchCreateEnterpriseRoleBindingsResponse {
565+ RoleBindings : & []organization_management.RoleBinding {
566+ {
567+ Id : lo .ToPtr (roleBindingID ),
568+ Name : lo .ToPtr ("child-org-binding" ),
569+ OrganizationId : lo .ToPtr (childOrgID ),
570+ Definition : & organization_management.RoleBindingDefinition {
571+ RoleId : lo .ToPtr (roleID ),
572+ ChildOrganizationId : lo .ToPtr (childOrgID ),
573+ Subjects : & []organization_management.Subject {
574+ {User : & organization_management.UserSubject {Id : userID }},
575+ },
576+ Scopes : & []organization_management.Scope {
577+ {Organization : & organization_management.OrganizationScope {Id : childOrgID }},
578+ },
579+ },
580+ },
581+ },
582+ },
583+ }, nil )
584+
585+ stateValue := cty .ObjectVal (map [string ]cty.Value {
586+ FieldEnterpriseRoleBindingEnterpriseID : cty .StringVal (enterpriseID ),
587+ FieldEnterpriseRoleBindingOrganizationID : cty .StringVal (childOrgID ),
588+ FieldEnterpriseRoleBindingName : cty .StringVal ("child-org-binding" ),
589+ FieldEnterpriseRoleBindingDescription : cty .StringVal ("" ),
590+ FieldEnterpriseRoleBindingRoleID : cty .StringVal (roleID ),
591+ FieldEnterpriseRoleBindingSubjects : cty .ListVal ([]cty.Value {
592+ cty .ObjectVal (map [string ]cty.Value {
593+ FieldEnterpriseRoleBindingSubjectUser : cty .ListVal ([]cty.Value {
594+ cty .ObjectVal (map [string ]cty.Value {
595+ FieldEnterpriseRoleBindingSubjectID : cty .StringVal (userID ),
596+ }),
597+ }),
598+ FieldEnterpriseRoleBindingSubjectServiceAccount : cty .ListValEmpty (cty .Object (map [string ]cty.Type {
599+ FieldEnterpriseRoleBindingSubjectID : cty .String ,
600+ })),
601+ FieldEnterpriseRoleBindingSubjectGroup : cty .ListValEmpty (cty .Object (map [string ]cty.Type {
602+ FieldEnterpriseRoleBindingSubjectID : cty .String ,
603+ })),
604+ }),
605+ }),
606+ FieldEnterpriseRoleBindingScopes : cty .ListVal ([]cty.Value {
607+ cty .ObjectVal (map [string ]cty.Value {
608+ FieldEnterpriseRoleBindingScopeOrganization : cty .ListVal ([]cty.Value {
609+ cty .ObjectVal (map [string ]cty.Value {
610+ FieldEnterpriseRoleBindingScopeID : cty .StringVal (childOrgID ),
611+ }),
612+ }),
613+ FieldEnterpriseRoleBindingScopeCluster : cty .ListValEmpty (cty .Object (map [string ]cty.Type {
614+ FieldEnterpriseRoleBindingScopeID : cty .String ,
615+ })),
616+ }),
617+ }),
618+ })
619+ state := terraform .NewInstanceStateShimmedFromValue (stateValue , 0 )
620+
621+ resource := resourceEnterpriseRoleBinding ()
622+ data := resource .Data (state )
623+
624+ result := resource .CreateContext (ctx , data , provider )
625+
626+ r .Nil (result )
627+ r .False (result .HasError ())
628+ r .Equal (roleBindingID , data .Id ())
629+ })
514630}
515631
516632func TestResourceEnterpriseRoleBindingReadContext (t * testing.T ) {
@@ -982,7 +1098,8 @@ func TestResourceEnterpriseRoleBindingUpdateContext(t *testing.T) {
9821098 OrganizationId : organizationID ,
9831099 Description : lo .ToPtr ("Updated description" ),
9841100 Definition : organization_management.RoleBindingDefinition {
985- RoleId : lo .ToPtr (newRoleID ),
1101+ RoleId : lo .ToPtr (newRoleID ),
1102+ ChildOrganizationId : lo .ToPtr (organizationID ),
9861103 Subjects : & []organization_management.Subject {
9871104 {
9881105 User : & organization_management.UserSubject {
@@ -1238,7 +1355,8 @@ func TestResourceEnterpriseRoleBindingUpdateContext(t *testing.T) {
12381355 OrganizationId : organizationID ,
12391356 Description : lo .ToPtr ("Test description" ),
12401357 Definition : organization_management.RoleBindingDefinition {
1241- RoleId : lo .ToPtr (roleID ),
1358+ RoleId : lo .ToPtr (roleID ),
1359+ ChildOrganizationId : lo .ToPtr (organizationID ),
12421360 Subjects : & []organization_management.Subject {
12431361 {
12441362 User : & organization_management.UserSubject {
@@ -1419,7 +1537,8 @@ func TestResourceEnterpriseRoleBindingUpdateContext(t *testing.T) {
14191537 OrganizationId : organizationID ,
14201538 Description : lo .ToPtr ("Test description" ),
14211539 Definition : organization_management.RoleBindingDefinition {
1422- RoleId : lo .ToPtr (roleID ),
1540+ RoleId : lo .ToPtr (roleID ),
1541+ ChildOrganizationId : lo .ToPtr (organizationID ),
14231542 Subjects : & []organization_management.Subject {
14241543 {
14251544 User : & organization_management.UserSubject {
0 commit comments