Skip to content

Commit 03bf933

Browse files
committed
test(object): lock config: all tests OK on nl-ams
1 parent f8780e5 commit 03bf933

6 files changed

+2642
-1016
lines changed

scaleway/helpers_object.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const (
3131

3232
maxObjectVersionDeletionWorkers = 8
3333

34-
objectTestsMainRegion = "fr-par"
34+
objectTestsMainRegion = "nl-ams"
3535
objectTestsSecondaryRegion = "pl-waw"
3636

3737
errCodeForbidden = "Forbidden"

scaleway/resource_object_bucket_lock_configuration.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package scaleway
33
import (
44
"context"
55
"fmt"
6-
"time"
76

87
"github.com/aws/aws-sdk-go/aws"
98
"github.com/aws/aws-sdk-go/service/s3"
@@ -83,7 +82,17 @@ func resourceObjectLockConfigurationCreate(ctx context.Context, d *schema.Resour
8382
return diag.FromErr(err)
8483
}
8584

86-
bucket := expandID(d.Get("bucket").(string))
85+
regionalID := expandRegionalID(d.Get("bucket"))
86+
bucket := regionalID.ID
87+
bucketRegion := regionalID.Region
88+
89+
if bucketRegion != "" && bucketRegion != region {
90+
conn, err = s3ClientForceRegion(d, meta, bucketRegion.String())
91+
if err != nil {
92+
return diag.FromErr(err)
93+
}
94+
region = bucketRegion
95+
}
8796

8897
input := &s3.PutObjectLockConfigurationInput{
8998
Bucket: aws.String(bucket),
@@ -93,13 +102,7 @@ func resourceObjectLockConfigurationCreate(ctx context.Context, d *schema.Resour
93102
},
94103
}
95104

96-
_, err = retryWhenAWSErrCodeEquals(ctx, []string{s3.ErrCodeNoSuchBucket}, &RetryWhenConfig[*s3.PutObjectLockConfigurationOutput]{
97-
Timeout: d.Timeout(schema.TimeoutCreate),
98-
Interval: 5 * time.Second,
99-
Function: func() (*s3.PutObjectLockConfigurationOutput, error) {
100-
return conn.PutObjectLockConfigurationWithContext(ctx, input)
101-
},
102-
})
105+
_, err = conn.PutObjectLockConfigurationWithContext(ctx, input)
103106
if err != nil {
104107
return diag.FromErr(fmt.Errorf("error creating object bucket (%s) lock configuration: %w", bucket, err))
105108
}

scaleway/resource_object_bucket_lock_configuration_test.go

Lines changed: 99 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scaleway
22

33
import (
44
"fmt"
5+
"regexp"
56
"testing"
67

78
"github.com/aws/aws-sdk-go/aws"
@@ -137,7 +138,7 @@ func TestAccScalewayObjectBucketLockConfiguration_Update(t *testing.T) {
137138
name = %[1]q
138139
region = %[2]q
139140
tags = {
140-
TestName = "TestAccSCW_LockConfig_basic"
141+
TestName = "TestAccSCW_LockConfig_update"
141142
}
142143
143144
object_lock_enabled = true
@@ -209,19 +210,103 @@ func TestAccScalewayObjectBucketLockConfiguration_Update(t *testing.T) {
209210
})
210211
}
211212

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+
212296
func testAccCheckScalewayBucketLockConfigurationDestroy(tt *TestTools) resource.TestCheckFunc {
213297
return func(s *terraform.State) error {
214-
conn, err := newS3ClientFromMeta(tt.Meta)
215-
if err != nil {
216-
return err
217-
}
218-
219298
for _, rs := range s.RootModule().Resources {
220299
if rs.Type != "scaleway_object_bucket_lock_configuration" {
221300
continue
222301
}
223302

224-
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+
}
225310

226311
input := &s3.GetObjectLockConfigurationInput{
227312
Bucket: aws.String(bucket),
@@ -253,11 +338,6 @@ func testAccCheckBucketLockConfigurationExists(tt *TestTools, resourceName strin
253338
return fmt.Errorf("resource not found")
254339
}
255340

256-
conn, err := newS3ClientFromMeta(tt.Meta)
257-
if err != nil {
258-
return err
259-
}
260-
261341
rs, ok := s.RootModule().Resources[resourceName]
262342
if !ok {
263343
return fmt.Errorf("not found: %s", resourceName)
@@ -267,7 +347,13 @@ func testAccCheckBucketLockConfigurationExists(tt *TestTools, resourceName strin
267347
return fmt.Errorf("resource (%s) ID not set", resourceName)
268348
}
269349

270-
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+
}
271357

272358
input := &s3.GetObjectLockConfigurationInput{
273359
Bucket: aws.String(bucket),

0 commit comments

Comments
 (0)