fix: filter workspace_build resource on start/stop action (#5809)

* fix: ufilter workspace_build resource on start/stop action

* added preset filter for workspace_build filtering

* cleaning up the preset filters
This commit is contained in:
Kira Pilot 2023-01-20 13:23:13 -05:00 committed by GitHub
parent 918c37c358
commit 0e58772f5b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 45 additions and 8 deletions

View File

@ -478,6 +478,10 @@ func actionFromString(actionString string) string {
return actionString
case codersdk.AuditActionDelete:
return actionString
case codersdk.AuditActionStart:
return actionString
case codersdk.AuditActionStop:
return actionString
default:
}
return ""

View File

@ -46,12 +46,15 @@ func TestAuditLogsFilter(t *testing.T) {
var (
ctx = context.Background()
client = coderdtest.New(t, nil)
client = coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
user = coderdtest.CreateFirstUser(t, client)
version = coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
template = coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
)
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
// Create two logs with "Create"
err := client.CreateTestAuditLog(ctx, codersdk.CreateTestAuditLogRequest{
Action: codersdk.AuditActionCreate,
@ -77,6 +80,24 @@ func TestAuditLogsFilter(t *testing.T) {
})
require.NoError(t, err)
// Create one log with "Start"
err = client.CreateTestAuditLog(ctx, codersdk.CreateTestAuditLogRequest{
Action: codersdk.AuditActionStart,
ResourceType: codersdk.ResourceTypeWorkspaceBuild,
ResourceID: workspace.LatestBuild.ID,
Time: time.Date(2022, 8, 15, 14, 30, 45, 100, time.UTC), // 2022-8-15 14:30:45
})
require.NoError(t, err)
// Create one log with "Stop"
err = client.CreateTestAuditLog(ctx, codersdk.CreateTestAuditLogRequest{
Action: codersdk.AuditActionStop,
ResourceType: codersdk.ResourceTypeWorkspaceBuild,
ResourceID: workspace.LatestBuild.ID,
Time: time.Date(2022, 8, 15, 14, 30, 45, 100, time.UTC), // 2022-8-15 14:30:45
})
require.NoError(t, err)
// Test cases
testCases := []struct {
Name string
@ -106,12 +127,12 @@ func TestAuditLogsFilter(t *testing.T) {
{
Name: "FilterByEmail",
SearchQuery: "email:" + coderdtest.FirstUserParams.Email,
ExpectedResult: 3,
ExpectedResult: 5,
},
{
Name: "FilterByUsername",
SearchQuery: "username:" + coderdtest.FirstUserParams.Username,
ExpectedResult: 3,
ExpectedResult: 5,
},
{
Name: "FilterByResourceID",
@ -121,17 +142,17 @@ func TestAuditLogsFilter(t *testing.T) {
{
Name: "FilterInvalidSingleValue",
SearchQuery: "invalid",
ExpectedResult: 3,
ExpectedResult: 5,
},
{
Name: "FilterWithInvalidResourceType",
SearchQuery: "resource_type:invalid",
ExpectedResult: 3,
ExpectedResult: 5,
},
{
Name: "FilterWithInvalidAction",
SearchQuery: "action:invalid",
ExpectedResult: 3,
ExpectedResult: 5,
},
{
Name: "FilterOnCreateSingleDay",
@ -148,6 +169,16 @@ func TestAuditLogsFilter(t *testing.T) {
SearchQuery: "action:create date_to:2022-08-15",
ExpectedResult: 1,
},
{
Name: "FilterOnWorkspaceBuildStart",
SearchQuery: "resource_type:workspace_build action:start",
ExpectedResult: 1,
},
{
Name: "FilterOnWorkspaceBuildStop",
SearchQuery: "resource_type:workspace_build action:stop",
ExpectedResult: 1,
},
}
for _, testCase := range testCases {

View File

@ -35,9 +35,11 @@ const presetFilters = [
name: "Created workspaces",
},
{ query: "resource_type:template action:create", name: "Added templates" },
{ query: "resource_type:user action:create", name: "Added users" },
{ query: "resource_type:template action:delete", name: "Deleted templates" },
{ query: "resource_type:user action:delete", name: "Deleted users" },
{
query: "resource_type:workspace_build action:start",
name: "Started builds",
},
]
export interface AuditPageViewProps {