Skip to content

Commit 48918d5

Browse files
committed
test(dbauthz): migrate TestConnectionLogs to mocked db\n\n- Convert connection log tests to s.Mocked\n- Add gomock expectations (authorized and non-authorized paths)\n\nCo-authored-by: hugodutka <28019628+hugodutka@users.noreply.github.com>
1 parent e926292 commit 48918d5

File tree

1 file changed

+27
-101
lines changed

1 file changed

+27
-101
lines changed

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 27 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -315,107 +315,33 @@ func (s *MethodTestSuite) TestAuditLogs() {
315315
}
316316

317317
func (s *MethodTestSuite) TestConnectionLogs() {
318-
createWorkspace := func(t *testing.T, db database.Store) database.WorkspaceTable {
319-
u := dbgen.User(s.T(), db, database.User{})
320-
o := dbgen.Organization(s.T(), db, database.Organization{})
321-
tpl := dbgen.Template(s.T(), db, database.Template{
322-
OrganizationID: o.ID,
323-
CreatedBy: u.ID,
324-
})
325-
return dbgen.Workspace(s.T(), db, database.WorkspaceTable{
326-
ID: uuid.New(),
327-
OwnerID: u.ID,
328-
OrganizationID: o.ID,
329-
AutomaticUpdates: database.AutomaticUpdatesNever,
330-
TemplateID: tpl.ID,
331-
})
332-
}
333-
s.Run("UpsertConnectionLog", s.Subtest(func(db database.Store, check *expects) {
334-
ws := createWorkspace(s.T(), db)
335-
check.Args(database.UpsertConnectionLogParams{
336-
Ip: defaultIPAddress(),
337-
Type: database.ConnectionTypeSsh,
338-
WorkspaceID: ws.ID,
339-
OrganizationID: ws.OrganizationID,
340-
ConnectionStatus: database.ConnectionStatusConnected,
341-
WorkspaceOwnerID: ws.OwnerID,
342-
}).Asserts(rbac.ResourceConnectionLog, policy.ActionUpdate)
343-
}))
344-
s.Run("GetConnectionLogsOffset", s.Subtest(func(db database.Store, check *expects) {
345-
ws := createWorkspace(s.T(), db)
346-
_ = dbgen.ConnectionLog(s.T(), db, database.UpsertConnectionLogParams{
347-
Ip: defaultIPAddress(),
348-
Type: database.ConnectionTypeSsh,
349-
WorkspaceID: ws.ID,
350-
OrganizationID: ws.OrganizationID,
351-
WorkspaceOwnerID: ws.OwnerID,
352-
})
353-
_ = dbgen.ConnectionLog(s.T(), db, database.UpsertConnectionLogParams{
354-
Ip: defaultIPAddress(),
355-
Type: database.ConnectionTypeSsh,
356-
WorkspaceID: ws.ID,
357-
OrganizationID: ws.OrganizationID,
358-
WorkspaceOwnerID: ws.OwnerID,
359-
})
360-
check.Args(database.GetConnectionLogsOffsetParams{
361-
LimitOpt: 10,
362-
}).Asserts(rbac.ResourceConnectionLog, policy.ActionRead).WithNotAuthorized("nil")
363-
}))
364-
s.Run("GetAuthorizedConnectionLogsOffset", s.Subtest(func(db database.Store, check *expects) {
365-
ws := createWorkspace(s.T(), db)
366-
_ = dbgen.ConnectionLog(s.T(), db, database.UpsertConnectionLogParams{
367-
Ip: defaultIPAddress(),
368-
Type: database.ConnectionTypeSsh,
369-
WorkspaceID: ws.ID,
370-
OrganizationID: ws.OrganizationID,
371-
WorkspaceOwnerID: ws.OwnerID,
372-
})
373-
_ = dbgen.ConnectionLog(s.T(), db, database.UpsertConnectionLogParams{
374-
Ip: defaultIPAddress(),
375-
Type: database.ConnectionTypeSsh,
376-
WorkspaceID: ws.ID,
377-
OrganizationID: ws.OrganizationID,
378-
WorkspaceOwnerID: ws.OwnerID,
379-
})
380-
check.Args(database.GetConnectionLogsOffsetParams{
381-
LimitOpt: 10,
382-
}, emptyPreparedAuthorized{}).Asserts(rbac.ResourceConnectionLog, policy.ActionRead)
383-
}))
384-
s.Run("CountConnectionLogs", s.Subtest(func(db database.Store, check *expects) {
385-
ws := createWorkspace(s.T(), db)
386-
_ = dbgen.ConnectionLog(s.T(), db, database.UpsertConnectionLogParams{
387-
Type: database.ConnectionTypeSsh,
388-
WorkspaceID: ws.ID,
389-
OrganizationID: ws.OrganizationID,
390-
WorkspaceOwnerID: ws.OwnerID,
391-
})
392-
_ = dbgen.ConnectionLog(s.T(), db, database.UpsertConnectionLogParams{
393-
Type: database.ConnectionTypeSsh,
394-
WorkspaceID: ws.ID,
395-
OrganizationID: ws.OrganizationID,
396-
WorkspaceOwnerID: ws.OwnerID,
397-
})
398-
check.Args(database.CountConnectionLogsParams{}).Asserts(
399-
rbac.ResourceConnectionLog, policy.ActionRead,
400-
).WithNotAuthorized("nil")
401-
}))
402-
s.Run("CountAuthorizedConnectionLogs", s.Subtest(func(db database.Store, check *expects) {
403-
ws := createWorkspace(s.T(), db)
404-
_ = dbgen.ConnectionLog(s.T(), db, database.UpsertConnectionLogParams{
405-
Type: database.ConnectionTypeSsh,
406-
WorkspaceID: ws.ID,
407-
OrganizationID: ws.OrganizationID,
408-
WorkspaceOwnerID: ws.OwnerID,
409-
})
410-
_ = dbgen.ConnectionLog(s.T(), db, database.UpsertConnectionLogParams{
411-
Type: database.ConnectionTypeSsh,
412-
WorkspaceID: ws.ID,
413-
OrganizationID: ws.OrganizationID,
414-
WorkspaceOwnerID: ws.OwnerID,
415-
})
416-
check.Args(database.CountConnectionLogsParams{}, emptyPreparedAuthorized{}).Asserts(
417-
rbac.ResourceConnectionLog, policy.ActionRead,
418-
)
318+
s.Run("UpsertConnectionLog", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
319+
ws := testutil.Fake(s.T(), faker, database.WorkspaceTable{})
320+
arg := database.UpsertConnectionLogParams{Ip: defaultIPAddress(), Type: database.ConnectionTypeSsh, WorkspaceID: ws.ID, OrganizationID: ws.OrganizationID, ConnectionStatus: database.ConnectionStatusConnected, WorkspaceOwnerID: ws.OwnerID}
321+
dbm.EXPECT().UpsertConnectionLog(gomock.Any(), arg).Return(database.ConnectionLog{}, nil).AnyTimes()
322+
check.Args(arg).Asserts(rbac.ResourceConnectionLog, policy.ActionUpdate)
323+
}))
324+
s.Run("GetConnectionLogsOffset", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
325+
arg := database.GetConnectionLogsOffsetParams{LimitOpt: 10}
326+
dbm.EXPECT().GetConnectionLogsOffset(gomock.Any(), arg).Return([]database.GetConnectionLogsOffsetRow{}, nil).AnyTimes()
327+
dbm.EXPECT().GetAuthorizedConnectionLogsOffset(gomock.Any(), arg, gomock.Any()).Return([]database.GetConnectionLogsOffsetRow{}, nil).AnyTimes()
328+
check.Args(arg).Asserts(rbac.ResourceConnectionLog, policy.ActionRead).WithNotAuthorized("nil")
329+
}))
330+
s.Run("GetAuthorizedConnectionLogsOffset", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
331+
arg := database.GetConnectionLogsOffsetParams{LimitOpt: 10}
332+
dbm.EXPECT().GetAuthorizedConnectionLogsOffset(gomock.Any(), arg, gomock.Any()).Return([]database.GetConnectionLogsOffsetRow{}, nil).AnyTimes()
333+
dbm.EXPECT().GetConnectionLogsOffset(gomock.Any(), arg).Return([]database.GetConnectionLogsOffsetRow{}, nil).AnyTimes()
334+
check.Args(arg, emptyPreparedAuthorized{}).Asserts(rbac.ResourceConnectionLog, policy.ActionRead)
335+
}))
336+
s.Run("CountConnectionLogs", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
337+
dbm.EXPECT().CountConnectionLogs(gomock.Any(), database.CountConnectionLogsParams{}).Return(int64(0), nil).AnyTimes()
338+
dbm.EXPECT().CountAuthorizedConnectionLogs(gomock.Any(), database.CountConnectionLogsParams{}, gomock.Any()).Return(int64(0), nil).AnyTimes()
339+
check.Args(database.CountConnectionLogsParams{}).Asserts(rbac.ResourceConnectionLog, policy.ActionRead).WithNotAuthorized("nil")
340+
}))
341+
s.Run("CountAuthorizedConnectionLogs", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
342+
dbm.EXPECT().CountAuthorizedConnectionLogs(gomock.Any(), database.CountConnectionLogsParams{}, gomock.Any()).Return(int64(0), nil).AnyTimes()
343+
dbm.EXPECT().CountConnectionLogs(gomock.Any(), database.CountConnectionLogsParams{}).Return(int64(0), nil).AnyTimes()
344+
check.Args(database.CountConnectionLogsParams{}, emptyPreparedAuthorized{}).Asserts(rbac.ResourceConnectionLog, policy.ActionRead)
419345
}))
420346
}
421347

0 commit comments

Comments
 (0)