@@ -29,7 +29,7 @@ import (
2929 transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
3030)
3131
32- func TestAccFirebaserulesRelease_BasicRelease (t * testing.T ) {
32+ func TestAccFirebaserulesRelease_FirestoreReleaseHandWritten (t * testing.T ) {
3333 t .Parallel ()
3434
3535 context := map [string ]interface {}{
@@ -43,15 +43,15 @@ func TestAccFirebaserulesRelease_BasicRelease(t *testing.T) {
4343 CheckDestroy : testAccCheckFirebaserulesReleaseDestroyProducer (t ),
4444 Steps : []resource.TestStep {
4545 {
46- Config : testAccFirebaserulesRelease_BasicRelease (context ),
46+ Config : testAccFirebaserulesRelease_FirestoreReleaseHandWritten (context ),
4747 },
4848 {
4949 ResourceName : "google_firebaserules_release.primary" ,
5050 ImportState : true ,
5151 ImportStateVerify : true ,
5252 },
5353 {
54- Config : testAccFirebaserulesRelease_BasicReleaseUpdate0 (context ),
54+ Config : testAccFirebaserulesRelease_FirestoreReleaseHandWrittenUpdate0 (context ),
5555 },
5656 {
5757 ResourceName : "google_firebaserules_release.primary" ,
@@ -61,11 +61,12 @@ func TestAccFirebaserulesRelease_BasicRelease(t *testing.T) {
6161 },
6262 })
6363}
64- func TestAccFirebaserulesRelease_MinimalRelease (t * testing.T ) {
64+ func TestAccFirebaserulesRelease_StorageReleaseHandWritten (t * testing.T ) {
6565 t .Parallel ()
6666
6767 context := map [string ]interface {}{
6868 "project_name" : acctest .GetTestProjectFromEnv (),
69+ "region" : acctest .GetTestRegionFromEnv (),
6970 "random_suffix" : RandString (t , 10 ),
7071 }
7172
@@ -75,7 +76,7 @@ func TestAccFirebaserulesRelease_MinimalRelease(t *testing.T) {
7576 CheckDestroy : testAccCheckFirebaserulesReleaseDestroyProducer (t ),
7677 Steps : []resource.TestStep {
7778 {
78- Config : testAccFirebaserulesRelease_MinimalRelease (context ),
79+ Config : testAccFirebaserulesRelease_StorageReleaseHandWritten (context ),
7980 },
8081 {
8182 ResourceName : "google_firebaserules_release.primary" ,
@@ -86,29 +87,21 @@ func TestAccFirebaserulesRelease_MinimalRelease(t *testing.T) {
8687 })
8788}
8889
89- func testAccFirebaserulesRelease_BasicRelease (context map [string ]interface {}) string {
90+ func testAccFirebaserulesRelease_FirestoreReleaseHandWritten (context map [string ]interface {}) string {
9091 return Nprintf (`
9192resource "google_firebaserules_release" "primary" {
92- name = "tf-test-release%{random_suffix} "
93- ruleset_name = "projects/%{project_name}/rulesets/${google_firebaserules_ruleset.basic .name}"
93+ name = "cloud.firestore "
94+ ruleset_name = "projects/%{project_name}/rulesets/${google_firebaserules_ruleset.firestore .name}"
9495 project = "%{project_name}"
95- }
96-
97- resource "google_firebaserules_ruleset" "basic" {
98- source {
99- files {
100- content = "service cloud.firestore {match /databases/{database}/documents { match /{document=**} { allow read, write: if false; } } }"
101- name = "firestore.rules"
102- fingerprint = ""
103- }
10496
105- language = ""
97+ lifecycle {
98+ replace_triggered_by = [
99+ google_firebaserules_ruleset.firestore
100+ ]
106101 }
107-
108- project = "%{project_name}"
109102}
110103
111- resource "google_firebaserules_ruleset" "minimal " {
104+ resource "google_firebaserules_ruleset" "firestore " {
112105 source {
113106 files {
114107 content = "service cloud.firestore {match /databases/{database}/documents { match /{document=**} { allow read, write: if false; } } }"
@@ -119,67 +112,79 @@ resource "google_firebaserules_ruleset" "minimal" {
119112 project = "%{project_name}"
120113}
121114
122-
123115` , context )
124116}
125117
126- func testAccFirebaserulesRelease_BasicReleaseUpdate0 (context map [string ]interface {}) string {
118+ func testAccFirebaserulesRelease_FirestoreReleaseHandWrittenUpdate0 (context map [string ]interface {}) string {
127119 return Nprintf (`
128120resource "google_firebaserules_release" "primary" {
129- name = "tf-test-release%{random_suffix} "
130- ruleset_name = "projects/%{project_name}/rulesets/${google_firebaserules_ruleset.minimal .name}"
121+ name = "cloud.firestore "
122+ ruleset_name = "projects/%{project_name}/rulesets/${google_firebaserules_ruleset.firestore .name}"
131123 project = "%{project_name}"
132- }
133124
134- resource "google_firebaserules_ruleset" "basic" {
135- source {
136- files {
137- content = "service cloud.firestore {match /databases/{database}/documents { match /{document=**} { allow read, write: if false; } } }"
138- name = "firestore.rules"
139- fingerprint = ""
140- }
141-
142- language = ""
125+ lifecycle {
126+ replace_triggered_by = [
127+ google_firebaserules_ruleset.firestore
128+ ]
143129 }
144-
145- project = "%{project_name}"
146130}
147131
148- resource "google_firebaserules_ruleset" "minimal " {
132+ resource "google_firebaserules_ruleset" "firestore " {
149133 source {
150134 files {
151- content = "service cloud.firestore {match /databases/{database}/documents { match /{document=**} { allow read, write: if false ; } } }"
135+ content = "service cloud.firestore {match /databases/{database}/documents { match /{document=**} { allow read, write: if request.auth != null ; } } }"
152136 name = "firestore.rules"
153137 }
154138 }
155139
156140 project = "%{project_name}"
157141}
158142
159-
160143` , context )
161144}
162145
163- func testAccFirebaserulesRelease_MinimalRelease (context map [string ]interface {}) string {
146+ func testAccFirebaserulesRelease_StorageReleaseHandWritten (context map [string ]interface {}) string {
164147 return Nprintf (`
165148resource "google_firebaserules_release" "primary" {
166- name = "prod/tf-test-release%{random_suffix }"
167- ruleset_name = "projects/%{project_name}/rulesets/${google_firebaserules_ruleset.minimal .name}"
149+ name = "firebase.storage/${google_storage_bucket.bucket.name }"
150+ ruleset_name = "projects/%{project_name}/rulesets/${google_firebaserules_ruleset.storage .name}"
168151 project = "%{project_name}"
152+
153+ lifecycle {
154+ replace_triggered_by = [
155+ google_firebaserules_ruleset.storage
156+ ]
157+ }
158+ }
159+
160+ # Provision a non-default Cloud Storage bucket.
161+ resource "google_storage_bucket" "bucket" {
162+ project = "%{project_name}"
163+ name = "tf-test-bucket%{random_suffix}"
164+ location = "%{region}"
169165}
170166
171- resource "google_firebaserules_ruleset" "minimal" {
167+ # Make the Storage bucket accessible for Firebase SDKs, authentication, and Firebase Security Rules.
168+ resource "google_firebase_storage_bucket" "bucket" {
169+ project = "%{project_name}"
170+ bucket_id = google_storage_bucket.bucket.name
171+ }
172+
173+ # Create a ruleset of Firebase Security Rules from a local file.
174+ resource "google_firebaserules_ruleset" "storage" {
175+ project = "%{project_name}"
172176 source {
173177 files {
174- content = "service cloud.firestore {match /databases/{database}/documents { match /{document=**} { allow read, write: if false; } } } "
175- name = "firestore.rules "
178+ name = "storage.rules "
179+ content = "service firebase.storage {match /b/{bucket}/o {match /{allPaths=**} {allow read, write: if request.auth != null;}}} "
176180 }
177181 }
178182
179- project = "%{project_name}"
183+ depends_on = [
184+ google_firebase_storage_bucket.bucket
185+ ]
180186}
181187
182-
183188` , context )
184189}
185190
0 commit comments