Skip to content

Commit 95de561

Browse files
committed
feat: replace audit trail verification with direct snapshot check for MongoDB action
1 parent 62d00e4 commit 95de561

File tree

1 file changed

+39
-27
lines changed

1 file changed

+39
-27
lines changed

internal/services/mongodb/action_instance_snapshot_action_test.go

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package mongodb_test
22

33
import (
4-
"errors"
5-
"strings"
4+
"context"
5+
"fmt"
66
"testing"
77

88
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
99
"github.com/hashicorp/terraform-plugin-testing/terraform"
10+
mongodbSDK "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1"
11+
"github.com/scaleway/scaleway-sdk-go/scw"
1012
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
13+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional"
1114
)
1215

1316
func TestAccActionMongoDBInstanceSnapshot_Basic(t *testing.T) {
@@ -75,35 +78,44 @@ func TestAccActionMongoDBInstanceSnapshot_Basic(t *testing.T) {
7578
wait = true
7679
}
7780
}
78-
79-
data "scaleway_audit_trail_event" "mongodb" {
80-
resource_type = "mongodb_instance"
81-
resource_id = scaleway_mongodb_instance.main.id
82-
method_name = "CreateSnapshot"
83-
}
8481
`,
8582
Check: resource.ComposeTestCheckFunc(
86-
resource.TestCheckResourceAttrSet("data.scaleway_audit_trail_event.mongodb", "events.#"),
87-
func(state *terraform.State) error {
88-
rs, ok := state.RootModule().Resources["data.scaleway_audit_trail_event.mongodb"]
89-
if !ok {
90-
return errors.New("not found: data.scaleway_audit_trail_event.mongodb")
91-
}
92-
93-
for key, value := range rs.Primary.Attributes {
94-
if !strings.Contains(key, "request_body") {
95-
continue
96-
}
97-
98-
if strings.Contains(value, "tf-acc-mongodb-instance-snapshot-action") {
99-
return nil
100-
}
101-
}
102-
103-
return errors.New("did not find the CreateSnapshot event")
104-
},
83+
isSnapshotCreated(tt, "scaleway_mongodb_instance.main", "tf-acc-mongodb-instance-snapshot-action"),
10584
),
10685
},
10786
},
10887
})
10988
}
89+
90+
func isSnapshotCreated(tt *acctest.TestTools, instanceResourceName, snapshotName string) resource.TestCheckFunc {
91+
return func(state *terraform.State) error {
92+
rs, ok := state.RootModule().Resources[instanceResourceName]
93+
if !ok {
94+
return fmt.Errorf("resource not found: %s", instanceResourceName)
95+
}
96+
97+
instanceID := rs.Primary.ID
98+
region, id, err := regional.ParseID(instanceID)
99+
if err != nil {
100+
return fmt.Errorf("failed to parse instance ID: %w", err)
101+
}
102+
103+
api := mongodbSDK.NewAPI(tt.Meta.ScwClient())
104+
105+
snapshots, err := api.ListSnapshots(&mongodbSDK.ListSnapshotsRequest{
106+
Region: region,
107+
InstanceID: &id,
108+
}, scw.WithAllPages(), scw.WithContext(context.Background()))
109+
if err != nil {
110+
return fmt.Errorf("failed to list snapshots: %w", err)
111+
}
112+
113+
for _, snapshot := range snapshots.Snapshots {
114+
if snapshot.Name == snapshotName {
115+
return nil
116+
}
117+
}
118+
119+
return fmt.Errorf("snapshot with name %q not found for instance %s", snapshotName, instanceID)
120+
}
121+
}

0 commit comments

Comments
 (0)