Skip to content

Commit 1d6219c

Browse files
Properly encode paths for google_storage_object_access_control (#4946) (#3407)
* Added slashes into testAclObjectName This gives a failing test that reproduces the issue * Added % to the places that need it * Run update tests with and without slashes Signed-off-by: Modular Magician <[email protected]>
1 parent a4adca1 commit 1d6219c

File tree

4 files changed

+49
-7
lines changed

4 files changed

+49
-7
lines changed

.changelog/4946.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
storage: fixed handling of object paths that contain slashes for `google_storage_object_access_control`
3+
```

google-beta/resource_storage_object_access_control.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ func resourceStorageObjectAccessControlCreate(d *schema.ResourceData, meta inter
158158
mutexKV.Lock(lockName)
159159
defer mutexKV.Unlock(lockName)
160160

161-
url, err := replaceVars(d, config, "{{StorageBasePath}}b/{{bucket}}/o/{{object}}/acl")
161+
url, err := replaceVars(d, config, "{{StorageBasePath}}b/{{bucket}}/o/{{%object}}/acl")
162162
if err != nil {
163163
return err
164164
}
@@ -195,7 +195,7 @@ func resourceStorageObjectAccessControlRead(d *schema.ResourceData, meta interfa
195195
return err
196196
}
197197

198-
url, err := replaceVars(d, config, "{{StorageBasePath}}b/{{bucket}}/o/{{object}}/acl/{{entity}}")
198+
url, err := replaceVars(d, config, "{{StorageBasePath}}b/{{bucket}}/o/{{%object}}/acl/{{entity}}")
199199
if err != nil {
200200
return err
201201
}
@@ -285,7 +285,7 @@ func resourceStorageObjectAccessControlUpdate(d *schema.ResourceData, meta inter
285285
mutexKV.Lock(lockName)
286286
defer mutexKV.Unlock(lockName)
287287

288-
url, err := replaceVars(d, config, "{{StorageBasePath}}b/{{bucket}}/o/{{object}}/acl/{{entity}}")
288+
url, err := replaceVars(d, config, "{{StorageBasePath}}b/{{bucket}}/o/{{%object}}/acl/{{entity}}")
289289
if err != nil {
290290
return err
291291
}
@@ -324,7 +324,7 @@ func resourceStorageObjectAccessControlDelete(d *schema.ResourceData, meta inter
324324
mutexKV.Lock(lockName)
325325
defer mutexKV.Unlock(lockName)
326326

327-
url, err := replaceVars(d, config, "{{StorageBasePath}}b/{{bucket}}/o/{{object}}/acl/{{entity}}")
327+
url, err := replaceVars(d, config, "{{StorageBasePath}}b/{{bucket}}/o/{{%object}}/acl/{{entity}}")
328328
if err != nil {
329329
return err
330330
}
@@ -349,7 +349,7 @@ func resourceStorageObjectAccessControlDelete(d *schema.ResourceData, meta inter
349349
func resourceStorageObjectAccessControlImport(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
350350
config := meta.(*Config)
351351
if err := parseImportId([]string{
352-
"(?P<bucket>[^/]+)/(?P<object>[^/]+)/(?P<entity>[^/]+)",
352+
"(?P<bucket>[^/]+)/(?P<object>.+)/(?P<entity>[^/]+)",
353353
}, d, config); err != nil {
354354
return nil, err
355355
}

google-beta/resource_storage_object_access_control_generated_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func testAccCheckStorageObjectAccessControlDestroyProducer(t *testing.T) func(s
8181

8282
config := googleProviderConfig(t)
8383

84-
url, err := replaceVarsForTest(config, rs, "{{StorageBasePath}}b/{{bucket}}/o/{{object}}/acl/{{entity}}")
84+
url, err := replaceVarsForTest(config, rs, "{{StorageBasePath}}b/{{bucket}}/o/{{%object}}/acl/{{entity}}")
8585
if err != nil {
8686
return err
8787
}

google-beta/resource_storage_object_access_control_test.go

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,46 @@ func TestAccStorageObjectAccessControl_update(t *testing.T) {
1212
t.Parallel()
1313

1414
bucketName := testBucketName(t)
15-
objectName := testAclObjectName(t)
15+
objectName := fmt.Sprintf("%s-%d", "tf-test-acl-object", randInt(t))
16+
objectData := []byte("data data data")
17+
if err := ioutil.WriteFile(tfObjectAcl.Name(), objectData, 0644); err != nil {
18+
t.Errorf("error writing file: %v", err)
19+
}
20+
vcrTest(t, resource.TestCase{
21+
PreCheck: func() {
22+
if errObjectAcl != nil {
23+
panic(errObjectAcl)
24+
}
25+
testAccPreCheck(t)
26+
},
27+
Providers: testAccProviders,
28+
CheckDestroy: testAccCheckStorageObjectAccessControlDestroyProducer(t),
29+
Steps: []resource.TestStep{
30+
{
31+
Config: testGoogleStorageObjectAccessControlBasic(bucketName, objectName, "READER", "allUsers"),
32+
},
33+
{
34+
ResourceName: "google_storage_object_access_control.default",
35+
ImportState: true,
36+
ImportStateVerify: true,
37+
},
38+
{
39+
Config: testGoogleStorageObjectAccessControlBasic(bucketName, objectName, "OWNER", "allUsers"),
40+
},
41+
{
42+
ResourceName: "google_storage_object_access_control.default",
43+
ImportState: true,
44+
ImportStateVerify: true,
45+
},
46+
},
47+
})
48+
}
49+
50+
func TestAccStorageObjectAccessControl_updateWithSlashes(t *testing.T) {
51+
t.Parallel()
52+
53+
bucketName := testBucketName(t)
54+
objectName := fmt.Sprintf("%s-%d", "tf-test/acl/object", randInt(t))
1655
objectData := []byte("data data data")
1756
if err := ioutil.WriteFile(tfObjectAcl.Name(), objectData, 0644); err != nil {
1857
t.Errorf("error writing file: %v", err)

0 commit comments

Comments
 (0)