diff --git a/src/main/kotlin/pw/binom/mirror/api/dto/CreateMirrorRequest.kt b/src/main/kotlin/pw/binom/mirror/api/dto/CreateMirrorRequest.kt index 940b070..93e7d74 100644 --- a/src/main/kotlin/pw/binom/mirror/api/dto/CreateMirrorRequest.kt +++ b/src/main/kotlin/pw/binom/mirror/api/dto/CreateMirrorRequest.kt @@ -7,7 +7,6 @@ import kotlinx.serialization.Serializable data class CreateMirrorRequest( @field:NotBlank(message = "itemId must not be blank") val itemId: String, - @field:NotBlank(message = "sourceUrl must not be blank") - val sourceUrl: String, + val sourceUrl: String = "", val sourceType: String = "jellyfin", ) diff --git a/src/test/kotlin/pw/binom/mirror/api/controller/MirrorControllerTest.kt b/src/test/kotlin/pw/binom/mirror/api/controller/MirrorControllerTest.kt index 8fc5e5d..b6f7c22 100644 --- a/src/test/kotlin/pw/binom/mirror/api/controller/MirrorControllerTest.kt +++ b/src/test/kotlin/pw/binom/mirror/api/controller/MirrorControllerTest.kt @@ -83,6 +83,21 @@ class MirrorControllerTest : AbstractIntegrationTest() { assertEquals(1, count) } + @Test + fun `POST mirror without sourceUrl creates a job`() { + mockMvc.perform( + post("/api/mirror") + .contentType(MediaType.APPLICATION_JSON) + .content("""{"itemId":"no-url-id"}"""), + ).andExpect(status().isCreated) + + val response = json.decodeFromString( + bodyOf(mockMvc.perform(get("/api/mirror/by-item/no-url-id")).andExpect(status().isOk).andReturn()), + ) + assertEquals("no-url-id", response.itemId) + assertEquals("new", response.status) + } + @Test fun `POST mirror returns 400 on blank itemId`() { postCreate("", "https://source.example/stream")