/
DexScen
/
ProjectPOH
Обзор
Документация
Войти
/
DexScen
/
ProjectPOH
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/internal/httpapi/json_test.go
69 строк
2 KB
Александр
changes
14 май 2026, 15:02
14 май 2026, 15:02
3f3feb2
Код
Авторство
О чём код?
package httpapi import ( "net/http/httptest" "strings" "testing" ) func TestReadJSON(t *testing.T) { type payload struct { Name string `json:"name"` } t.Run("ok", func(t *testing.T) { req := httptest.NewRequest("POST", "/", strings.NewReader(`{"name":"alice"}`)) var p payload if err := ReadJSON(req, &p); err != nil { t.Fatalf("unexpected error: %v", err) } if p.Name != "alice" { t.Fatalf("expected alice, got %q", p.Name) } }) t.Run("unknown field", func(t *testing.T) { req := httptest.NewRequest("POST", "/", strings.NewReader(`{"name":"alice","x":1}`)) var p payload if err := ReadJSON(req, &p); err == nil { t.Fatalf("expected error for unknown field") } }) t.Run("multiple objects", func(t *testing.T) { req := httptest.NewRequest("POST", "/", strings.NewReader(`{"name":"a"}{"name":"b"}`)) var p payload if err := ReadJSON(req, &p); err == nil { t.Fatalf("expected error for multiple objects") } }) } func TestParsePositiveInt64(t *testing.T) { if _, err := ParsePositiveInt64("", "id"); err == nil { t.Fatalf("expected required error") } if _, err := ParsePositiveInt64("0", "id"); err == nil { t.Fatalf("expected positive integer error") } v, err := ParsePositiveInt64("42", "id") if err != nil || v != 42 { t.Fatalf("expected 42, got v=%d err=%v", v, err) } } func TestParsePagination(t *testing.T) { r := httptest.NewRequest("GET", "/?limit=200&offset=5", nil) limit, offset, err := ParsePagination(r, 20, 100) if err != nil { t.Fatalf("unexpected error: %v", err) } if limit != 100 || offset != 5 { t.Fatalf("expected limit=100 offset=5 got limit=%d offset=%d", limit, offset) } r = httptest.NewRequest("GET", "/?limit=-1", nil) if _, _, err := ParsePagination(r, 20, 100); err == nil { t.Fatalf("expected limit validation error") } }