Skip to content

Commit a05d50a

Browse files
authored
fix: Fixes JSON comparison in audit_filter field in mongodbatlas_auditing (#3302)
* diff supress * changelog entry * test * use var * remove explicit check and skip mig test
1 parent 8e4767f commit a05d50a

File tree

4 files changed

+33
-10
lines changed

4 files changed

+33
-10
lines changed

.changelog/3302.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
resource/mongodbatlas_auditing: Fixes JSON comparison in `audit_filter` field
3+
```

internal/service/auditing/resource_auditing.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
99
"github.com/mongodb/terraform-provider-mongodbatlas/internal/common/conversion"
10+
"github.com/mongodb/terraform-provider-mongodbatlas/internal/common/schemafunc"
1011
"github.com/mongodb/terraform-provider-mongodbatlas/internal/common/validate"
1112
"github.com/mongodb/terraform-provider-mongodbatlas/internal/config"
1213
"go.mongodb.org/atlas-sdk/v20250312002/admin"
@@ -40,9 +41,10 @@ func Resource() *schema.Resource {
4041
Computed: true,
4142
},
4243
"audit_filter": {
43-
Type: schema.TypeString,
44-
Optional: true,
45-
Computed: true,
44+
Type: schema.TypeString,
45+
Optional: true,
46+
Computed: true,
47+
DiffSuppressFunc: diffSuppressJSON,
4648
},
4749
"enabled": {
4850
Type: schema.TypeBool,
@@ -150,3 +152,7 @@ func resourceDelete(ctx context.Context, d *schema.ResourceData, meta any) diag.
150152
d.SetId("")
151153
return nil
152154
}
155+
156+
func diffSuppressJSON(k, old, newStr string, d *schema.ResourceData) bool {
157+
return schemafunc.EqualJSON(old, newStr, "audit_filter")
158+
}

internal/service/auditing/resource_auditing_migration_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
)
1010

1111
func TestMigGenericAuditing_basic(t *testing.T) {
12+
mig.SkipIfVersionBelow(t, "1.34.0") // Version where JSON comparison in audit_filter field in mongodbatlas_auditing was fixed
1213
var (
1314
projectID = acc.ProjectIDExecution(t)
1415
auditFilter = "{ 'atype': 'authenticate', 'param': { 'user': 'auditAdmin', 'db': 'admin', 'mechanism': 'SCRAM-SHA-1' }}"

internal/service/auditing/resource_auditing_test.go

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,22 @@ import (
1212
)
1313

1414
const (
15-
resourceName = "mongodbatlas_auditing.test"
16-
dataSourceName = "data.mongodbatlas_auditing.test"
15+
resourceName = "mongodbatlas_auditing.test"
16+
dataSourceName = "data.mongodbatlas_auditing.test"
17+
emptyAuditFilter = "{}"
1718
)
1819

1920
func TestAccGenericAuditing_basic(t *testing.T) {
2021
var (
2122
projectID = acc.ProjectIDExecution(t)
22-
auditFilter = "{ 'atype': 'authenticate', 'param': { 'user': 'auditAdmin', 'db': 'admin', 'mechanism': 'SCRAM-SHA-1' }}"
23+
auditFilter = `{
24+
"param": {
25+
"mechanism": "SCRAM-SHA-1",
26+
"db": "admin",
27+
"user": "auditAdmin"
28+
},
29+
"atype": "authenticate"
30+
}`
2331
)
2432

2533
// Serial so it doesn't conflict with TestMigGenericAuditing_basic
@@ -33,8 +41,8 @@ func TestAccGenericAuditing_basic(t *testing.T) {
3341
Check: resource.ComposeAggregateTestCheckFunc(checks(auditFilter, true, true)...),
3442
},
3543
{
36-
Config: configBasic(projectID, "{}", false, false),
37-
Check: resource.ComposeAggregateTestCheckFunc(checks("{}", false, false)...),
44+
Config: configBasic(projectID, emptyAuditFilter, false, false),
45+
Check: resource.ComposeAggregateTestCheckFunc(checks(emptyAuditFilter, false, false)...),
3846
},
3947
{
4048
ResourceName: resourceName,
@@ -89,18 +97,23 @@ func importStateIDFunc(resourceName string) resource.ImportStateIdFunc {
8997
}
9098

9199
func configBasic(projectID, auditFilter string, auditAuth, enabled bool) string {
100+
filterValue := fmt.Sprintf("%q", auditFilter)
101+
if auditFilter != emptyAuditFilter {
102+
filterValue = fmt.Sprintf("<<EOF\n%s\nEOF", auditFilter)
103+
}
104+
92105
return fmt.Sprintf(`
93106
resource "mongodbatlas_auditing" "test" {
94107
project_id = %[1]q
95-
audit_filter = %[2]q
108+
audit_filter = %[2]s
96109
audit_authorization_success = %[3]t
97110
enabled = %[4]t
98111
}
99112
100113
data "mongodbatlas_auditing" "test" {
101114
project_id = mongodbatlas_auditing.test.id
102115
}
103-
`, projectID, auditFilter, auditAuth, enabled)
116+
`, projectID, filterValue, auditAuth, enabled)
104117
}
105118

106119
func checks(auditFilter string, auditAuth, enabled bool) []resource.TestCheckFunc {

0 commit comments

Comments
 (0)