Skip to content

Commit 158f0e9

Browse files
ndrpntRococobertopauldenpomverteralbon
authored
fix(object): fix failing acceptance tests (#808)
Signed-off-by: Julien ALEXANDRE <[email protected]> * fix(object): fix & test expandObjectBucketTags helper Co-authored-by: DuarteRoberto <[email protected]> Co-authored-by: paulden <[email protected]> Co-authored-by: pomverte <[email protected]> Co-authored-by: ralbon <[email protected]> Co-authored-by: schaltiemi <[email protected]> Co-authored-by: Rémy Léone <[email protected]>
1 parent 6487bfb commit 158f0e9

4 files changed

+83
-8
lines changed

scaleway/helpers_object.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func expandObjectBucketTags(tags interface{}) []*s3.Tag {
100100
tagsSet := []*s3.Tag(nil)
101101
for key, value := range tags.(map[string]interface{}) {
102102
tagsSet = append(tagsSet, &s3.Tag{
103-
Key: &key,
103+
Key: scw.StringPtr(key),
104104
Value: expandStringPtr(value),
105105
})
106106
}

scaleway/helpers_object_test.go

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package scaleway
2+
3+
import (
4+
"testing"
5+
6+
"github.com/aws/aws-sdk-go/service/s3"
7+
"github.com/scaleway/scaleway-sdk-go/scw"
8+
"github.com/stretchr/testify/assert"
9+
)
10+
11+
func TestExpandObjectBucketTags(t *testing.T) {
12+
tests := []struct {
13+
name string
14+
tags interface{}
15+
want []*s3.Tag
16+
}{
17+
{
18+
name: "no tags",
19+
tags: map[string]interface{}{},
20+
want: []*s3.Tag(nil),
21+
},
22+
{
23+
name: "single tag",
24+
tags: map[string]interface{}{
25+
"key1": "val1",
26+
},
27+
want: []*s3.Tag{
28+
{Key: scw.StringPtr("key1"), Value: scw.StringPtr("val1")},
29+
},
30+
},
31+
{
32+
name: "many tags",
33+
tags: map[string]interface{}{
34+
"key1": "val1",
35+
"key2": "val2",
36+
"key3": "val3",
37+
},
38+
want: []*s3.Tag{
39+
{Key: scw.StringPtr("key1"), Value: scw.StringPtr("val1")},
40+
{Key: scw.StringPtr("key2"), Value: scw.StringPtr("val2")},
41+
{Key: scw.StringPtr("key3"), Value: scw.StringPtr("val3")},
42+
},
43+
},
44+
}
45+
for _, tt := range tests {
46+
t.Run(tt.name, func(t *testing.T) {
47+
assert.ElementsMatch(t, tt.want, expandObjectBucketTags(tt.tags))
48+
})
49+
}
50+
}

scaleway/resource_object_bucket.go

+12-6
Original file line numberDiff line numberDiff line change
@@ -172,12 +172,18 @@ func resourceScalewayObjectBucketUpdate(ctx context.Context, d *schema.ResourceD
172172
if d.HasChange("tags") {
173173
tagsSet := expandObjectBucketTags(d.Get("tags"))
174174

175-
_, err = s3Client.PutBucketTaggingWithContext(ctx, &s3.PutBucketTaggingInput{
176-
Bucket: scw.StringPtr(bucketName),
177-
Tagging: &s3.Tagging{
178-
TagSet: tagsSet,
179-
},
180-
})
175+
if len(tagsSet) > 0 {
176+
_, err = s3Client.PutBucketTaggingWithContext(ctx, &s3.PutBucketTaggingInput{
177+
Bucket: scw.StringPtr(bucketName),
178+
Tagging: &s3.Tagging{
179+
TagSet: tagsSet,
180+
},
181+
})
182+
} else {
183+
_, err = s3Client.DeleteBucketTaggingWithContext(ctx, &s3.DeleteBucketTaggingInput{
184+
Bucket: scw.StringPtr(bucketName),
185+
})
186+
}
181187
if err != nil {
182188
return diag.FromErr(err)
183189
}

scaleway/resource_object_bucket_test.go

+20-1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ func TestAccScalewayObjectBucket_Basic(t *testing.T) {
4747
resource "scaleway_object_bucket" "ams-bucket" {
4848
name = "%s"
4949
region = "nl-ams"
50+
tags = {
51+
foo = "bar"
52+
baz = "qux"
53+
}
5054
}
5155
5256
resource "scaleway_object_bucket" "par-bucket" {
@@ -62,6 +66,9 @@ func TestAccScalewayObjectBucket_Basic(t *testing.T) {
6266
resource.TestCheckResourceAttr("scaleway_object_bucket.base", "endpoint", fmt.Sprintf("https://%s.s3.%s.scw.cloud", testBucketName, "fr-par")),
6367

6468
resource.TestCheckResourceAttr("scaleway_object_bucket.ams-bucket", "name", testBucketNameAms),
69+
resource.TestCheckResourceAttr("scaleway_object_bucket.ams-bucket", "tags.%", "2"),
70+
resource.TestCheckResourceAttr("scaleway_object_bucket.ams-bucket", "tags.foo", "bar"),
71+
resource.TestCheckResourceAttr("scaleway_object_bucket.ams-bucket", "tags.baz", "qux"),
6572
resource.TestCheckResourceAttr("scaleway_object_bucket.ams-bucket", "endpoint", fmt.Sprintf("https://%s.s3.%s.scw.cloud", testBucketNameAms, "nl-ams")),
6673

6774
resource.TestCheckResourceAttr("scaleway_object_bucket.par-bucket", "name", testBucketNamePar),
@@ -74,11 +81,23 @@ func TestAccScalewayObjectBucket_Basic(t *testing.T) {
7481
name = "%s"
7582
acl = "%s"
7683
}
77-
`, testBucketName, testBucketUpdatedACL),
84+
85+
resource "scaleway_object_bucket" "ams-bucket" {
86+
name = "%s"
87+
region = "nl-ams"
88+
tags = {
89+
foo = "bar"
90+
}
91+
}
92+
`, testBucketName, testBucketUpdatedACL, testBucketNameAms),
7893
Check: resource.ComposeTestCheckFunc(
7994
resource.TestCheckResourceAttr("scaleway_object_bucket.base", "name", testBucketName),
8095
resource.TestCheckResourceAttr("scaleway_object_bucket.base", "acl", testBucketUpdatedACL),
8196
resource.TestCheckResourceAttr("scaleway_object_bucket.base", "tags.%", "0"),
97+
98+
resource.TestCheckResourceAttr("scaleway_object_bucket.ams-bucket", "name", testBucketNameAms),
99+
resource.TestCheckResourceAttr("scaleway_object_bucket.ams-bucket", "tags.%", "1"),
100+
resource.TestCheckResourceAttr("scaleway_object_bucket.ams-bucket", "tags.foo", "bar"),
82101
),
83102
},
84103
},

0 commit comments

Comments
 (0)