Feature: POST /v1/article/{id}/image is a thin alias that creates a library image As the current editor, until the editor slice moves it to /v1/media I want to keep uploading through the article route and get {id, location} back So that the editor keeps working while images are library assets Background: Given the route stays in the article router's jwtauth group with RequireCurrentToken and RequireVerifiedUser, and is marked for removal in the editor slice And the handler calls GetArticleUseCase first, so an unknown article is 404 apperr.ArticleNotFoundErrorMessage and nothing is created And it then calls the same CreateImageUseCase as POST /v1/media/, with UploadedByID from the jwt user_id claim, attaches nothing to the article, and answers 201 {"id", "location"} where location is the image's url And type, size and unreadable errors map as on /v1/media/: 415, 413, 400 And DELETE /v1/article/{id}/image/{imageId} is not mounted Scenario: Uploading through the alias creates a library image Given a valid jwt cookie for user 1 and article 1 "Backyard Renovation Update" When the client sends POST /v1/article/1/image with a real PNG named "before.png" Then the response status is 201 And the body has "id" equal to the new image's id and "location" equal to its url And GET /v1/media/ lists the image with uploaded_by of user 1 And article 1 is unchanged Scenario: An unknown article is 404 and creates no image When the client sends POST /v1/article/9999/image with a valid PNG Then the response status is 404 and the body is "Article not found" And the image repository's Create is never called Scenario Outline: Rejected files use the media status codes When the client sends POST /v1/article/1/image with Then the response status is and Create is never called Examples: | file | status | | "notes.pdf" as application/pdf | 415 | | a valid PNG padded to 10485761 bytes | 413 | | "broken.png" as image/png with text bytes | 400 | Scenario: The alias still requires authentication When the client sends POST /v1/article/1/image with no cookie Then the response status is 401 and Create is never called Scenario: The removed delete route is gone When the client sends DELETE /v1/article/1/image/10 with a valid cookie Then the response status is 405 and image 10 still exists