version_test.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package httpserver
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "net/http/httptest"
  6. "testing"
  7. "github.com/danfragoso/pizzasql-next/pkg/executor"
  8. "github.com/danfragoso/pizzasql-next/pkg/version"
  9. )
  10. func TestVersionEndpointReportsBuildAndCompatibility(t *testing.T) {
  11. server := setupKVTestServer(t)
  12. r := httptest.NewRequest(http.MethodGet, "/version", nil)
  13. w := httptest.NewRecorder()
  14. server.server.Handler.ServeHTTP(w, r)
  15. if w.Code != http.StatusOK {
  16. t.Fatalf("status = %d body %s", w.Code, w.Body.String())
  17. }
  18. var resp map[string]interface{}
  19. if err := json.NewDecoder(w.Body).Decode(&resp); err != nil {
  20. t.Fatalf("decode: %v", err)
  21. }
  22. if got := resp["version"]; got != version.String() {
  23. t.Fatalf("version = %v, want %q", got, version.String())
  24. }
  25. if got := resp["postgres_compat"]; got != version.PostgreSQLCompatVersion {
  26. t.Fatalf("postgres_compat = %v, want %q", got, version.PostgreSQLCompatVersion)
  27. }
  28. if got := resp["sqlite_compat"]; got != executor.SQLiteCompatVersion {
  29. t.Fatalf("sqlite_compat = %v, want %q", got, executor.SQLiteCompatVersion)
  30. }
  31. if _, ok := resp["commit"]; !ok {
  32. t.Fatal("response is missing commit")
  33. }
  34. }