73 lines
2.0 KiB
Go
73 lines
2.0 KiB
Go
package app
|
|
|
|
import (
|
|
"net/http/httptest"
|
|
"reflect"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestAuditFiltersFromRequest(t *testing.T) {
|
|
t.Parallel()
|
|
request := httptest.NewRequest(
|
|
"GET",
|
|
"/portal?audit_range=7d&audit_event=package_downloaded&audit_actor=taiadmin&audit_hostname=pve01&audit_package=sentinelone-linux&audit_ip=10.10.1.25&audit_details=install-rmm",
|
|
nil,
|
|
)
|
|
filters := auditFiltersFromRequest(request)
|
|
expected := auditFilters{
|
|
TimeRange: "7d",
|
|
EventType: "package_downloaded",
|
|
Actor: "taiadmin",
|
|
Hostname: "pve01",
|
|
PackageSlug: "sentinelone-linux",
|
|
SourceIP: "10.10.1.25",
|
|
Details: "install-rmm",
|
|
}
|
|
if !reflect.DeepEqual(filters, expected) {
|
|
t.Fatalf("filters = %#v, want %#v", filters, expected)
|
|
}
|
|
}
|
|
|
|
func TestAuditFiltersDefaultToThirtyDays(t *testing.T) {
|
|
t.Parallel()
|
|
request := httptest.NewRequest("GET", "/portal?audit_range=invalid", nil)
|
|
if filters := auditFiltersFromRequest(request); filters.TimeRange != "30d" {
|
|
t.Fatalf("time range = %q, want 30d", filters.TimeRange)
|
|
}
|
|
}
|
|
|
|
func TestAuditQueryUsesPlaceholders(t *testing.T) {
|
|
t.Parallel()
|
|
filters := auditFilters{
|
|
TimeRange: "all",
|
|
EventType: "package_downloaded",
|
|
Actor: "taiadmin",
|
|
Hostname: "pve01",
|
|
PackageSlug: "sentinelone-linux",
|
|
SourceIP: "10.10.1.25",
|
|
Details: "install-rmm",
|
|
}
|
|
query, arguments := auditQuery(filters)
|
|
if strings.Contains(query, filters.Actor) || strings.Contains(query, filters.Hostname) {
|
|
t.Fatal("filter values must not be interpolated into the SQL query")
|
|
}
|
|
if strings.Contains(query, "INTERVAL") {
|
|
t.Fatal("all-time query must not include a time restriction")
|
|
}
|
|
if !strings.HasSuffix(query, "ORDER BY created_at DESC LIMIT 250") {
|
|
t.Fatalf("query has unexpected limit: %s", query)
|
|
}
|
|
expectedArguments := []any{
|
|
"package_downloaded",
|
|
"taiadmin",
|
|
"pve01",
|
|
"sentinelone-linux",
|
|
"10.10.1.25",
|
|
"install-rmm",
|
|
}
|
|
if !reflect.DeepEqual(arguments, expectedArguments) {
|
|
t.Fatalf("arguments = %#v, want %#v", arguments, expectedArguments)
|
|
}
|
|
}
|