From af83477e39a337959ab4daaaf45cafdca121d528 Mon Sep 17 00:00:00 2001 From: Valery Yatsynovich Date: Fri, 1 Dec 2023 11:20:46 +0200 Subject: [PATCH] [plugin-rest-api] Add ability to set an empty string as HTTP request body --- docs/modules/plugins/pages/plugin-rest-api.adoc | 12 ++++++++++++ .../java/org/vividus/steps/api/HttpRequestSteps.java | 2 ++ .../src/main/resources/story/integration/HTTP.story | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/docs/modules/plugins/pages/plugin-rest-api.adoc b/docs/modules/plugins/pages/plugin-rest-api.adoc index 522f125d23..adedb8d46e 100644 --- a/docs/modules/plugins/pages/plugin-rest-api.adoc +++ b/docs/modules/plugins/pages/plugin-rest-api.adoc @@ -306,6 +306,12 @@ WARNING: No HTTP request header is set in the case of binary content. Given request body: $content ---- +.Alias syntax +[source,gherkin] +---- +Given request body:`$content` +---- + * `$content` - HTTP request body. .Set textual HTTP request body @@ -324,6 +330,12 @@ When I set request headers: When I execute HTTP POST request for resource with relative URL `/upload/png` ---- +.Set an ampty string as HTTP request body +[source,gherkin] +---- +Given request body:`` +---- + === Prepare multipart HTTP request Sets https://tools.ietf.org/html/rfc7578[multipart] request entity that will be used while executing HTTP requests. diff --git a/vividus-plugin-rest-api/src/main/java/org/vividus/steps/api/HttpRequestSteps.java b/vividus-plugin-rest-api/src/main/java/org/vividus/steps/api/HttpRequestSteps.java index 43eb7314f2..c25fdf8ec9 100644 --- a/vividus-plugin-rest-api/src/main/java/org/vividus/steps/api/HttpRequestSteps.java +++ b/vividus-plugin-rest-api/src/main/java/org/vividus/steps/api/HttpRequestSteps.java @@ -40,6 +40,7 @@ import org.apache.hc.core5.http.message.BasicHeader; import org.apache.hc.core5.http.message.BasicNameValuePair; import org.apache.hc.core5.util.Timeout; +import org.jbehave.core.annotations.Alias; import org.jbehave.core.annotations.Given; import org.jbehave.core.annotations.When; import org.jbehave.core.model.ExamplesTable; @@ -73,6 +74,7 @@ public HttpRequestSteps(HttpTestContext httpTestContext, HttpRequestExecutor htt * @param content HTTP request body */ @Given("request body: $content") + @Alias("request body:`$content`") public void request(DataWrapper content) { Object data = content.data(); diff --git a/vividus-tests/src/main/resources/story/integration/HTTP.story b/vividus-tests/src/main/resources/story/integration/HTTP.story index 7e7deab48a..da9c5b87a7 100644 --- a/vividus-tests/src/main/resources/story/integration/HTTP.story +++ b/vividus-tests/src/main/resources/story/integration/HTTP.story @@ -118,6 +118,13 @@ Then `${responseCode}` is equal to `200` When I save JSON element value from `${json-context}` by JSON path `$.data` to scenario variable `data` Then `${data}` matches `data:application/octet-stream;base64.*` +Scenario: Verify step "Given request body:`$content`" (HTTP request body is an empty string) +Given request body:`` +When I execute HTTP POST request for resource with relative URL `/post` +Then `${responseCode}` is equal to `200` +When I save JSON element value from `${json-context}` by JSON path `$.data` to scenario variable `data` +Then `${data}` is equal to `` + Scenario: Verify step "Given form data request:$parameters" Given form data request: |name |value |