@@ -12,7 +12,7 @@ import (
12
12
gitlab "github.com/xanzy/go-gitlab"
13
13
)
14
14
15
- func TestAccGitLabProjectApprovalRule_basic (t * testing.T ) {
15
+ func TestAccGitLabProjectApprovalRule_Basic (t * testing.T ) {
16
16
// Set up project, groups, users, and branches to use in the test.
17
17
18
18
testAccCheck (t )
@@ -43,10 +43,10 @@ func TestAccGitLabProjectApprovalRule_basic(t *testing.T) {
43
43
Steps : []resource.TestStep {
44
44
// Create rule
45
45
{
46
- Config : testAccGitlabProjectApprovalRuleConfig (project .ID , 3 , projectUsers [0 ].ID , groups [0 ].ID , branches [0 ].ID ),
46
+ Config : testAccGitlabProjectApprovalRuleConfig_Basic (project .ID , 3 , projectUsers [0 ].ID , groups [0 ].ID , branches [0 ].ID ),
47
47
Check : resource .ComposeTestCheckFunc (
48
48
testAccCheckGitlabProjectApprovalRuleExists ("gitlab_project_approval_rule.foo" , & projectApprovalRule ),
49
- testAccCheckGitlabProjectApprovalRuleAttributes (& projectApprovalRule , & testAccGitlabProjectApprovalRuleExpectedAttributes {
49
+ testAccCheckGitlabProjectApprovalRuleAttributes_Basic (& projectApprovalRule , & testAccGitlabProjectApprovalRuleExpectedAttributes_Basic {
50
50
Name : "foo" ,
51
51
ApprovalsRequired : 3 ,
52
52
EligibleApproverIDs : []int {currentUser .ID , projectUsers [0 ].ID , group0Users [0 ].ID },
@@ -57,10 +57,10 @@ func TestAccGitLabProjectApprovalRule_basic(t *testing.T) {
57
57
},
58
58
// Update rule
59
59
{
60
- Config : testAccGitlabProjectApprovalRuleConfig (project .ID , 2 , projectUsers [1 ].ID , groups [1 ].ID , branches [1 ].ID ),
60
+ Config : testAccGitlabProjectApprovalRuleConfig_Basic (project .ID , 2 , projectUsers [1 ].ID , groups [1 ].ID , branches [1 ].ID ),
61
61
Check : resource .ComposeTestCheckFunc (
62
62
testAccCheckGitlabProjectApprovalRuleExists ("gitlab_project_approval_rule.foo" , & projectApprovalRule ),
63
- testAccCheckGitlabProjectApprovalRuleAttributes (& projectApprovalRule , & testAccGitlabProjectApprovalRuleExpectedAttributes {
63
+ testAccCheckGitlabProjectApprovalRuleAttributes_Basic (& projectApprovalRule , & testAccGitlabProjectApprovalRuleExpectedAttributes_Basic {
64
64
Name : "foo" ,
65
65
ApprovalsRequired : 2 ,
66
66
EligibleApproverIDs : []int {currentUser .ID , projectUsers [1 ].ID , group1Users [0 ].ID },
@@ -79,15 +79,83 @@ func TestAccGitLabProjectApprovalRule_basic(t *testing.T) {
79
79
})
80
80
}
81
81
82
- type testAccGitlabProjectApprovalRuleExpectedAttributes struct {
82
+ func TestAccGitLabProjectApprovalRule_AnyApprover (t * testing.T ) {
83
+ // Set up project, groups, users, and branches to use in the test.
84
+
85
+ testAccCheck (t )
86
+ testAccCheckEE (t )
87
+
88
+ project := testAccCreateProject (t )
89
+
90
+ // Terraform test starts here.
91
+
92
+ var projectApprovalRule gitlab.ProjectApprovalRule
93
+
94
+ resource .Test (t , resource.TestCase {
95
+ ProviderFactories : providerFactories ,
96
+ CheckDestroy : testAccCheckGitlabProjectApprovalRuleDestroy (project .ID ),
97
+ Steps : []resource.TestStep {
98
+ // Create rule
99
+ {
100
+ Config : testAccGitlabProjectApprovalRuleConfig_AnyApprover (project .ID , 3 , "any_approver" ),
101
+ Check : resource .ComposeTestCheckFunc (
102
+ testAccCheckGitlabProjectApprovalRuleExists ("gitlab_project_approval_rule.bar" , & projectApprovalRule ),
103
+ testAccCheckGitlabProjectApprovalRuleAttributes_AnyApprover (& projectApprovalRule , & testAccGitlabProjectApprovalRuleExpectedAttributes_AnyApprover {
104
+ Name : "bar" ,
105
+ ApprovalsRequired : 3 ,
106
+ RuleType : "any_approver" ,
107
+ }),
108
+ ),
109
+ },
110
+ // Update rule
111
+ {
112
+ Config : testAccGitlabProjectApprovalRuleConfig_AnyApprover (project .ID , 2 , "any_approver" ),
113
+ Check : resource .ComposeTestCheckFunc (
114
+ testAccCheckGitlabProjectApprovalRuleExists ("gitlab_project_approval_rule.bar" , & projectApprovalRule ),
115
+ testAccCheckGitlabProjectApprovalRuleAttributes_AnyApprover (& projectApprovalRule , & testAccGitlabProjectApprovalRuleExpectedAttributes_AnyApprover {
116
+ Name : "bar" ,
117
+ ApprovalsRequired : 2 ,
118
+ RuleType : "any_approver" ,
119
+ }),
120
+ ),
121
+ },
122
+ // Re-create rule
123
+ {
124
+ Config : testAccGitlabProjectApprovalRuleConfig_AnyApprover (project .ID , 2 , "regular" ),
125
+ Check : resource .ComposeTestCheckFunc (
126
+ testAccCheckGitlabProjectApprovalRuleExists ("gitlab_project_approval_rule.bar" , & projectApprovalRule ),
127
+ testAccCheckGitlabProjectApprovalRuleAttributes_AnyApprover (& projectApprovalRule , & testAccGitlabProjectApprovalRuleExpectedAttributes_AnyApprover {
128
+ Name : "bar" ,
129
+ ApprovalsRequired : 2 ,
130
+ RuleType : "regular" ,
131
+ }),
132
+ ),
133
+ },
134
+ // Verify import
135
+ {
136
+ ResourceName : "gitlab_project_approval_rule.bar" ,
137
+ ImportState : true ,
138
+ ImportStateVerify : true ,
139
+ },
140
+ },
141
+ })
142
+ }
143
+
144
+ type testAccGitlabProjectApprovalRuleExpectedAttributes_Basic struct {
83
145
Name string
84
146
ApprovalsRequired int
85
147
EligibleApproverIDs []int
86
148
GroupIDs []int
87
149
ProtectedBranchIDs []int
88
150
}
89
151
90
- func testAccCheckGitlabProjectApprovalRuleAttributes (got * gitlab.ProjectApprovalRule , want * testAccGitlabProjectApprovalRuleExpectedAttributes ) resource.TestCheckFunc {
152
+ type testAccGitlabProjectApprovalRuleExpectedAttributes_AnyApprover struct {
153
+ Name string
154
+ ApprovalsRequired int
155
+ RuleType string
156
+ }
157
+
158
+ func testAccCheckGitlabProjectApprovalRuleAttributes_Basic (got * gitlab.ProjectApprovalRule , want * testAccGitlabProjectApprovalRuleExpectedAttributes_Basic ) resource.TestCheckFunc {
91
159
return func (s * terraform.State ) error {
92
160
return InterceptGomegaFailure (func () {
93
161
Expect (got .Name ).To (Equal (want .Name ), "name" )
@@ -114,7 +182,17 @@ func testAccCheckGitlabProjectApprovalRuleAttributes(got *gitlab.ProjectApproval
114
182
}
115
183
}
116
184
117
- func testAccGitlabProjectApprovalRuleConfig (project , approvals , userID , groupID , protectedBranchID int ) string {
185
+ func testAccCheckGitlabProjectApprovalRuleAttributes_AnyApprover (got * gitlab.ProjectApprovalRule , want * testAccGitlabProjectApprovalRuleExpectedAttributes_AnyApprover ) resource.TestCheckFunc {
186
+ return func (s * terraform.State ) error {
187
+ return InterceptGomegaFailure (func () {
188
+ Expect (got .Name ).To (Equal (want .Name ), "name" )
189
+ Expect (got .ApprovalsRequired ).To (Equal (want .ApprovalsRequired ), "approvals_required" )
190
+ Expect (got .RuleType ).To (Equal (want .RuleType ), "rule_type" )
191
+ })
192
+ }
193
+ }
194
+
195
+ func testAccGitlabProjectApprovalRuleConfig_Basic (project , approvals , userID , groupID , protectedBranchID int ) string {
118
196
return fmt .Sprintf (`
119
197
resource "gitlab_project_approval_rule" "foo" {
120
198
project = %d
@@ -126,6 +204,16 @@ resource "gitlab_project_approval_rule" "foo" {
126
204
}` , project , approvals , userID , groupID , protectedBranchID )
127
205
}
128
206
207
+ func testAccGitlabProjectApprovalRuleConfig_AnyApprover (project , approvals int , rule_type string ) string {
208
+ return fmt .Sprintf (`
209
+ resource "gitlab_project_approval_rule" "bar" {
210
+ project = %d
211
+ name = "bar"
212
+ approvals_required = %d
213
+ rule_type = "%s"
214
+ }` , project , approvals , rule_type )
215
+ }
216
+
129
217
func testAccCheckGitlabProjectApprovalRuleExists (n string , projectApprovalRule * gitlab.ProjectApprovalRule ) resource.TestCheckFunc {
130
218
return func (s * terraform.State ) error {
131
219
rs , ok := s .RootModule ().Resources [n ]
0 commit comments