Refuse an empty fit on /v1/image/ with 400 (closes #139)
check / check (push) Successful in 13s
check / check (push) Successful in 13s
A fit in the URL with an empty value (fit=) was treated as missing, so it was served as cover and verified against a signature made for cover. It is now a 400 naming fit, the same rule the route applies to an empty q. It is checked before the existing fit-mode check, which takes an empty fit as missing; any other value still goes through that check unchanged. Only a fit missing from the URL is cover. Model: opus-5-5
This commit was merged in pull request #140.
This commit is contained in:
@@ -356,3 +356,41 @@ func TestHandleImage_InvalidQuery_Returns400(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// TestHandleImage_EmptyFit_Returns400 verifies that the plain image route
|
||||
// answers a fit that is in the URL but empty with 400 naming fit, instead of
|
||||
// serving the image as cover. Only a fit missing from the URL means cover.
|
||||
func TestHandleImage_EmptyFit_Returns400(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
fix := setupTestHandler(t)
|
||||
|
||||
r := chi.NewRouter()
|
||||
r.Get("/v1/image/*", fix.handler.HandleImage())
|
||||
|
||||
req := httptest.NewRequestWithContext(t.Context(), http.MethodGet,
|
||||
"/v1/image/"+fix.goodHost+"/images/photo.jpg/50x50.jpeg?fit=", nil)
|
||||
rec := httptest.NewRecorder()
|
||||
|
||||
r.ServeHTTP(rec, req)
|
||||
|
||||
if rec.Code != http.StatusBadRequest {
|
||||
t.Fatalf("status = %d, want %d", rec.Code, http.StatusBadRequest)
|
||||
}
|
||||
|
||||
t.Logf("GET %s: %d %s", req.URL, rec.Code, rec.Body)
|
||||
|
||||
var body struct {
|
||||
Error string `json:"error"`
|
||||
}
|
||||
|
||||
err := json.NewDecoder(rec.Body).Decode(&body)
|
||||
if err != nil {
|
||||
t.Fatalf("decoding response body: %v", err)
|
||||
}
|
||||
|
||||
wantError := `invalid fit: not a fit mode, got ""`
|
||||
if body.Error != wantError {
|
||||
t.Errorf("error = %q, want %q", body.Error, wantError)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user