Skip to content

Commit 25cae10

Browse files
authored
CLOUDP-259895: Audit conversion tests + method refactor (#1678)
* Added auditlog conversion tests and refactored Set method to Update as the endpoind suggests * Redundand tests removed * Method typo fixed
1 parent a8a5f3c commit 25cae10

File tree

6 files changed

+178
-13
lines changed

6 files changed

+178
-13
lines changed

internal/mocks/translation/audit.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import (
77
)
88

99
type AuditLogMock struct {
10-
GetFunc func(projectID string) (*audit.AuditConfig, error)
11-
SetFunc func(projectID string, auditing *audit.AuditConfig) error
10+
GetFunc func(projectID string) (*audit.AuditConfig, error)
11+
UpdateFunc func(projectID string, auditing *audit.AuditConfig) error
1212
}
1313

1414
func (c *AuditLogMock) Get(_ context.Context, projectID string) (*audit.AuditConfig, error) {
1515
return c.GetFunc(projectID)
1616
}
17-
func (c *AuditLogMock) Set(_ context.Context, projectID string, auditing *audit.AuditConfig) error {
18-
return c.SetFunc(projectID, auditing)
17+
func (c *AuditLogMock) Update(_ context.Context, projectID string, auditing *audit.AuditConfig) error {
18+
return c.UpdateFunc(projectID, auditing)
1919
}

internal/translation/audit/audit.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
// the Atlas AuditLog
1212
type AuditLogService interface {
1313
Get(ctx context.Context, projectID string) (*AuditConfig, error)
14-
Set(ctx context.Context, projectID string, auditing *AuditConfig) error
14+
Update(ctx context.Context, projectID string, auditing *AuditConfig) error
1515
}
1616

1717
// AuditLog is the default implementation of the AuditLogService using the Atlas SDK
@@ -34,8 +34,8 @@ func (s *AuditLog) Get(ctx context.Context, projectID string) (*AuditConfig, err
3434
return fromAtlas(auditLog), nil
3535
}
3636

37-
// Set an Atlas Project audit log configuration
38-
func (s *AuditLog) Set(ctx context.Context, projectID string, auditing *AuditConfig) error {
37+
// Update an Atlas Project audit log configuration
38+
func (s *AuditLog) Update(ctx context.Context, projectID string, auditing *AuditConfig) error {
3939
_, _, err := s.auditAPI.UpdateAuditingConfiguration(ctx, projectID, toAtlas(auditing)).Execute()
4040
return err
4141
}
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
package audit
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
8+
akov2 "github.com/mongodb/mongodb-atlas-kubernetes/v2/pkg/api/v1"
9+
)
10+
11+
func TestNewAuditConfig(t *testing.T) {
12+
testCases := []struct {
13+
title string
14+
input *akov2.Auditing
15+
expectedOutput *AuditConfig
16+
}{
17+
{
18+
title: "Just enabled",
19+
input: &akov2.Auditing{
20+
Enabled: true,
21+
},
22+
expectedOutput: &AuditConfig{
23+
&akov2.Auditing{
24+
Enabled: true,
25+
AuditFilter: `{}`,
26+
},
27+
},
28+
},
29+
{
30+
title: "Auth success logs as well",
31+
input: &akov2.Auditing{
32+
Enabled: true,
33+
AuditAuthorizationSuccess: true,
34+
},
35+
expectedOutput: &AuditConfig{
36+
&akov2.Auditing{
37+
Enabled: true,
38+
AuditAuthorizationSuccess: true,
39+
AuditFilter: `{}`,
40+
},
41+
},
42+
},
43+
{
44+
title: "With a filter",
45+
input: &akov2.Auditing{
46+
Enabled: true,
47+
AuditFilter: `{"atype":"authenticate"}`,
48+
},
49+
expectedOutput: &AuditConfig{
50+
&akov2.Auditing{
51+
Enabled: true,
52+
AuditFilter: `{"atype":"authenticate"}`,
53+
},
54+
},
55+
},
56+
{
57+
title: "With a filter and success logs",
58+
input: &akov2.Auditing{
59+
Enabled: true,
60+
AuditAuthorizationSuccess: true,
61+
AuditFilter: `{"atype":"authenticate"}`,
62+
},
63+
expectedOutput: &AuditConfig{
64+
&akov2.Auditing{
65+
Enabled: true,
66+
AuditAuthorizationSuccess: true,
67+
AuditFilter: `{"atype":"authenticate"}`,
68+
},
69+
},
70+
},
71+
{
72+
title: "All set but disabled",
73+
input: &akov2.Auditing{
74+
AuditAuthorizationSuccess: true,
75+
AuditFilter: `{"atype":"authenticate"}`,
76+
},
77+
expectedOutput: &AuditConfig{
78+
&akov2.Auditing{
79+
AuditAuthorizationSuccess: true,
80+
AuditFilter: `{"atype":"authenticate"}`,
81+
},
82+
},
83+
},
84+
{
85+
title: "Default (disabled) case",
86+
input: &akov2.Auditing{},
87+
expectedOutput: &AuditConfig{
88+
&akov2.Auditing{
89+
AuditFilter: `{}`,
90+
},
91+
},
92+
},
93+
}
94+
for _, tc := range testCases {
95+
t.Run(tc.title, func(t *testing.T) {
96+
actualResult := NewAuditConfig(tc.input)
97+
assert.Equal(t, tc.expectedOutput, actualResult)
98+
})
99+
}
100+
}
101+
102+
func TestConversion(t *testing.T) {
103+
testCases := []struct {
104+
title string
105+
internalSide *AuditConfig
106+
}{
107+
{
108+
title: "Just enabled",
109+
internalSide: NewAuditConfig(
110+
&akov2.Auditing{
111+
Enabled: true,
112+
},
113+
),
114+
},
115+
{
116+
title: "Auth success logs as well",
117+
internalSide: NewAuditConfig(
118+
&akov2.Auditing{
119+
Enabled: true,
120+
AuditAuthorizationSuccess: true,
121+
},
122+
),
123+
},
124+
{
125+
title: "With a filter",
126+
internalSide: NewAuditConfig(
127+
&akov2.Auditing{
128+
Enabled: true,
129+
AuditFilter: `{"atype":"authenticate"}`,
130+
},
131+
),
132+
},
133+
{
134+
title: "With a filter and success logs",
135+
internalSide: NewAuditConfig(
136+
&akov2.Auditing{
137+
Enabled: true,
138+
AuditAuthorizationSuccess: true,
139+
AuditFilter: `{"atype":"authenticate"}`,
140+
},
141+
),
142+
},
143+
{
144+
title: "All set but disabled",
145+
internalSide: NewAuditConfig(
146+
&akov2.Auditing{
147+
AuditAuthorizationSuccess: true,
148+
AuditFilter: `{"atype":"authenticate"}`,
149+
},
150+
),
151+
},
152+
{
153+
title: "Default (disabled) case",
154+
internalSide: NewAuditConfig(
155+
&akov2.Auditing{},
156+
),
157+
},
158+
}
159+
for _, tc := range testCases {
160+
t.Run(tc.title, func(t *testing.T) {
161+
actualResult := fromAtlas(toAtlas(tc.internalSide))
162+
assert.Equal(t, tc.internalSide, actualResult)
163+
})
164+
}
165+
}

pkg/controller/atlasproject/auditing.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func (a *auditController) reconcile() workflow.Result {
3838

3939
// configure update Atlas with new audit log configuration
4040
func (a *auditController) configure(auditConfig *audit.AuditConfig, isUnset bool) workflow.Result {
41-
err := a.service.Set(a.ctx.Context, a.project.ID(), auditConfig)
41+
err := a.service.Update(a.ctx.Context, a.project.ID(), auditConfig)
4242
if err != nil {
4343
return a.terminate(workflow.ProjectAuditingReady, err)
4444
}

pkg/controller/atlasproject/auditing_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func TestAuditController_reconcile(t *testing.T) {
6464
Auditing: &akov2.Auditing{},
6565
}, nil
6666
},
67-
SetFunc: func(projectID string, auditing *audit.AuditConfig) error {
67+
UpdateFunc: func(projectID string, auditing *audit.AuditConfig) error {
6868
return errors.New("failed to set audit log config")
6969
},
7070
},
@@ -85,7 +85,7 @@ func TestAuditController_reconcile(t *testing.T) {
8585
Auditing: &akov2.Auditing{},
8686
}, nil
8787
},
88-
SetFunc: func(projectID string, auditing *audit.AuditConfig) error {
88+
UpdateFunc: func(projectID string, auditing *audit.AuditConfig) error {
8989
return nil
9090
},
9191
},
@@ -123,7 +123,7 @@ func TestAuditController_reconcile(t *testing.T) {
123123
Auditing: &akov2.Auditing{},
124124
}, nil
125125
},
126-
SetFunc: func(projectID string, auditing *audit.AuditConfig) error {
126+
UpdateFunc: func(projectID string, auditing *audit.AuditConfig) error {
127127
return nil
128128
},
129129
},
@@ -139,7 +139,7 @@ func TestAuditController_reconcile(t *testing.T) {
139139
},
140140
}, nil
141141
},
142-
SetFunc: func(projectID string, auditing *audit.AuditConfig) error {
142+
UpdateFunc: func(projectID string, auditing *audit.AuditConfig) error {
143143
return nil
144144
},
145145
},

test/contract/audit/audit_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ func TestSyncs(t *testing.T) {
117117

118118
for _, tc := range testCases {
119119
t.Run(tc.title, func(t *testing.T) {
120-
err := as.Set(ctx, testProjectID, tc.auditing)
120+
err := as.Update(ctx, testProjectID, tc.auditing)
121121
require.NoError(t, err)
122122

123123
result, err := as.Get(ctx, testProjectID)

0 commit comments

Comments
 (0)