Files
go-sip/internal/agent/upload_retry_test.go

31 lines
1.0 KiB
Go

package agent
import "testing"
func TestExplicitRetryReservesEachRequestOnlyOnce(t *testing.T) {
spool, err := NewSpool(t.TempDir(), nil)
if err != nil {
t.Fatal(err)
}
record := UploadAttempt{UploadID: "upload-a", RequestID: "first-request", Identity: "identity-a", State: "attempted"}
if err := spool.ClaimUpload(record); err != nil {
t.Fatal(err)
}
for _, request := range []string{"second-request", "third-request"} {
if err := spool.ReserveUploadRetry(record.UploadID, request); err != nil {
t.Fatal(err)
}
}
for _, request := range []string{"first-request", "second-request", "third-request"} {
if err := spool.ReserveUploadRetry(record.UploadID, request); err == nil {
t.Fatalf("request %s reused", request)
}
}
if err := spool.RecordUploadResult(record.UploadID, UploadResult{SizeBytes: 4, SHA256: "checksum", StatusCode: 200}); err != nil {
t.Fatal(err)
}
if err := spool.ReserveUploadRetry(record.UploadID, "fourth-request"); err == nil {
t.Fatal("successful PUT was authorized again")
}
}