Scert/backend/internal/deployment/recovery_list_cancel_test.go
xuans 978f023a7f 保存本机只读核查入口并开始全量失败修复
本机协议及菜单已实现,Linux专项通过;全量存在环境缺失和SQLite截止时间失败,尚未通过生产验收。
2026-10-03 18:23:48 +08:00

36 lines
1.1 KiB
Go

package deployment
import (
"context"
"errors"
"testing"
)
type cancelledRecoveryListJournal struct {
memoryTransactionJournal
cancel context.CancelFunc
}
func (j *cancelledRecoveryListJournal) ListPendingDeploymentTransactions(context.Context) ([]TransactionRecord, error) {
j.cancel()
return nil, nil
}
func TestRecoveryListCancellationAfterEmptyRead(t *testing.T) {
ctx, cancel := context.WithCancel(t.Context())
defer cancel()
journal := &cancelledRecoveryListJournal{cancel: cancel}
page, err := NewServiceWithJournal(nil, journal).ListPendingRecoveries(ctx, "")
if !errors.Is(err, context.Canceled) || page.Items != nil {
t.Fatal("cancelled empty result accepted")
}
}
func TestRecoveryListLegacyWithoutPhase(t *testing.T) {
journal := &memoryTransactionJournal{pending: []TransactionRecord{{ID: "legacy", ServerID: "server-1", Status: TransactionStatusRecoveryRequired}}}
page, err := NewServiceWithJournal(nil, journal).ListPendingRecoveries(t.Context(), "")
if err != nil || len(page.Items) != 1 || page.Items[0].HistoricalEvidence {
t.Fatal("legacy record omitted or evidence invented")
}
}