项目文件夹

文件
wehub-resource-sync 75f3dd141c
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CI and Release / lint-frontend (push) Has been cancelled
CI and Release / dockerfile-scan (push) Has been cancelled
CI and Release / test-frontend (push) Has been cancelled
CI and Release / lint-verification-agent (push) Has been cancelled
CI and Release / test-verification-agent (push) Has been cancelled
CI and Release / e2e-verification-agent (push) Has been cancelled
CI and Release / test-backend (push) Has been cancelled
CI and Release / build-dev-image (push) Has been cancelled
CI and Release / push-dev-image (push) Has been cancelled
CI and Release / build-image (push) Has been cancelled
CI and Release / build-verification-image (push) Has been cancelled
CI and Release / determine-version (push) Has been cancelled
CI and Release / push-image (push) Has been cancelled
CI and Release / push-verification-image (12) (push) Has been cancelled
CI and Release / lint-backend (push) Has been cancelled
CI and Release / push-verification-image (17) (push) Has been cancelled
CI and Release / push-verification-image (18) (push) Has been cancelled
CI and Release / release (push) Has been cancelled
CI and Release / publish-helm-chart (push) Has been cancelled
CI and Release / push-verification-image (13) (push) Has been cancelled
CI and Release / push-verification-image (14) (push) Has been cancelled
CI and Release / push-verification-image (15) (push) Has been cancelled
CI and Release / push-verification-image (16) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:11:07 +08:00

75 行
2.2 KiB
Go

package container
import (
"errors"
"testing"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
"databasus-verification-agent/internal/testutil"
)
func Test_PurgeAgentContainers_RemovesEveryContainerAndNetwork(t *testing.T) {
engine := &fakePurgeEngine{
managed: []ManagedContainer{
{ID: "c1", NetworkID: "n1", VerificationID: uuid.New().String()},
{ID: "c2", NetworkID: "n2", VerificationID: uuid.New().String()},
},
}
purgeAgentContainers(t.Context(), engine, "agent-1", testutil.DiscardLogger())
assert.ElementsMatch(t, []string{"c1", "c2"}, engine.removedContainer)
assert.ElementsMatch(t, []string{"n1", "n2"}, engine.removedNetwork)
}
func Test_PurgeAgentContainers_WhenNetworkIDEmpty_RemovesContainerOnly(t *testing.T) {
engine := &fakePurgeEngine{
managed: []ManagedContainer{{ID: "c1", VerificationID: uuid.New().String()}},
}
purgeAgentContainers(t.Context(), engine, "agent-1", testutil.DiscardLogger())
assert.Equal(t, []string{"c1"}, engine.removedContainer)
assert.Empty(t, engine.removedNetwork)
}
func Test_PurgeAgentContainers_WhenListFails_RemovesNothing(t *testing.T) {
engine := &fakePurgeEngine{
managed: []ManagedContainer{{ID: "c1", NetworkID: "n1"}},
listErr: errors.New("docker unreachable"),
}
purgeAgentContainers(t.Context(), engine, "agent-1", testutil.DiscardLogger())
assert.Empty(t, engine.removedContainer)
assert.Empty(t, engine.removedNetwork)
}
func Test_PurgeAgentContainers_WhenListEmpty_DoesNothing(t *testing.T) {
engine := &fakePurgeEngine{}
purgeAgentContainers(t.Context(), engine, "agent-1", testutil.DiscardLogger())
assert.Empty(t, engine.removedContainer)
assert.Empty(t, engine.removedNetwork)
}
func Test_PurgeAgentContainers_WhenContainerRemovalFails_SkipsNetworkAndContinues(t *testing.T) {
engine := &fakePurgeEngine{
managed: []ManagedContainer{
{ID: "c1", NetworkID: "n1", VerificationID: uuid.New().String()},
{ID: "c2", NetworkID: "n2", VerificationID: uuid.New().String()},
},
removeContainerErr: errors.New("container in use"),
}
assert.NotPanics(t, func() {
purgeAgentContainers(t.Context(), engine, "agent-1", testutil.DiscardLogger())
})
assert.Empty(t, engine.removedContainer)
assert.Empty(t, engine.removedNetwork)
}