mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-19 09:40:12 +00:00
57 lines
2.1 KiB
Go
57 lines
2.1 KiB
Go
//go:build linux && agentcompat
|
|
|
|
package scenario
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"errors"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
processharness "github.com/nezhahq/nezha/integration/agentcompat/internal/process"
|
|
)
|
|
|
|
func TestHeldRealArtifactKindsIncludeEveryRealSessionKind(t *testing.T) {
|
|
require.ElementsMatch(t, []string{"terminal", "file-manager", "nat"}, heldRealArtifactKinds())
|
|
}
|
|
|
|
func TestHeldRealCleanupOKRejectsReceiptErrorAndRunningPID(t *testing.T) {
|
|
passedReceipt := processharness.NewCleanupReceipt([]processharness.CleanupRecord{{Name: "process", PID: 1}})
|
|
failedReceipt := processharness.NewCleanupReceipt([]processharness.CleanupRecord{{Name: "process", PID: 1, Error: "cleanup failed"}})
|
|
|
|
complete := heldRealCleanup{Agent: passedReceipt, Dashboard: passedReceipt, SessionClosed: true, ExactStreamGone: true, OwnedResourceGone: true, AgentPIDGone: true, DashboardPIDGone: true}
|
|
require.True(t, heldRealCleanupOK(complete))
|
|
complete.Agent = failedReceipt
|
|
require.False(t, heldRealCleanupOK(complete))
|
|
complete.Agent = passedReceipt
|
|
complete.AgentPIDGone = false
|
|
require.False(t, heldRealCleanupOK(complete))
|
|
}
|
|
|
|
func TestHeldRealNATProfileQueryPropagatesRESTError(t *testing.T) {
|
|
wantErr := errors.New("query failed")
|
|
present, err := heldRealNATProfilePresentWithQuery(context.Background(), 9, func(context.Context) ([]heldRealNATProfile, error) {
|
|
return nil, wantErr
|
|
})
|
|
|
|
require.ErrorIs(t, err, wantErr)
|
|
require.False(t, present)
|
|
}
|
|
|
|
func TestHeldRealEvidenceUsesOnlyRedactedSchema(t *testing.T) {
|
|
data, err := json.Marshal(heldRealEvidence{Kind: "terminal", SensitiveHeadersPresent: false})
|
|
require.NoError(t, err)
|
|
var fields map[string]json.RawMessage
|
|
require.NoError(t, json.Unmarshal(data, &fields))
|
|
for field := range fields {
|
|
require.Contains(t, heldRealArtifactKeys(), field)
|
|
}
|
|
require.NotContains(t, strings.ToLower(string(data)), "stream")
|
|
require.NotContains(t, strings.ToLower(string(data)), "token")
|
|
require.NotContains(t, strings.ToLower(string(data)), "authorization")
|
|
require.Error(t, writeHeldRealEvidence("unknown", heldRealEvidence{Kind: "unknown"}))
|
|
}
|