Skip to content

Commit

Permalink
Fix FirebaseApp sweepers (GoogleCloudPlatform#7279)
Browse files Browse the repository at this point in the history
* Fix firebase app sweepers

* Fix test override quotes

* Fix delete urls in sweeper
  • Loading branch information
roaks3 authored and ericayyliu committed Jul 26, 2023
1 parent caf3cbf commit 835ecf0
Show file tree
Hide file tree
Showing 13 changed files with 39 additions and 45 deletions.
6 changes: 6 additions & 0 deletions mmv1/products/firebase/terraform.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ overrides: !ruby/object:Overrides::ResourceOverrides
bucket_name: "fb-webapp-"
test_env_vars:
org_id: :ORG_ID
test_vars_overrides:
display_name: '"tf-test Display Name Basic"'
ignore_read_extra:
- project
- deletion_policy
Expand Down Expand Up @@ -83,6 +85,7 @@ overrides: !ruby/object:Overrides::ResourceOverrides
project_id: :PROJECT_NAME
test_vars_overrides:
package_name: '"android.package.app" + randString(t, 4)'
display_name: '"tf-test Display Name Basic"'
ignore_read_extra:
- project
- deletion_policy
Expand Down Expand Up @@ -113,6 +116,8 @@ overrides: !ruby/object:Overrides::ResourceOverrides
test_env_vars:
org_id: :ORG_ID
project_id: :PROJECT_NAME
test_vars_overrides:
display_name: '"tf-test Display Name Basic"'
- !ruby/object:Provider::Terraform::Examples
name: "firebase_apple_app_full"
min_version: "beta"
Expand All @@ -128,6 +133,7 @@ overrides: !ruby/object:Overrides::ResourceOverrides
test_vars_overrides:
app_store_id: "12345"
team_id: "9987654321"
display_name: '"tf-test Display Name Full"'
ignore_read_extra:
- project
- deletion_policy
Expand Down
3 changes: 3 additions & 0 deletions mmv1/products/firebasehosting/terraform.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,11 @@ overrides: !ruby/object:Overrides::ResourceOverrides
primary_resource_id: "full"
vars:
site_id: site-with-app
display_name: "Test web app for Firebase Hosting"
test_env_vars:
project_id: :PROJECT_NAME
test_vars_overrides:
display_name: '"tf-test Test web app for Firebase Hosting"'
Channel: !ruby/object:Overrides::Terraform::ResourceOverride
import_format: ['sites/{{site_id}}/channels/{{channel_id}}']
properties:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
resource "google_firebase_web_app" "default" {
provider = google-beta
project = "<%= ctx[:test_env_vars]['project_id'] %>"
display_name = "Test web app for Firebase Hosting"
display_name = "<%= ctx[:vars]['display_name'] %>"
deletion_policy = "DELETE"
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ func TestAccDataSourceGoogleFirebaseAndroidApp(t *testing.T) {
context := map[string]interface{}{
"project_id": getTestProjectFromEnv(),
"package_name": "android.package.app" + randString(t, 4),
"display_name": "Display Name AndroidApp DataSource",
"display_name": "tf-test Display Name AndroidApp DataSource",
}

resourceName := "data.google_firebase_android_app.my_app"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ func TestAccDataSourceGoogleFirebaseAppleAppConfig(t *testing.T) {
context := map[string]interface{}{
"project_id": getTestProjectFromEnv(),
"bundle_id": "apple.app." + randString(t, 5),
"display_name": "Display Name AppleAppConfig DataSource",
"display_name": "tf-test Display Name AppleAppConfig DataSource",
"app_store_id": 12345,
"team_id": 1234567890,
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ func TestAccDataSourceGoogleFirebaseAppleApp(t *testing.T) {
context := map[string]interface{}{
"project_id": getTestProjectFromEnv(),
"bundle_id": "apple.app." + randString(t, 5),
"display_name": "Display Name AppleApp DataSource",
"display_name": "tf-test Display Name AppleApp DataSource",
"app_store_id": 12345,
"team_id": 1234567890,
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ package google

import (
"context"
"fmt"
"log"
"strings"
"testing"
Expand Down Expand Up @@ -66,7 +67,7 @@ func testSweepFirebaseAndroidApp(region string) error {
return nil
}

resourceList, ok := res["androidApps"]
resourceList, ok := res["apps"]
if !ok {
log.Printf("[INFO][SWEEPER_LOG] Nothing found in response.")
return nil
Expand All @@ -79,31 +80,25 @@ func testSweepFirebaseAndroidApp(region string) error {
nonPrefixCount := 0
for _, ri := range rl {
obj := ri.(map[string]interface{})
if obj["name"] == nil {
if obj["displayName"] == nil {
log.Printf("[INFO][SWEEPER_LOG] %s resource name was nil", resourceName)
return nil
}

name := GetResourceNameFromSelfLink(obj["name"].(string))
// Skip resources that shouldn't be sweeped
if !isSweepableTestResource(name) {
if !isSweepableTestResource(obj["displayName"].(string)) {
nonPrefixCount++
continue
}

deleteTemplate := "https://firebase.googleapis.com/v1beta1/{{name}}:remove"
deleteUrl, err := replaceVars(d, config, deleteTemplate)
if err != nil {
log.Printf("[INFO][SWEEPER_LOG] error preparing delete url: %s", err)
return nil
}
deleteUrl = deleteUrl + name
name := obj["name"].(string)
deleteUrl := fmt.Sprintf("https://firebase.googleapis.com/v1beta1/%s:remove", name)

body := make(map[string]interface{})
body["immediate"] = true

// Don't wait on operations as we may have a lot to delete
_, err = sendRequest(config, "DELETE", config.Project, deleteUrl, config.userAgent, body)
_, err = sendRequest(config, "POST", config.Project, deleteUrl, config.userAgent, body)
if err != nil {
log.Printf("[INFO][SWEEPER_LOG] Error deleting for url %s : %s", deleteUrl, err)
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ func TestAccFirebaseAndroidApp_update(t *testing.T) {
"project_id": getTestProjectFromEnv(),
"package_name": "android.package.app" + randString(t, 4),
"random_suffix": randString(t, 10),
"display_name": "Display Name N",
"display_name": "tf-test Display Name N",
}
vcrTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ package google

import (
"context"
"fmt"
"log"
"strings"
"testing"
Expand Down Expand Up @@ -66,7 +67,7 @@ func testSweepFirebaseAppleApp(region string) error {
return nil
}

resourceList, ok := res["appleApps"]
resourceList, ok := res["apps"]
if !ok {
log.Printf("[INFO][SWEEPER_LOG] Nothing found in response.")
return nil
Expand All @@ -79,31 +80,25 @@ func testSweepFirebaseAppleApp(region string) error {
nonPrefixCount := 0
for _, ri := range rl {
obj := ri.(map[string]interface{})
if obj["name"] == nil {
if obj["displayName"] == nil {
log.Printf("[INFO][SWEEPER_LOG] %s resource name was nil", resourceName)
return nil
}

name := GetResourceNameFromSelfLink(obj["name"].(string))
// Skip resources that shouldn't be sweeped
if !isSweepableTestResource(name) {
if !isSweepableTestResource(obj["displayName"].(string)) {
nonPrefixCount++
continue
}

deleteTemplate := "https://firebase.googleapis.com/v1beta1/projects/{{project}}/iosApps/{{app_id}}:remove"
deleteUrl, err := replaceVars(d, config, deleteTemplate)
if err != nil {
log.Printf("[INFO][SWEEPER_LOG] error preparing delete url: %s", err)
return nil
}
deleteUrl = deleteUrl + name
name := obj["name"].(string)
deleteUrl := fmt.Sprintf("https://firebase.googleapis.com/v1beta1/%s:remove", name)

body := make(map[string]interface{})
body["immediate"] = true

// Don't wait on operations as we may have a lot to delete
_, err = sendRequest(config, "DELETE", config.Project, deleteUrl, config.userAgent, body)
_, err = sendRequest(config, "POST", config.Project, deleteUrl, config.userAgent, body)
if err != nil {
log.Printf("[INFO][SWEEPER_LOG] Error deleting for url %s : %s", deleteUrl, err)
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ func TestAccFirebaseAppleApp_update(t *testing.T) {
"project_id": getTestProjectFromEnv(),
"bundle_id": "apple.app.12345",
"random_suffix": randString(t, 10),
"display_name": "Display Name N",
"display_name": "tf-test Display Name N",
}
vcrTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ func testAccFirebaseHostingSite_firebasehostingSiteBeforeUpdate(context map[stri
resource "google_firebase_web_app" "before" {
provider = google-beta
project = "%{project_id}"
display_name = "Test web app before for Firebase Hosting"
display_name = "tf-test Test web app before for Firebase Hosting"
deletion_policy = "DELETE"
}

Expand All @@ -67,7 +67,7 @@ func testAccFirebaseHostingSite_firebasehostingSiteAfterUpdate(context map[strin
resource "google_firebase_web_app" "after" {
provider = google-beta
project = "%{project_id}"
display_name = "Test web app after for Firebase Hosting"
display_name = "tf-test Test web app after for Firebase Hosting"
deletion_policy = "DELETE"
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ package google

import (
"context"
"fmt"
"log"
"strings"
"testing"
Expand Down Expand Up @@ -66,7 +67,7 @@ func testSweepFirebaseWebApp(region string) error {
return nil
}

resourceList, ok := res["webApps"]
resourceList, ok := res["apps"]
if !ok {
log.Printf("[INFO][SWEEPER_LOG] Nothing found in response.")
return nil
Expand All @@ -79,25 +80,19 @@ func testSweepFirebaseWebApp(region string) error {
nonPrefixCount := 0
for _, ri := range rl {
obj := ri.(map[string]interface{})
if obj["name"] == nil {
if obj["displayName"] == nil {
log.Printf("[INFO][SWEEPER_LOG] %s resource name was nil", resourceName)
return nil
}

name := GetResourceNameFromSelfLink(obj["name"].(string))
// Skip resources that shouldn't be sweeped
if !isSweepableTestResource(name) {
if !isSweepableTestResource(obj["displayName"].(string)) {
nonPrefixCount++
continue
}

deleteTemplate := "https://firebase.googleapis.com/v1beta1/{{name}}:remove"
deleteUrl, err := replaceVars(d, config, deleteTemplate)
if err != nil {
log.Printf("[INFO][SWEEPER_LOG] error preparing delete url: %s", err)
return nil
}
deleteUrl = deleteUrl + name
name := obj["name"].(string)
deleteUrl := fmt.Sprintf("https://firebase.googleapis.com/v1beta1/%s:remove", name)

body := make(map[string]interface{})
body["immediate"] = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func TestAccFirebaseWebApp_firebaseWebAppFull(t *testing.T) {
context := map[string]interface{}{
"org_id": getTestOrgFromEnv(t),
"random_suffix": randString(t, 10),
"display_name": "Display Name N",
"display_name": "tf-test Display Name N",
}

vcrTest(t, resource.TestCase{
Expand Down Expand Up @@ -79,7 +79,7 @@ func TestAccFirebaseWebApp_firebaseWebAppSkipDelete(t *testing.T) {
context := map[string]interface{}{
"project_id": getTestProjectFromEnv(),
"random_suffix": randString(t, 10),
"display_name": "Display Name N",
"display_name": "tf-test Display Name N",
}

vcrTest(t, resource.TestCase{
Expand Down

0 comments on commit 835ecf0

Please sign in to comment.