mirror of
https://github.com/safedep/pmg.git
synced 2026-08-03 07:24:09 +02:00
* feat: add sandbox DX commands * fix: Linter errors * fix: Sandbox deny log parsing * fix: Sandbox docs * refactor: Maintain SSOT across pkg dependencies * fix: Linter errors
63 lines
1.7 KiB
Go
63 lines
1.7 KiB
Go
package sandbox
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
type fakeProbe struct {
|
|
name string
|
|
result ProbeResult
|
|
ran bool
|
|
}
|
|
|
|
func (f *fakeProbe) Name() string { return f.name }
|
|
func (f *fakeProbe) Run(_ context.Context) ProbeResult {
|
|
f.ran = true
|
|
if f.result.Name == "" {
|
|
f.result.Name = f.name
|
|
}
|
|
return f.result
|
|
}
|
|
|
|
func TestRunProbes_PreservesOrderAndStatus(t *testing.T) {
|
|
probes := []Probe{
|
|
&fakeProbe{name: "a", result: ProbeResult{Status: ProbeStatusOK, Summary: "a ok"}},
|
|
&fakeProbe{name: "b", result: ProbeResult{Status: ProbeStatusWarn, Summary: "b warn"}},
|
|
&fakeProbe{name: "c", result: ProbeResult{Status: ProbeStatusFail, Summary: "c fail"}},
|
|
}
|
|
|
|
results := RunProbes(context.Background(), probes)
|
|
|
|
assert.Len(t, results, 3)
|
|
assert.Equal(t, "a", results[0].Name)
|
|
assert.Equal(t, ProbeStatusOK, results[0].Status)
|
|
assert.Equal(t, "b", results[1].Name)
|
|
assert.Equal(t, ProbeStatusWarn, results[1].Status)
|
|
assert.Equal(t, "c", results[2].Name)
|
|
assert.Equal(t, ProbeStatusFail, results[2].Status)
|
|
}
|
|
|
|
func TestRunProbes_HonorsCancellation(t *testing.T) {
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
cancel()
|
|
|
|
a := &fakeProbe{name: "a", result: ProbeResult{Status: ProbeStatusOK}}
|
|
b := &fakeProbe{name: "b", result: ProbeResult{Status: ProbeStatusOK}}
|
|
|
|
results := RunProbes(ctx, []Probe{a, b})
|
|
|
|
assert.Len(t, results, 2)
|
|
assert.False(t, a.ran)
|
|
assert.False(t, b.ran)
|
|
assert.Equal(t, ProbeStatusSkipped, results[0].Status)
|
|
assert.Equal(t, ProbeStatusSkipped, results[1].Status)
|
|
}
|
|
|
|
func TestRunProbes_EmptySlice(t *testing.T) {
|
|
results := RunProbes(context.Background(), nil)
|
|
assert.Empty(t, results)
|
|
}
|