update gui
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user