package httpserver import ( "encoding/json" "net/http" "net/http/httptest" "net/url" "testing" "gitea.unprism.ru/KRBL/mila/protocol" "gitea.unprism.ru/KRBL/mila/storage" ) func TestHandlerSetAndGetContent(t *testing.T) { handler := NewHandler(protocol.DefaultConfig(), storage.NewMemoryStore()) params := url.Values{} params.Set("route", "3") params.Set("str", "Гостиный двор - Gostiny dvor") params.Set("tpl_name", "Гостиный двор") req := httptest.NewRequest(http.MethodGet, "/set-content?"+params.Encode(), nil) rec := httptest.NewRecorder() handler.ServeHTTP(rec, req) if rec.Code != http.StatusOK { t.Fatalf("set-content status=%d body=%s", rec.Code, rec.Body.String()) } req = httptest.NewRequest(http.MethodGet, "/get-content", nil) rec = httptest.NewRecorder() handler.ServeHTTP(rec, req) if rec.Code != http.StatusOK { t.Fatalf("get-content status=%d body=%s", rec.Code, rec.Body.String()) } var state protocol.ContentState if err := json.NewDecoder(rec.Body).Decode(&state); err != nil { t.Fatalf("decode response: %v", err) } if state.Route != "3" || state.Text != "Гостиный двор - Gostiny dvor" || state.Template != "Гостиный двор" { t.Fatalf("unexpected state: %+v", state) } } func TestHandlerGetBeforeSetReturns503(t *testing.T) { handler := NewHandler(protocol.DefaultConfig(), storage.NewMemoryStore()) req := httptest.NewRequest(http.MethodGet, "/get-content", nil) rec := httptest.NewRecorder() handler.ServeHTTP(rec, req) if rec.Code != http.StatusServiceUnavailable { t.Fatalf("status=%d body=%s", rec.Code, rec.Body.String()) } }