@@ -2,6 +2,7 @@ package scaleway
2
2
3
3
import (
4
4
"fmt"
5
+ "regexp"
5
6
"testing"
6
7
7
8
"github.com/aws/aws-sdk-go/aws"
@@ -27,12 +28,16 @@ func TestAccScalewayObjectBucketLockConfiguration_Basic(t *testing.T) {
27
28
PreCheck : func () { testAccPreCheck (t ) },
28
29
ErrorCheck : ErrorCheck (t , EndpointsID ),
29
30
ProviderFactories : tt .ProviderFactories ,
30
- CheckDestroy : testAccCheckScalewayBucketLockConfigurationDestroy (tt ),
31
+ CheckDestroy : resource .ComposeTestCheckFunc (
32
+ testAccCheckScalewayBucketLockConfigurationDestroy (tt ),
33
+ testAccCheckScalewayObjectBucketDestroy (tt ),
34
+ ),
31
35
Steps : []resource.TestStep {
32
36
{
33
37
Config : fmt .Sprintf (`
34
38
resource "scaleway_object_bucket" "test" {
35
39
name = %[1]q
40
+ region = %[2]q
36
41
tags = {
37
42
TestName = "TestAccSCW_LockConfig_basic"
38
43
}
@@ -41,22 +46,23 @@ func TestAccScalewayObjectBucketLockConfiguration_Basic(t *testing.T) {
41
46
}
42
47
43
48
resource "scaleway_object_bucket_acl" "test" {
44
- bucket = scaleway_object_bucket.test.name
49
+ bucket = scaleway_object_bucket.test.id
45
50
acl = "public-read"
46
51
}
47
52
48
53
resource "scaleway_object_bucket_lock_configuration" "test" {
49
- bucket = scaleway_object_bucket.test.name
54
+ bucket = scaleway_object_bucket.test.id
50
55
rule {
51
56
default_retention {
52
57
mode = "GOVERNANCE"
53
58
days = 1
54
59
}
55
60
}
56
61
}
57
- ` , rName ),
62
+ ` , rName , objectTestsMainRegion ),
58
63
Check : resource .ComposeTestCheckFunc (
59
64
testAccCheckBucketLockConfigurationExists (tt , resourceName ),
65
+ testAccCheckScalewayObjectBucketExistsForceRegion (tt , "scaleway_object_bucket.test" , true ),
60
66
resource .TestCheckResourceAttrPair (resourceName , "bucket" , "scaleway_object_bucket.test" , "name" ),
61
67
resource .TestCheckResourceAttr (resourceName , "rule.#" , "1" ),
62
68
resource .TestCheckResourceAttr (resourceName , "rule.0.default_retention.#" , "1" ),
@@ -68,6 +74,7 @@ func TestAccScalewayObjectBucketLockConfiguration_Basic(t *testing.T) {
68
74
Config : fmt .Sprintf (`
69
75
resource "scaleway_object_bucket" "test" {
70
76
name = %[1]q
77
+ region = %[2]q
71
78
tags = {
72
79
TestName = "TestAccSCW_LockConfig_basic"
73
80
}
@@ -89,9 +96,10 @@ func TestAccScalewayObjectBucketLockConfiguration_Basic(t *testing.T) {
89
96
}
90
97
}
91
98
}
92
- ` , rName ),
99
+ ` , rName , objectTestsMainRegion ),
93
100
Check : resource .ComposeTestCheckFunc (
94
101
testAccCheckBucketLockConfigurationExists (tt , resourceName ),
102
+ testAccCheckScalewayObjectBucketExistsForceRegion (tt , "scaleway_object_bucket.test" , true ),
95
103
resource .TestCheckResourceAttrPair (resourceName , "bucket" , "scaleway_object_bucket.test" , "name" ),
96
104
resource .TestCheckResourceAttr (resourceName , "rule.#" , "1" ),
97
105
resource .TestCheckResourceAttr (resourceName , "rule.0.default_retention.#" , "1" ),
@@ -119,42 +127,48 @@ func TestAccScalewayObjectBucketLockConfiguration_Update(t *testing.T) {
119
127
PreCheck : func () { testAccPreCheck (t ) },
120
128
ErrorCheck : ErrorCheck (t , EndpointsID ),
121
129
ProviderFactories : tt .ProviderFactories ,
122
- CheckDestroy : testAccCheckScalewayBucketLockConfigurationDestroy (tt ),
130
+ CheckDestroy : resource .ComposeTestCheckFunc (
131
+ testAccCheckScalewayBucketLockConfigurationDestroy (tt ),
132
+ testAccCheckScalewayObjectBucketDestroy (tt ),
133
+ ),
123
134
Steps : []resource.TestStep {
124
135
{
125
136
Config : fmt .Sprintf (`
126
137
resource "scaleway_object_bucket" "test" {
127
138
name = %[1]q
139
+ region = %[2]q
128
140
tags = {
129
- TestName = "TestAccSCW_LockConfig_basic "
141
+ TestName = "TestAccSCW_LockConfig_update "
130
142
}
131
143
132
144
object_lock_enabled = true
133
145
}
134
146
135
147
resource "scaleway_object_bucket_acl" "test" {
136
- bucket = scaleway_object_bucket.test.name
148
+ bucket = scaleway_object_bucket.test.id
137
149
acl = "public-read"
138
150
}
139
151
140
152
resource "scaleway_object_bucket_lock_configuration" "test" {
141
- bucket = scaleway_object_bucket.test.name
153
+ bucket = scaleway_object_bucket.test.id
142
154
rule {
143
155
default_retention {
144
156
mode = "GOVERNANCE"
145
157
days = 1
146
158
}
147
159
}
148
160
}
149
- ` , rName ),
161
+ ` , rName , objectTestsMainRegion ),
150
162
Check : resource .ComposeTestCheckFunc (
151
163
testAccCheckBucketLockConfigurationExists (tt , resourceName ),
164
+ testAccCheckScalewayObjectBucketExistsForceRegion (tt , "scaleway_object_bucket.test" , true ),
152
165
),
153
166
},
154
167
{
155
168
Config : fmt .Sprintf (`
156
169
resource "scaleway_object_bucket" "test" {
157
170
name = %[1]q
171
+ region = %[2]q
158
172
tags = {
159
173
TestName = "TestAccSCW_LockConfig_basic"
160
174
}
@@ -163,22 +177,23 @@ func TestAccScalewayObjectBucketLockConfiguration_Update(t *testing.T) {
163
177
}
164
178
165
179
resource "scaleway_object_bucket_acl" "test" {
166
- bucket = scaleway_object_bucket.test.name
180
+ bucket = scaleway_object_bucket.test.id
167
181
acl = "public-read"
168
182
}
169
183
170
184
resource "scaleway_object_bucket_lock_configuration" "test" {
171
- bucket = scaleway_object_bucket.test.name
185
+ bucket = scaleway_object_bucket.test.id
172
186
rule {
173
187
default_retention {
174
188
mode = "COMPLIANCE"
175
189
days = 2
176
190
}
177
191
}
178
192
}
179
- ` , rName ),
193
+ ` , rName , objectTestsMainRegion ),
180
194
Check : resource .ComposeTestCheckFunc (
181
195
testAccCheckBucketLockConfigurationExists (tt , resourceName ),
196
+ testAccCheckScalewayObjectBucketExistsForceRegion (tt , "scaleway_object_bucket.test" , true ),
182
197
resource .TestCheckResourceAttrPair (resourceName , "bucket" , "scaleway_object_bucket.test" , "name" ),
183
198
resource .TestCheckResourceAttr (resourceName , "rule.#" , "1" ),
184
199
resource .TestCheckResourceAttr (resourceName , "rule.0.default_retention.#" , "1" ),
@@ -195,19 +210,103 @@ func TestAccScalewayObjectBucketLockConfiguration_Update(t *testing.T) {
195
210
})
196
211
}
197
212
213
+ func TestAccScalewayObjectBucketLockConfiguration_WithBucketName (t * testing.T ) {
214
+ rName := sdkacctest .RandomWithPrefix (LockResourcePrefix )
215
+ resourceName := lockResourceTestName
216
+
217
+ tt := NewTestTools (t )
218
+ defer tt .Cleanup ()
219
+
220
+ resource .ParallelTest (t , resource.TestCase {
221
+ PreCheck : func () { testAccPreCheck (t ) },
222
+ ErrorCheck : ErrorCheck (t , EndpointsID ),
223
+ ProviderFactories : tt .ProviderFactories ,
224
+ CheckDestroy : resource .ComposeTestCheckFunc (
225
+ testAccCheckScalewayBucketLockConfigurationDestroy (tt ),
226
+ testAccCheckScalewayObjectBucketDestroy (tt ),
227
+ ),
228
+ Steps : []resource.TestStep {
229
+ {
230
+ Config : fmt .Sprintf (`
231
+ resource "scaleway_object_bucket" "test" {
232
+ name = %[1]q
233
+ region = %[2]q
234
+ tags = {
235
+ TestName = "TestAccSCW_LockConfig_WithBucketName"
236
+ }
237
+
238
+ object_lock_enabled = true
239
+ }
240
+
241
+ resource "scaleway_object_bucket_acl" "test" {
242
+ bucket = scaleway_object_bucket.test.id
243
+ acl = "public-read"
244
+ }
245
+
246
+ resource "scaleway_object_bucket_lock_configuration" "test" {
247
+ bucket = scaleway_object_bucket.test.name
248
+ rule {
249
+ default_retention {
250
+ mode = "GOVERNANCE"
251
+ days = 1
252
+ }
253
+ }
254
+ }
255
+ ` , rName , objectTestsMainRegion ),
256
+ ExpectError : regexp .MustCompile ("NoSuchBucket: The specified bucket does not exist" ),
257
+ },
258
+ {
259
+ Config : fmt .Sprintf (`
260
+ resource "scaleway_object_bucket" "test" {
261
+ name = %[1]q
262
+ region = %[2]q
263
+ tags = {
264
+ TestName = "TestAccSCW_LockConfig_WithBucketName"
265
+ }
266
+
267
+ object_lock_enabled = true
268
+ }
269
+
270
+ resource "scaleway_object_bucket_acl" "test" {
271
+ bucket = scaleway_object_bucket.test.id
272
+ acl = "public-read"
273
+ }
274
+
275
+ resource "scaleway_object_bucket_lock_configuration" "test" {
276
+ bucket = scaleway_object_bucket.test.name
277
+ region = %[2]q
278
+ rule {
279
+ default_retention {
280
+ mode = "GOVERNANCE"
281
+ days = 1
282
+ }
283
+ }
284
+ }
285
+ ` , rName , objectTestsMainRegion ),
286
+ Check : resource .ComposeTestCheckFunc (
287
+ testAccCheckBucketLockConfigurationExists (tt , resourceName ),
288
+ testAccCheckScalewayObjectBucketExistsForceRegion (tt , "scaleway_object_bucket.test" , true ),
289
+ resource .TestCheckResourceAttrPair (resourceName , "bucket" , "scaleway_object_bucket.test" , "name" ),
290
+ ),
291
+ },
292
+ },
293
+ })
294
+ }
295
+
198
296
func testAccCheckScalewayBucketLockConfigurationDestroy (tt * TestTools ) resource.TestCheckFunc {
199
297
return func (s * terraform.State ) error {
200
- conn , err := newS3ClientFromMeta (tt .Meta )
201
- if err != nil {
202
- return err
203
- }
204
-
205
298
for _ , rs := range s .RootModule ().Resources {
206
299
if rs .Type != "scaleway_object_bucket_lock_configuration" {
207
300
continue
208
301
}
209
302
210
- bucket := expandID (rs .Primary .ID )
303
+ regionalID := expandRegionalID (rs .Primary .ID )
304
+ bucketRegion := regionalID .Region
305
+ bucket := regionalID .ID
306
+ conn , err := newS3ClientFromMetaForceRegion (tt .Meta , bucketRegion .String ())
307
+ if err != nil {
308
+ return err
309
+ }
211
310
212
311
input := & s3.GetObjectLockConfigurationInput {
213
312
Bucket : aws .String (bucket ),
@@ -239,11 +338,6 @@ func testAccCheckBucketLockConfigurationExists(tt *TestTools, resourceName strin
239
338
return fmt .Errorf ("resource not found" )
240
339
}
241
340
242
- conn , err := newS3ClientFromMeta (tt .Meta )
243
- if err != nil {
244
- return err
245
- }
246
-
247
341
rs , ok := s .RootModule ().Resources [resourceName ]
248
342
if ! ok {
249
343
return fmt .Errorf ("not found: %s" , resourceName )
@@ -253,7 +347,13 @@ func testAccCheckBucketLockConfigurationExists(tt *TestTools, resourceName strin
253
347
return fmt .Errorf ("resource (%s) ID not set" , resourceName )
254
348
}
255
349
256
- bucket := expandID (rs .Primary .ID )
350
+ regionalID := expandRegionalID (rs .Primary .ID )
351
+ bucketRegion := regionalID .Region
352
+ bucket := regionalID .ID
353
+ conn , err := newS3ClientFromMetaForceRegion (tt .Meta , bucketRegion .String ())
354
+ if err != nil {
355
+ return err
356
+ }
257
357
258
358
input := & s3.GetObjectLockConfigurationInput {
259
359
Bucket : aws .String (bucket ),
0 commit comments