update gui

This commit is contained in:
2026-07-28 21:07:30 -05:00
parent f56ac6a2c4
commit 6c4ce8f6df
7 changed files with 164 additions and 6 deletions
+95
View File
@@ -125,6 +125,101 @@ func authorizationUpdateRequest(
return response
}
func packageStatusRequest(
t *testing.T,
server *Server,
sessionToken string,
slug string,
enabled bool,
) *httptest.ResponseRecorder {
t.Helper()
values := url.Values{
"csrf_token": {"csrf-token"},
"slug": {slug},
}
if enabled {
values.Set("enabled", "1")
}
request := httptest.NewRequest(
http.MethodPost,
"/portal/packages/status",
strings.NewReader(values.Encode()),
)
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
request.AddCookie(&http.Cookie{Name: sessionCookieName, Value: sessionToken})
response := httptest.NewRecorder()
server.requireTechnician(server.handleSetPackageStatus)(response, request)
return response
}
func TestSetPackageStatusChangesOnlyDistributionAvailability(t *testing.T) {
server, sessionToken := newAuthorizationTestServer(t)
if _, err := server.db.Exec(
`INSERT INTO packages
(slug, display_name, package_name, package_version, file_name, sha256, enabled)
VALUES ('sentinelone-linux', 'SentinelOne', 'sentinelone-linux',
'26.1.1.31', 'agent.deb', ?, TRUE)`,
strings.Repeat("a", 64),
); err != nil {
t.Fatal(err)
}
response := packageStatusRequest(t, server, sessionToken, "sentinelone-linux", false)
if response.Code != http.StatusSeeOther {
t.Fatalf("disable status = %d, want %d: %s", response.Code, http.StatusSeeOther, response.Body.String())
}
if location := response.Header().Get("Location"); !strings.Contains(location, "disabled") {
t.Fatalf("disable redirect = %q", location)
}
var version, fileName, sha256 string
var enabled bool
if err := server.db.QueryRow(
`SELECT package_version, file_name, sha256, enabled
FROM packages WHERE slug = 'sentinelone-linux'`,
).Scan(&version, &fileName, &sha256, &enabled); err != nil {
t.Fatal(err)
}
if enabled || version != "26.1.1.31" || fileName != "agent.deb" ||
sha256 != strings.Repeat("a", 64) {
t.Fatalf("disable changed package metadata: enabled=%t version=%q file=%q sha256=%q", enabled, version, fileName, sha256)
}
response = packageStatusRequest(t, server, sessionToken, "sentinelone-linux", true)
if response.Code != http.StatusSeeOther {
t.Fatalf("enable status = %d, want %d: %s", response.Code, http.StatusSeeOther, response.Body.String())
}
if err := server.db.QueryRow(
`SELECT enabled FROM packages WHERE slug = 'sentinelone-linux'`,
).Scan(&enabled); err != nil {
t.Fatal(err)
}
if !enabled {
t.Fatal("package was not re-enabled")
}
rows, err := server.db.Query(
`SELECT event_type, actor, package_slug, details
FROM audit_events ORDER BY id`,
)
if err != nil {
t.Fatal(err)
}
defer rows.Close()
for index, expected := range []string{"package_disabled", "package_enabled"} {
if !rows.Next() {
t.Fatalf("missing audit event %d", index)
}
var eventType, actor, slug, details string
if err := rows.Scan(&eventType, &actor, &slug, &details); err != nil {
t.Fatal(err)
}
if eventType != expected || actor != "taiadmin" || slug != "sentinelone-linux" {
t.Fatalf("audit event = %q/%q/%q", eventType, actor, slug)
}
}
}
func TestUpdateAuthorizationExtendsAndReplacesAccess(t *testing.T) {
server, sessionToken := newAuthorizationTestServer(t)
oldExpiresAt := seedAuthorizationForUpdate(t, server)