Files
mila/httpserver/handler_test.go

58 lines
1.6 KiB
Go

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())
}
}