dana-medical-site/internal/api/onec_push_test.go
Abdulkadyr Karagishiev a02c4faad7
Some checks failed
Deploy Dana Medical Site / deploy (push) Failing after 2s
feat(onec): support outbound push/pull sync and async appointment queue
2026-10-19 18:30:23 +03:00

70 lines
1.8 KiB
Go

package api
import (
"bytes"
"encoding/json"
"net/http"
"net/http/httptest"
"testing"
"time"
"dana/internal/onec"
)
func TestOnecPushEndpoints(t *testing.T) {
app := &API{
onecHook: "test-secret-key",
onec: onec.New("", "test-secret-key", "X-Api-Key"),
}
mux := app.Routes()
// 1. Unauthorized request
req := httptest.NewRequest(http.MethodGet, "/api/v1/onec/appointments/pending", nil)
w := httptest.NewRecorder()
mux.ServeHTTP(w, req)
if w.Code != http.StatusUnauthorized {
t.Fatalf("expected 401 unauthorized, got %d", w.Code)
}
// 2. Authorized check with invalid body
req = httptest.NewRequest(http.MethodPost, "/api/v1/onec/sync/all", bytes.NewReader([]byte("{invalid-json")))
req.Header.Set("X-Api-Key", "test-secret-key")
w = httptest.NewRecorder()
mux.ServeHTTP(w, req)
if w.Code != http.StatusBadRequest {
t.Fatalf("expected 400 bad request, got %d", w.Code)
}
// 3. FindSlotBounds test
now := time.Now()
slots := []onec.Slot{
{Start: now.Add(time.Hour), End: now.Add(2 * time.Hour)},
{Start: now, End: now.Add(30 * time.Minute)},
{Start: now.Add(3 * time.Hour), End: now.Add(4 * time.Hour)},
}
minT, maxT := findSlotBounds(slots)
if !minT.Equal(now) {
t.Errorf("expected minT = %v, got %v", now, minT)
}
if !maxT.Equal(now.Add(4 * time.Hour)) {
t.Errorf("expected maxT = %v, got %v", now.Add(4*time.Hour), maxT)
}
}
func TestOnecConfirmBadID(t *testing.T) {
app := &API{
onecHook: "test-secret-key",
}
mux := app.Routes()
body, _ := json.Marshal(confirmAppointmentReq{OnecAppointmentID: "001"})
req := httptest.NewRequest(http.MethodPost, "/api/v1/onec/appointments/invalid-id/confirm", bytes.NewReader(body))
req.Header.Set("X-Api-Key", "test-secret-key")
w := httptest.NewRecorder()
mux.ServeHTTP(w, req)
if w.Code != http.StatusBadRequest {
t.Fatalf("expected 400 bad id, got %d", w.Code)
}
}