From 3c7bd74f75a43756460d99f5208ab3e3631af7f7 Mon Sep 17 00:00:00 2001 From: janisz Date: Tue, 31 Jan 2017 14:22:47 +0100 Subject: [PATCH] Fixes #4978 | AppDefinition.Conteiner validation (#4989) --- .../mesosphere/marathon/api/v2/json/Formats.scala | 2 +- .../marathon/api/v2/AppsResourceTest.scala | 2 +- .../api/v2/json/AppDefinitionFormatsTest.scala | 12 ++++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/scala/mesosphere/marathon/api/v2/json/Formats.scala b/src/main/scala/mesosphere/marathon/api/v2/json/Formats.scala index 97e8d732982..fc9f4f53a72 100644 --- a/src/main/scala/mesosphere/marathon/api/v2/json/Formats.scala +++ b/src/main/scala/mesosphere/marathon/api/v2/json/Formats.scala @@ -351,7 +351,7 @@ trait ContainerFormats { } case _ => if (aggregate.kind == ContainerInfo.Type.DOCKER) { - throw SerializationFailedException("docker must not be empty") + throw JsResultException(Seq((JsPath() \ "container" \ "docker", Seq(ValidationError("error.path.missing"))))) } aggregate.appcOption match { diff --git a/src/test/scala/mesosphere/marathon/api/v2/AppsResourceTest.scala b/src/test/scala/mesosphere/marathon/api/v2/AppsResourceTest.scala index 8353c419611..097893a6007 100644 --- a/src/test/scala/mesosphere/marathon/api/v2/AppsResourceTest.scala +++ b/src/test/scala/mesosphere/marathon/api/v2/AppsResourceTest.scala @@ -733,7 +733,7 @@ class AppsResourceTest extends AkkaUnitTest with GroupCreation { stripMargin.getBytes("UTF-8") Then("A serialization exception is thrown") - intercept[SerializationFailedException] { + intercept[JsResultException] { appsResource.replace(app.id.toString, body, force = false, auth. request) } diff --git a/src/test/scala/mesosphere/marathon/api/v2/json/AppDefinitionFormatsTest.scala b/src/test/scala/mesosphere/marathon/api/v2/json/AppDefinitionFormatsTest.scala index bce2d48ce2a..c8348f1562f 100644 --- a/src/test/scala/mesosphere/marathon/api/v2/json/AppDefinitionFormatsTest.scala +++ b/src/test/scala/mesosphere/marathon/api/v2/json/AppDefinitionFormatsTest.scala @@ -529,5 +529,17 @@ class AppDefinitionFormatsTest extends UnitTest (json \ "killSelection").as[String] should be("OLDEST_FIRST") } + + "FromJSON should fail for empty container (#4978)" in { + val json = Json.parse( + """{ + | "id": "docker-compose-demo", + | "cmd": "echo hello world", + | "container": {} + |}""".stripMargin) + the[JsResultException] thrownBy { + json.as[AppDefinition] + } should have message ("JsResultException(errors:List((/container/docker,List(ValidationError(List(error.path.missing),WrappedArray())))))") + } } } \ No newline at end of file