package server import ( "net/http" "net/http/httptest" "strings" "testing" "git.unkin.net/unkin/tomswallapi/internal/model" ) func TestStatusReportNormalize(t *testing.T) { tests := []struct { in model.ApplyStatus want model.ApplyStatus wantErr bool }{ {in: "", want: model.StatusApplied}, {in: model.StatusApplied, want: model.StatusApplied}, {in: model.StatusReverted, want: model.StatusReverted}, {in: model.StatusFailed, want: model.StatusFailed}, {in: "rolledback", wantErr: true}, } for _, tt := range tests { r := model.StatusReport{Status: tt.in, Generation: 3} err := r.Normalize() if (err != nil) != tt.wantErr || (!tt.wantErr && r.Status != tt.want) { t.Errorf("Normalize(%q) = %q, %v", tt.in, r.Status, err) } } } func TestHandleDeviceStatusRejectsBadPayload(t *testing.T) { s := &Server{} // nil store: a 400 must return before any DB access for _, body := range []string{ `{"status":"rolledback","generation":3}`, `{"generation":3,"bogus":1}`, } { rec := httptest.NewRecorder() s.handleDeviceStatus(rec, httptest.NewRequest(http.MethodPost, "/", strings.NewReader(body))) if rec.Code != http.StatusBadRequest { t.Errorf("%s: got %d, want 400", body, rec.Code) } } }