package surf import ( "os" "path/filepath" "strings" "testing" "git.golem15.com/golem15/summercms/backpack" "git.golem15.com/golem15/summercms/compass" "gocloud.dev/blob" ) func TestPublishUploadsRequiresURL(t *testing.T) { app := serveTestApp(t, "uploads:\n bucket_url: \"\"\n") _, err := publishUploads(t.Context(), app) if err == nil || !strings.Contains(err.Error(), "bucket_url") { t.Fatalf("got %v, want bucket_url error", err) } } func TestPublishUploadsStoresBucket(t *testing.T) { app := serveTestApp(t, "uploads:\n bucket_url: \"mem://\"\n public_path_prefix: \"/storage/uploads\"\n") bucket, err := publishUploads(t.Context(), app) if err != nil { t.Fatal(err) } t.Cleanup(func() { _ = bucket.Close() }) got, ok := app.Lookup[*blob.Bucket]() if !ok || got != bucket { t.Fatal("publishUploads must store the opened *blob.Bucket") } } func serveTestApp(t *testing.T, storageYAML string) *backpack.App { t.Helper() dir := t.TempDir() if err := os.WriteFile(filepath.Join(dir, "app.yaml"), []byte("name: serve-uploads\n"), 0o644); err != nil { t.Fatal(err) } if err := os.WriteFile(filepath.Join(dir, "storage.yaml"), []byte(storageYAML), 0o644); err != nil { t.Fatal(err) } cfg, err := compass.Open(compass.Options{ Dir: dir, Env: "development", Environ: []string{"SUMMER_ENV=development"}, }) if err != nil { t.Fatal(err) } return backpack.New(cfg) }