Go-based FM stereo transmitter with RDS, Windows-first and cross-platform
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

74 wiersze
2.2KB

  1. package control
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "net/http"
  6. "net/http/httptest"
  7. "testing"
  8. cfgpkg "github.com/jan/fm-rds-tx/internal/config"
  9. )
  10. func TestHealthz(t *testing.T) {
  11. srv := NewServer(cfgpkg.Default())
  12. req := httptest.NewRequest(http.MethodGet, "/healthz", nil)
  13. rec := httptest.NewRecorder()
  14. srv.Handler().ServeHTTP(rec, req)
  15. if rec.Code != http.StatusOK {
  16. t.Fatalf("unexpected status: %d", rec.Code)
  17. }
  18. }
  19. func TestStatus(t *testing.T) {
  20. srv := NewServer(cfgpkg.Default())
  21. req := httptest.NewRequest(http.MethodGet, "/status", nil)
  22. rec := httptest.NewRecorder()
  23. srv.Handler().ServeHTTP(rec, req)
  24. if rec.Code != http.StatusOK {
  25. t.Fatalf("unexpected status: %d", rec.Code)
  26. }
  27. var body map[string]any
  28. if err := json.Unmarshal(rec.Body.Bytes(), &body); err != nil {
  29. t.Fatalf("decode body: %v", err)
  30. }
  31. if body["service"] != "fm-rds-tx" {
  32. t.Fatalf("unexpected service: %v", body["service"])
  33. }
  34. }
  35. func TestDryRunEndpoint(t *testing.T) {
  36. srv := NewServer(cfgpkg.Default())
  37. req := httptest.NewRequest(http.MethodGet, "/dry-run", nil)
  38. rec := httptest.NewRecorder()
  39. srv.Handler().ServeHTTP(rec, req)
  40. if rec.Code != http.StatusOK {
  41. t.Fatalf("unexpected status: %d", rec.Code)
  42. }
  43. var body map[string]any
  44. if err := json.Unmarshal(rec.Body.Bytes(), &body); err != nil {
  45. t.Fatalf("decode body: %v", err)
  46. }
  47. if body["mode"] != "dry-run" {
  48. t.Fatalf("unexpected mode: %v", body["mode"])
  49. }
  50. }
  51. func TestConfigPatch(t *testing.T) {
  52. srv := NewServer(cfgpkg.Default())
  53. body := []byte(`{"toneLeftHz":900,"radioText":"hello world"}`)
  54. req := httptest.NewRequest(http.MethodPost, "/config", bytes.NewReader(body))
  55. rec := httptest.NewRecorder()
  56. srv.Handler().ServeHTTP(rec, req)
  57. if rec.Code != http.StatusOK {
  58. t.Fatalf("unexpected status: %d body=%s", rec.Code, rec.Body.String())
  59. }
  60. getReq := httptest.NewRequest(http.MethodGet, "/config", nil)
  61. getRec := httptest.NewRecorder()
  62. srv.Handler().ServeHTTP(getRec, getReq)
  63. if getRec.Code != http.StatusOK {
  64. t.Fatalf("unexpected status: %d", getRec.Code)
  65. }
  66. }