test(base): add unit tests for ChecksumOption serialization

This commit is contained in:
ashish6298 committed 2026-09-22 16:36:41 +05:30
1 parent e93437c95f
commit 929e2d2d7c
2 files changed
+35

No files matched your search

+32
View File
@@ -435,3 +435,35 @@ func TestDownloaderStoreConfig_Merge(t *testing.T) {
})
}
}
func TestOptions_Checksum(t *testing.T) {
opts := &Options{
Name: "test.zip",
Path: "/downloads",
Checksum: &ChecksumOption{
Algorithm: "sha256",
Expected: "abcdef1234567890",
},
}
cloned := opts.Clone()
if cloned.Checksum == nil {
t.Fatal("expected cloned options to have non-nil Checksum")
}
if cloned.Checksum.Algorithm != "sha256" || cloned.Checksum.Expected != "abcdef1234567890" {
t.Fatalf("cloned checksum mismatch: got %+v", cloned.Checksum)
}
// Verify deep clone isolation
cloned.Checksum.Expected = "modified"
if opts.Checksum.Expected != "abcdef1234567890" {
t.Fatal("modifying cloned checksum affected original options")
}
// Verify nil checksum options clone
optsNil := &Options{Name: "nil_check.zip"}
clonedNil := optsNil.Clone()
if clonedNil.Checksum != nil {
t.Fatal("expected nil checksum in cloned options")
}
}
+3
View File
@@ -23,6 +23,9 @@ type ResolveResult struct {
Res *base.Resource `json:"res"`
}
// Task represents a download unit.
// Options flow path:
// REST Request (model.CreateTask/ResolveTask) -> pkg/download Downloader -> Task.Meta.Opts (base.Options) -> Fetcher.Resolve/Start (e.g. internal/protocol/http/fetcher.go)
type Task struct {
ID string `json:"id"`
Protocol string `json:"protocol"`