forked from security/hakurei
internal/pkg: improve artifact interface
This moves all cache I/O code to Cache. Artifact now only contains methods for constructing their actual contents. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
@@ -34,7 +34,7 @@ func TestHTTP(t *testing.T) {
|
||||
checkWithCache(t, []cacheTestCase{
|
||||
{"direct", nil, func(t *testing.T, base *check.Absolute, c *pkg.Cache) {
|
||||
var got []byte
|
||||
if f, err := c.NewHTTPGet(
|
||||
if f, err := pkg.NewHTTPGet(
|
||||
t.Context(),
|
||||
&client,
|
||||
"file:///testdata",
|
||||
@@ -45,15 +45,15 @@ func TestHTTP(t *testing.T) {
|
||||
t.Fatalf("Data: error = %v", err)
|
||||
} else if string(got) != testdata {
|
||||
t.Fatalf("Data: %x, want %x", got, testdata)
|
||||
} else if gotIdent := f.ID(); gotIdent != testdataChecksum {
|
||||
t.Fatalf("ID: %x, want %x", gotIdent, testdataChecksum)
|
||||
} else if gotIdent := pkg.Ident(f); gotIdent != testdataChecksum {
|
||||
t.Fatalf("Ident: %x, want %x", gotIdent, testdataChecksum)
|
||||
}
|
||||
|
||||
// check direct validation
|
||||
wantErrMismatch := &pkg.ChecksumMismatchError{
|
||||
Got: testdataChecksum,
|
||||
}
|
||||
if f, err := c.NewHTTPGet(
|
||||
if f, err := pkg.NewHTTPGet(
|
||||
t.Context(),
|
||||
&client,
|
||||
"file:///testdata",
|
||||
@@ -62,13 +62,13 @@ func TestHTTP(t *testing.T) {
|
||||
t.Fatalf("NewHTTPGet: error = %v", err)
|
||||
} else if _, err = f.Data(); !reflect.DeepEqual(err, wantErrMismatch) {
|
||||
t.Fatalf("Data: error = %#v, want %#v", err, wantErrMismatch)
|
||||
} else if gotIdent := f.ID(); gotIdent != (pkg.Checksum{}) {
|
||||
t.Fatalf("ID: %x, want %x", gotIdent, pkg.Checksum{})
|
||||
} else if gotIdent := pkg.Ident(f); gotIdent != (pkg.Checksum{}) {
|
||||
t.Fatalf("Ident: %x, want %x", gotIdent, pkg.Checksum{})
|
||||
}
|
||||
|
||||
// check direct response error
|
||||
wantErrNotFound := pkg.ResponseStatusError(http.StatusNotFound)
|
||||
if f, err := c.NewHTTPGet(
|
||||
if f, err := pkg.NewHTTPGet(
|
||||
t.Context(),
|
||||
&client,
|
||||
"file:///nonexistent",
|
||||
@@ -77,13 +77,13 @@ func TestHTTP(t *testing.T) {
|
||||
t.Fatalf("NewHTTPGet: error = %v", err)
|
||||
} else if _, err = f.Data(); !reflect.DeepEqual(err, wantErrNotFound) {
|
||||
t.Fatalf("Data: error = %#v, want %#v", err, wantErrNotFound)
|
||||
} else if gotIdent := f.ID(); gotIdent != (pkg.Checksum{}) {
|
||||
t.Fatalf("ID: %x, want %x", gotIdent, pkg.Checksum{})
|
||||
} else if gotIdent := pkg.Ident(f); gotIdent != (pkg.Checksum{}) {
|
||||
t.Fatalf("Ident: %x, want %x", gotIdent, pkg.Checksum{})
|
||||
}
|
||||
}, pkg.MustDecode("E4vEZKhCcL2gPZ2Tt59FS3lDng-d_2SKa2i5G_RbDfwGn6EemptFaGLPUDiOa94C")},
|
||||
|
||||
{"load or store", nil, func(t *testing.T, base *check.Absolute, c *pkg.Cache) {
|
||||
f, err := c.NewHTTPGet(
|
||||
{"cure", nil, func(t *testing.T, base *check.Absolute, c *pkg.Cache) {
|
||||
f, err := pkg.NewHTTPGet(
|
||||
t.Context(),
|
||||
&client,
|
||||
"file:///testdata",
|
||||
@@ -97,18 +97,16 @@ func TestHTTP(t *testing.T) {
|
||||
"identifier",
|
||||
testdataChecksumString,
|
||||
)
|
||||
var pathname *check.Absolute
|
||||
if pathname, err = f.Pathname(); err != nil {
|
||||
t.Fatalf("Pathname: error = %v", err)
|
||||
var (
|
||||
pathname *check.Absolute
|
||||
checksum pkg.Checksum
|
||||
)
|
||||
if pathname, checksum, err = c.Cure(f); err != nil {
|
||||
t.Fatalf("Cure: error = %v", err)
|
||||
} else if !pathname.Is(wantPathname) {
|
||||
t.Fatalf("Pathname: %q, want %q", pathname, wantPathname)
|
||||
}
|
||||
|
||||
var checksum pkg.Checksum
|
||||
if checksum, err = f.Hash(); err != nil {
|
||||
t.Fatalf("Hash: error = %v", err)
|
||||
t.Fatalf("Cure: %q, want %q", pathname, wantPathname)
|
||||
} else if checksum != testdataChecksum {
|
||||
t.Fatalf("Hash: %x, want %x", checksum, testdataChecksum)
|
||||
t.Fatalf("Cure: %x, want %x", checksum, testdataChecksum)
|
||||
}
|
||||
|
||||
var got []byte
|
||||
@@ -116,12 +114,12 @@ func TestHTTP(t *testing.T) {
|
||||
t.Fatalf("Data: error = %v", err)
|
||||
} else if string(got) != testdata {
|
||||
t.Fatalf("Data: %x, want %x", got, testdata)
|
||||
} else if gotIdent := f.ID(); gotIdent != testdataChecksum {
|
||||
t.Fatalf("ID: %x, want %x", gotIdent, testdataChecksum)
|
||||
} else if gotIdent := pkg.Ident(f); gotIdent != testdataChecksum {
|
||||
t.Fatalf("Ident: %x, want %x", gotIdent, testdataChecksum)
|
||||
}
|
||||
|
||||
// check load from cache
|
||||
if f, err = c.NewHTTPGet(
|
||||
if f, err = pkg.NewHTTPGet(
|
||||
t.Context(),
|
||||
&client,
|
||||
"file:///testdata",
|
||||
@@ -132,57 +130,23 @@ func TestHTTP(t *testing.T) {
|
||||
t.Fatalf("Data: error = %v", err)
|
||||
} else if string(got) != testdata {
|
||||
t.Fatalf("Data: %x, want %x", got, testdata)
|
||||
} else if gotIdent := f.ID(); gotIdent != testdataChecksum {
|
||||
t.Fatalf("ID: %x, want %x", gotIdent, testdataChecksum)
|
||||
} else if gotIdent := pkg.Ident(f); gotIdent != testdataChecksum {
|
||||
t.Fatalf("Ident: %x, want %x", gotIdent, testdataChecksum)
|
||||
}
|
||||
|
||||
// check error passthrough
|
||||
wantErrNotFound := pkg.ResponseStatusError(http.StatusNotFound)
|
||||
if f, err = c.NewHTTPGet(
|
||||
if f, err = pkg.NewHTTPGet(
|
||||
t.Context(),
|
||||
&client,
|
||||
"file:///nonexistent",
|
||||
pkg.Checksum{},
|
||||
); err != nil {
|
||||
t.Fatalf("NewHTTPGet: error = %v", err)
|
||||
} else if _, err = f.Pathname(); !reflect.DeepEqual(err, wantErrNotFound) {
|
||||
} else if _, _, err = c.Cure(f); !reflect.DeepEqual(err, wantErrNotFound) {
|
||||
t.Fatalf("Pathname: error = %#v, want %#v", err, wantErrNotFound)
|
||||
} else if gotIdent := f.ID(); gotIdent != (pkg.Checksum{}) {
|
||||
t.Fatalf("ID: %x, want %x", gotIdent, pkg.Checksum{})
|
||||
}
|
||||
}, pkg.MustDecode("4WHaMvRRcCac1uAyXnEklEd2YaNQBj6rXlfMntX9GgYLij3By1znv5QYPGJHYQIH")},
|
||||
|
||||
{"store", nil, func(t *testing.T, base *check.Absolute, c *pkg.Cache) {
|
||||
var (
|
||||
got []byte
|
||||
pathname *check.Absolute
|
||||
checksum pkg.Checksum
|
||||
)
|
||||
wantPathname := base.Append(
|
||||
"identifier",
|
||||
testdataChecksumString,
|
||||
)
|
||||
if f, err := c.NewHTTPGet(
|
||||
t.Context(),
|
||||
&client,
|
||||
"file:///testdata",
|
||||
testdataChecksum,
|
||||
); err != nil {
|
||||
t.Fatalf("NewHTTPGet: error = %v", err)
|
||||
} else if got, err = f.Data(); err != nil {
|
||||
t.Fatalf("Data: error = %v", err)
|
||||
} else if string(got) != testdata {
|
||||
t.Fatalf("Data: %x, want %x", got, testdata)
|
||||
} else if gotIdent := f.ID(); gotIdent != testdataChecksum {
|
||||
t.Fatalf("ID: %x, want %x", gotIdent, testdataChecksum)
|
||||
} else if pathname, err = f.Pathname(); err != nil {
|
||||
t.Fatalf("Pathname: error = %v", err)
|
||||
} else if !pathname.Is(wantPathname) {
|
||||
t.Fatalf("Pathname: %q, want %q", pathname, wantPathname)
|
||||
} else if checksum, err = f.Hash(); err != nil {
|
||||
t.Fatalf("Hash: error = %v", err)
|
||||
} else if checksum != testdataChecksum {
|
||||
t.Fatalf("Hash: %x, want %x", checksum, testdataChecksum)
|
||||
} else if gotIdent := pkg.Ident(f); gotIdent != (pkg.Checksum{}) {
|
||||
t.Fatalf("Ident: %x, want %x", gotIdent, pkg.Checksum{})
|
||||
}
|
||||
}, pkg.MustDecode("4WHaMvRRcCac1uAyXnEklEd2YaNQBj6rXlfMntX9GgYLij3By1znv5QYPGJHYQIH")},
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user