67 lines
1.9 KiB
Go
67 lines
1.9 KiB
Go
package mila
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"net/url"
|
|
"testing"
|
|
)
|
|
|
|
func TestHandlerSetAndGetContent(t *testing.T) {
|
|
handler := NewHandler(DefaultConfig(), 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 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(DefaultConfig(), 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())
|
|
}
|
|
}
|
|
|
|
func TestHandlerRejectsInvalidSetContent(t *testing.T) {
|
|
handler := NewHandler(DefaultConfig(), NewMemoryStore())
|
|
|
|
req := httptest.NewRequest(http.MethodGet, "/set-content?route=1234&str=ok&tpl_name=tpl", nil)
|
|
rec := httptest.NewRecorder()
|
|
handler.ServeHTTP(rec, req)
|
|
|
|
if rec.Code != http.StatusBadRequest {
|
|
t.Fatalf("status=%d body=%s", rec.Code, rec.Body.String())
|
|
}
|
|
}
|