Files

67 lines
1.9 KiB
Go
Raw Permalink Normal View History

package httpapi
import (
"encoding/json"
"net/http"
"net/http/httptest"
"testing"
)
func TestOKEnvelope(t *testing.T) {
t.Parallel()
rec := httptest.NewRecorder()
v1OK(rec, http.StatusOK, []string{"a"}, map[string]any{"page": 1, "limit": 25, "total": 1})
if rec.Code != http.StatusOK {
t.Fatalf("status = %d", rec.Code)
}
var body map[string]any
if err := json.Unmarshal(rec.Body.Bytes(), &body); err != nil {
t.Fatal(err)
}
if _, ok := body["data"]; !ok {
t.Fatalf("missing data: %#v", body)
}
meta, _ := body["meta"].(map[string]any)
if meta["page"] != float64(1) || meta["limit"] != float64(25) {
t.Fatalf("meta = %#v", body["meta"])
}
}
func TestPresentV1ExportFeedPublicURLs(t *testing.T) {
t.Parallel()
out := presentV1ExportFeed(map[string]any{
"id": "799ba83a-6a7e-4e1d-b5de-c02182aacec5",
"name": "XML",
"format": "xml",
"public_token": "9bf8905985e4c2bb2e5f6a0f89ddc1b6",
"is_active": true,
})
urls, _ := out["public_urls"].(map[string]string)
if urls["xml"] != "/api/public/export-feeds/9bf8905985e4c2bb2e5f6a0f89ddc1b6.xml" {
t.Fatalf("public_urls = %#v", urls)
}
if urls["token"] != urls["xml"] {
t.Fatalf("token url should match format: %#v", urls)
}
if _, hasCSV := urls["csv"]; hasCSV {
t.Fatalf("must not advertise wrong-format url: %#v", urls)
}
if out["root_xpath"] != nil || out["mappings"] == nil {
t.Fatalf("legacy fields missing: %#v", out)
}
}
func TestParsePageLimitOffset(t *testing.T) {
t.Parallel()
r := httptest.NewRequest(http.MethodGet, "/x?page=2&limit=10", nil)
page, limit, offset := ParsePageLimitOffset(r)
if page != 2 || limit != 10 || offset != 10 {
t.Fatalf("page=%d limit=%d offset=%d", page, limit, offset)
}
r2 := httptest.NewRequest(http.MethodGet, "/x?offset=5&limit=10", nil)
page, limit, offset = ParsePageLimitOffset(r2)
if page != 1 || limit != 10 || offset != 5 {
t.Fatalf("offset mode: page=%d limit=%d offset=%d", page, limit, offset)
}
}