csantanapr closed pull request #3323: Normalize a missing body for raw actions to JsString.empty. URL: https://github.com/apache/incubator-openwhisk/pull/3323
This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/core/controller/src/main/scala/whisk/core/controller/WebActions.scala b/core/controller/src/main/scala/whisk/core/controller/WebActions.scala index cd3c68ca37..0bb6b779fb 100644 --- a/core/controller/src/main/scala/whisk/core/controller/WebActions.scala +++ b/core/controller/src/main/scala/whisk/core/controller/WebActions.scala @@ -129,11 +129,11 @@ private case class Context(propertyMap: WebApiDirectives, // if the body is a json object, merge with query parameters // otherwise, this is an opaque body that will be nested under // __ow_body in the parameters sent to the action as an argument - val bodyParams = body match { + val bodyParams: Map[String, JsValue] = body match { case Some(JsObject(fields)) if !boxQueryAndBody => fields case Some(v) => Map(propertyMap.body -> v) case None if !boxQueryAndBody => Map.empty - case _ => Map(propertyMap.body -> JsObject()) + case _ => Map(propertyMap.body -> JsString.empty) } // precedence order is: query params -> body (last wins) diff --git a/tests/src/test/scala/whisk/core/controller/test/WebActionsApiTests.scala b/tests/src/test/scala/whisk/core/controller/test/WebActionsApiTests.scala index 2bcfe9122f..2f47595925 100644 --- a/tests/src/test/scala/whisk/core/controller/test/WebActionsApiTests.scala +++ b/tests/src/test/scala/whisk/core/controller/test/WebActionsApiTests.scala @@ -1536,7 +1536,7 @@ trait WebActionsApiBaseTests extends ControllerTestCommon with BeforeAndAfterEac "action" -> "raw_export_c".toJson, "content" -> metaPayload( Post.method.name.toLowerCase, - Map(webApiDirectives.body -> JsObject(), webApiDirectives.query -> queryString.toJson).toJson.asJsObject, + Map(webApiDirectives.body -> "".toJson, webApiDirectives.query -> queryString.toJson).toJson.asJsObject, creds, pkgName = "proxy")) } @@ -1589,6 +1589,24 @@ trait WebActionsApiBaseTests extends ControllerTestCommon with BeforeAndAfterEac } } + it should s"invoke raw action ensuring body and query arguments are empty strings when not specified in request (auth? ${creds.isDefined})" in { + implicit val tid = transid() + + Post(s"$testRoutePath/$systemId/proxy/raw_export_c.json") ~> Route.seal(routes(creds)) ~> check { + status should be(OK) + invocationsAllowed += 1 + val response = responseAs[JsObject] + response shouldBe JsObject( + "pkg" -> s"$systemId/proxy".toJson, + "action" -> "raw_export_c".toJson, + "content" -> metaPayload( + Post.method.name.toLowerCase, + Map(webApiDirectives.body -> "".toJson, webApiDirectives.query -> "".toJson).toJson.asJsObject, + creds, + pkgName = "proxy")) + } + } + it should s"reject invocation of web action with invalid accept header (auth? ${creds.isDefined})" in { implicit val tid = transid() ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services