50 lines
999 B
Go
50 lines
999 B
Go
package artifact
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestFilesystemRoundTrip(t *testing.T) {
|
|
store, err := NewFilesystem(t.TempDir())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
descriptor, err := store.Put(
|
|
context.Background(),
|
|
"datasets/example.jsonl",
|
|
strings.NewReader("example"),
|
|
"application/x-ndjson",
|
|
)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if descriptor.SizeBytes != 7 {
|
|
t.Fatalf("expected 7 bytes, got %d", descriptor.SizeBytes)
|
|
}
|
|
|
|
reader, err := store.Open(context.Background(), "datasets/example.jsonl")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer reader.Close()
|
|
body, err := io.ReadAll(reader)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if string(body) != "example" {
|
|
t.Fatalf("unexpected body %q", body)
|
|
}
|
|
}
|
|
|
|
func TestFilesystemRejectsTraversal(t *testing.T) {
|
|
store, err := NewFilesystem(t.TempDir())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := store.Open(context.Background(), "../secret"); err == nil {
|
|
t.Fatal("expected traversal to be rejected")
|
|
}
|
|
}
|