Skip to content

Commit 493ffa7

Browse files
committed
fix me filter
1 parent 9717985 commit 493ffa7

File tree

3 files changed

+68
-46
lines changed

3 files changed

+68
-46
lines changed

coderd/searchquery/search.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func AuditLogs(ctx context.Context, db database.Store, query string) (database.G
6767
return filter, parser.Errors
6868
}
6969

70-
func ConnectionLogs(ctx context.Context, db database.Store, query string) (database.GetConnectionLogsOffsetParams, []codersdk.ValidationError) {
70+
func ConnectionLogs(ctx context.Context, db database.Store, query string, apiKey database.APIKey) (database.GetConnectionLogsOffsetParams, []codersdk.ValidationError) {
7171
// Always lowercase for all searches.
7272
query = strings.ToLower(query)
7373
values, errors := searchTerms(query, func(term string, values url.Values) error {
@@ -92,6 +92,17 @@ func ConnectionLogs(ctx context.Context, db database.Store, query string) (datab
9292
ConnectionID: parser.UUID(values, uuid.Nil, "connection_id"),
9393
Status: string(httpapi.ParseCustom(parser, values, "", "status", httpapi.ParseEnum[database.ConnectionStatus])),
9494
}
95+
96+
if filter.Username == "me" {
97+
filter.UserID = apiKey.UserID
98+
filter.Username = ""
99+
}
100+
101+
if filter.WorkspaceOwner == "me" {
102+
filter.WorkspaceOwnerID = apiKey.UserID
103+
filter.WorkspaceOwner = ""
104+
}
105+
95106
parser.ErrorExcessParams(values)
96107
return filter, parser.Errors
97108
}

coderd/searchquery/search_test.go

Lines changed: 55 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -405,47 +405,68 @@ func TestSearchAudit(t *testing.T) {
405405

406406
func TestSearchConnectionLogs(t *testing.T) {
407407
t.Parallel()
408+
t.Run("All", func(t *testing.T) {
409+
t.Parallel()
408410

409-
orgID := uuid.New()
410-
workspaceOwnerID := uuid.New()
411-
workspaceID := uuid.New()
412-
connectionID := uuid.New()
411+
orgID := uuid.New()
412+
workspaceOwnerID := uuid.New()
413+
workspaceID := uuid.New()
414+
connectionID := uuid.New()
413415

414-
db, _ := dbtestutil.NewDB(t)
415-
dbgen.Organization(t, db, database.Organization{
416-
ID: orgID,
417-
Name: "testorg",
418-
})
419-
dbgen.User(t, db, database.User{
420-
ID: workspaceOwnerID,
421-
Username: "testowner",
422-
Email: "owner@example.com",
416+
db, _ := dbtestutil.NewDB(t)
417+
dbgen.Organization(t, db, database.Organization{
418+
ID: orgID,
419+
Name: "testorg",
420+
})
421+
dbgen.User(t, db, database.User{
422+
ID: workspaceOwnerID,
423+
Username: "testowner",
424+
Email: "owner@example.com",
425+
})
426+
427+
query := fmt.Sprintf(`organization:testorg workspace_owner:testowner `+
428+
`workspace_owner_email:owner@example.com type:port_forwarding username:testuser `+
429+
`user_email:test@example.com started_after:"2023-01-01T00:00:00Z" `+
430+
`started_before:"2023-01-16T12:00:00+12:00" workspace_id:%s connection_id:%s status:connected`,
431+
workspaceID.String(), connectionID.String())
432+
433+
values, errs := searchquery.ConnectionLogs(context.Background(), db, query, database.APIKey{})
434+
require.Len(t, errs, 0)
435+
436+
expected := database.GetConnectionLogsOffsetParams{
437+
OrganizationID: orgID,
438+
WorkspaceOwner: "testowner",
439+
WorkspaceOwnerEmail: "owner@example.com",
440+
Type: string(database.ConnectionTypePortForwarding),
441+
Username: "testuser",
442+
UserEmail: "test@example.com",
443+
StartedAfter: time.Date(2023, 1, 1, 0, 0, 0, 0, time.UTC),
444+
StartedBefore: time.Date(2023, 1, 16, 0, 0, 0, 0, time.UTC),
445+
WorkspaceID: workspaceID,
446+
ConnectionID: connectionID,
447+
Status: string(database.ConnectionStatusConnected),
448+
}
449+
450+
require.Equal(t, expected, values)
423451
})
424452

425-
query := fmt.Sprintf(`organization:testorg workspace_owner:testowner `+
426-
`workspace_owner_email:owner@example.com type:port_forwarding username:testuser `+
427-
`user_email:test@example.com started_after:"2023-01-01T00:00:00Z" `+
428-
`started_before:"2023-01-16T12:00:00+12:00" workspace_id:%s connection_id:%s status:connected`,
429-
workspaceID.String(), connectionID.String())
453+
t.Run("Me", func(t *testing.T) {
454+
t.Parallel()
455+
456+
userID := uuid.New()
457+
db, _ := dbtestutil.NewDB(t)
430458

431-
values, errs := searchquery.ConnectionLogs(context.Background(), db, query)
432-
require.Len(t, errs, 0)
459+
query := `username:me workspace_owner:me`
460+
values, errs := searchquery.ConnectionLogs(context.Background(), db, query, database.APIKey{UserID: userID})
461+
require.Len(t, errs, 0)
433462

434-
expected := database.GetConnectionLogsOffsetParams{
435-
OrganizationID: orgID,
436-
WorkspaceOwner: "testowner",
437-
WorkspaceOwnerEmail: "owner@example.com",
438-
Type: string(database.ConnectionTypePortForwarding),
439-
Username: "testuser",
440-
UserEmail: "test@example.com",
441-
StartedAfter: time.Date(2023, 1, 1, 0, 0, 0, 0, time.UTC),
442-
StartedBefore: time.Date(2023, 1, 16, 0, 0, 0, 0, time.UTC),
443-
WorkspaceID: workspaceID,
444-
ConnectionID: connectionID,
445-
Status: string(database.ConnectionStatusConnected),
446-
}
463+
expected := database.GetConnectionLogsOffsetParams{
464+
UserID: userID,
465+
WorkspaceOwnerID: userID,
466+
}
447467

448-
require.Equal(t, expected, values)
468+
require.Equal(t, expected, values)
469+
})
449470
}
450471

451472
func TestSearchUsers(t *testing.T) {

enterprise/coderd/connectionlog.go

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func (api *API) connectionLogs(rw http.ResponseWriter, r *http.Request) {
3737
}
3838

3939
queryStr := r.URL.Query().Get("q")
40-
filter, errs := searchquery.ConnectionLogs(ctx, api.Database, queryStr)
40+
filter, errs := searchquery.ConnectionLogs(ctx, api.Database, queryStr, apiKey)
4141
if len(errs) > 0 {
4242
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
4343
Message: "Invalid connection search query.",
@@ -50,16 +50,6 @@ func (api *API) connectionLogs(rw http.ResponseWriter, r *http.Request) {
5050
// #nosec G115 - Safe conversion as pagination limit is expected to be within int32 range
5151
filter.LimitOpt = int32(page.Limit)
5252

53-
if filter.Username == "me" {
54-
filter.UserID = apiKey.UserID
55-
filter.Username = ""
56-
}
57-
58-
if filter.WorkspaceOwner == "me" {
59-
filter.WorkspaceOwnerID = apiKey.UserID
60-
filter.WorkspaceOwner = ""
61-
}
62-
6353
dblogs, err := api.Database.GetConnectionLogsOffset(ctx, filter)
6454
if dbauthz.IsNotAuthorizedError(err) {
6555
httpapi.Forbidden(rw)

0 commit comments

Comments
 (0)