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") } }