Best Webtau code snippet using org.testingisdocumenting.webtau.http.listener.HttpListeners
Source:Http.java
...34import org.testingisdocumenting.webtau.http.datanode.DataNodeBuilder;35import org.testingisdocumenting.webtau.http.datanode.DataNodeId;36import org.testingisdocumenting.webtau.http.datanode.StructuredDataNode;37import org.testingisdocumenting.webtau.http.json.JsonRequestBody;38import org.testingisdocumenting.webtau.http.listener.HttpListeners;39import org.testingisdocumenting.webtau.http.multipart.MultiPartFile;40import org.testingisdocumenting.webtau.http.multipart.MultiPartFormData;41import org.testingisdocumenting.webtau.http.multipart.MultiPartFormField;42import org.testingisdocumenting.webtau.http.operationid.HttpOperationIdProviders;43import org.testingisdocumenting.webtau.http.request.EmptyRequestBody;44import org.testingisdocumenting.webtau.http.request.HttpApplicationMime;45import org.testingisdocumenting.webtau.http.request.HttpQueryParams;46import org.testingisdocumenting.webtau.http.request.HttpRequestBody;47import org.testingisdocumenting.webtau.http.request.HttpTextMime;48import org.testingisdocumenting.webtau.http.text.TextRequestBody;49import org.testingisdocumenting.webtau.http.validation.*;50import org.testingisdocumenting.webtau.persona.Persona;51import org.testingisdocumenting.webtau.reporter.StepReportOptions;52import org.testingisdocumenting.webtau.reporter.WebTauStep;53import org.testingisdocumenting.webtau.reporter.stacktrace.StackTraceUtils;54import org.testingisdocumenting.webtau.time.Time;55import org.testingisdocumenting.webtau.utils.CollectionUtils;56import org.testingisdocumenting.webtau.utils.JsonParseException;57import org.testingisdocumenting.webtau.utils.JsonUtils;58import java.io.IOException;59import java.io.InputStream;60import java.io.UncheckedIOException;61import java.lang.reflect.Field;62import java.net.*;63import java.nio.charset.StandardCharsets;64import java.nio.file.Path;65import java.util.*;66import java.util.function.Supplier;67import java.util.zip.GZIPInputStream;68import javax.net.ssl.HttpsURLConnection;69import org.apache.commons.io.IOUtils;70import org.testingisdocumenting.webtau.utils.UrlUtils;71import sun.net.www.protocol.https.HttpsURLConnectionImpl;72public class Http {73 private static final HttpResponseValidatorWithReturn EMPTY_RESPONSE_VALIDATOR = (header, body) -> null;74 public static final Http http = new Http();75 public final HttpDocumentation doc = new HttpDocumentation();76 private final ThreadLocal<HttpValidationResult> lastValidationResult = new ThreadLocal<>();77 public final HttpApplicationMime application = new HttpApplicationMime();78 public final HttpTextMime text = new HttpTextMime();79 public boolean ping(String url) {80 return ping(url, HttpQueryParams.EMPTY, HttpHeader.EMPTY);81 }82 public boolean ping(String url, HttpQueryParams queryParams) {83 return ping(url, queryParams, HttpHeader.EMPTY);84 }85 public boolean ping(String url, HttpHeader header) {86 return ping(url, HttpQueryParams.EMPTY, header);87 }88 public boolean ping(String url, HttpQueryParams queryParams, HttpHeader header) {89 String fullUrl = WebTauHttpConfigurations.fullUrl(queryParams.attachToUrl(url));90 WebTauStep step = WebTauStep.createStep(91 tokenizedMessage(action("pinging"), urlValue(fullUrl)),92 () -> tokenizedMessage(action("pinged"), urlValue(fullUrl)),93 () -> HttpValidationHandlers.withDisabledHandlers(() -> {94 HttpOperationIdProviders.withDisabledProviders(() -> {95 http.get(url, header);96 return null;97 });98 return null;99 })100 );101 try {102 step.execute(StepReportOptions.REPORT_ALL);103 } catch (Throwable e) {104 return false;105 }106 return true;107 }108 public String concatUrl(String baseUrl, String relativeUrl) {109 return UrlUtils.concat(baseUrl, relativeUrl);110 }111 public HttpRequestBody json(String firstKey, Object firstValue, Object... rest) {112 return application.json(firstKey, firstValue, rest);113 }114 public HttpRequestBody json(String json) {115 return application.json(json);116 }117 public <E> E get(String url,118 HttpQueryParams queryParams,119 HttpHeader header,120 HttpResponseValidatorWithReturn validator) {121 return executeAndValidateHttpCall("GET", queryParams.attachToUrl(url),122 this::getToFullUrl,123 header, null, validator);124 }125 public <E> E get(String url, Map<CharSequence, ?> queryParams, HttpHeader header, HttpResponseValidatorWithReturn validator) {126 return get(url, new HttpQueryParams(queryParams), header, validator);127 }128 public void get(String url, HttpQueryParams queryParams, HttpHeader header, HttpResponseValidator validator) {129 get(url, queryParams, header, new HttpResponseValidatorIgnoringReturn(validator));130 }131 public void get(String url, Map<CharSequence, ?> queryParams, HttpHeader header, HttpResponseValidator validator) {132 get(url, queryParams, header, new HttpResponseValidatorIgnoringReturn(validator));133 }134 public void get(String url, HttpQueryParams queryParams, HttpHeader header) {135 get(url, queryParams, header, EMPTY_RESPONSE_VALIDATOR);136 }137 public void get(String url, Map<CharSequence, ?> queryParams, HttpHeader header) {138 get(url, queryParams, header, EMPTY_RESPONSE_VALIDATOR);139 }140 public <E> E get(String url, Map<CharSequence, ?> queryParams, HttpResponseValidatorWithReturn validator) {141 return get(url, queryParams, HttpHeader.EMPTY, validator);142 }143 public <E> E get(String url, HttpQueryParams queryParams, HttpResponseValidatorWithReturn validator) {144 return get(url, queryParams, HttpHeader.EMPTY, validator);145 }146 public void get(String url, Map<CharSequence, ?> queryParams, HttpResponseValidator validator) {147 get(url, queryParams, HttpHeader.EMPTY, new HttpResponseValidatorIgnoringReturn(validator));148 }149 public void get(String url, HttpQueryParams queryParams, HttpResponseValidator validator) {150 get(url, queryParams, HttpHeader.EMPTY, new HttpResponseValidatorIgnoringReturn(validator));151 }152 public void get(String url, Map<CharSequence, ?> queryParams) {153 get(url, queryParams, HttpHeader.EMPTY, EMPTY_RESPONSE_VALIDATOR);154 }155 public void get(String url, HttpQueryParams queryParams) {156 get(url, queryParams, HttpHeader.EMPTY, EMPTY_RESPONSE_VALIDATOR);157 }158 public <E> E get(String url, HttpHeader header, HttpResponseValidatorWithReturn validator) {159 return get(url, HttpQueryParams.EMPTY, header, validator);160 }161 public void get(String url, HttpHeader header, HttpResponseValidator validator) {162 get(url, HttpQueryParams.EMPTY, header, new HttpResponseValidatorIgnoringReturn(validator));163 }164 public void get(String url, HttpHeader header) {165 get(url, HttpQueryParams.EMPTY, header, EMPTY_RESPONSE_VALIDATOR);166 }167 public <E> E get(String url, HttpResponseValidatorWithReturn validator) {168 return get(url, HttpQueryParams.EMPTY, HttpHeader.EMPTY, validator);169 }170 public void get(String url, HttpResponseValidator validator) {171 get(url, HttpQueryParams.EMPTY, HttpHeader.EMPTY, new HttpResponseValidatorIgnoringReturn(validator));172 }173 public void get(String url) {174 get(url, HttpQueryParams.EMPTY, HttpHeader.EMPTY, EMPTY_RESPONSE_VALIDATOR);175 }176 public <E> E patch(String url, HttpQueryParams queryParams, HttpHeader header, HttpRequestBody requestBody, HttpResponseValidatorWithReturn validator) {177 return executeAndValidateHttpCall(178 "PATCH",179 queryParams.attachToUrl(url),180 (fullUrl, fullHeader) -> patchToFullUrl(fullUrl, fullHeader, requestBody),181 header,182 requestBody,183 validator);184 }185 public <E> E patch(String url, HttpHeader header, HttpRequestBody requestBody, HttpResponseValidatorWithReturn validator) {186 return patch(url, HttpQueryParams.EMPTY, header, requestBody, validator);187 }188 public void patch(String url, HttpQueryParams queryParams, HttpHeader header, HttpRequestBody requestBody, HttpResponseValidator validator) {189 patch(url, queryParams, header, requestBody, new HttpResponseValidatorIgnoringReturn(validator));190 }191 public void patch(String url, HttpHeader header, HttpRequestBody requestBody, HttpResponseValidator validator) {192 patch(url, header, requestBody, new HttpResponseValidatorIgnoringReturn(validator));193 }194 public <E> E patch(String url, HttpQueryParams queryParams, HttpHeader header, HttpResponseValidatorWithReturn validator) {195 return patch(url, queryParams, header, EmptyRequestBody.INSTANCE, validator);196 }197 public <E> E patch(String url, HttpHeader header, HttpResponseValidatorWithReturn validator) {198 return patch(url, header, EmptyRequestBody.INSTANCE, validator);199 }200 public void patch(String url, HttpQueryParams queryParams, HttpHeader header, HttpResponseValidator validator) {201 patch(url, queryParams, header, EmptyRequestBody.INSTANCE, new HttpResponseValidatorIgnoringReturn(validator));202 }203 public void patch(String url, HttpHeader header, HttpResponseValidator validator) {204 patch(url, header, EmptyRequestBody.INSTANCE, new HttpResponseValidatorIgnoringReturn(validator));205 }206 public <E> E patch(String url, HttpQueryParams queryParams, HttpRequestBody requestBody, HttpResponseValidatorWithReturn validator) {207 return patch(url, queryParams, HttpHeader.EMPTY, requestBody, validator);208 }209 public <E> E patch(String url, HttpRequestBody requestBody, HttpResponseValidatorWithReturn validator) {210 return patch(url, HttpHeader.EMPTY, requestBody, validator);211 }212 public void patch(String url, HttpQueryParams queryParams, HttpRequestBody requestBody, HttpResponseValidator validator) {213 patch(url, queryParams, requestBody, new HttpResponseValidatorIgnoringReturn(validator));214 }215 public void patch(String url, HttpRequestBody requestBody, HttpResponseValidator validator) {216 patch(url, requestBody, new HttpResponseValidatorIgnoringReturn(validator));217 }218 public <E> E patch(String url, HttpQueryParams queryParams, HttpHeader header, Map<String, ?> requestBody,219 HttpResponseValidatorWithReturn validator) {220 return patch(url, queryParams, header, new JsonRequestBody(requestBody), validator);221 }222 public <E> E patch(String url, HttpQueryParams queryParams, HttpHeader header, Collection<?> requestBody,223 HttpResponseValidatorWithReturn validator) {224 return patch(url, queryParams, header, new JsonRequestBody(requestBody), validator);225 }226 public <E> E patch(String url, HttpHeader header, Map<String, ?> requestBody, HttpResponseValidatorWithReturn validator) {227 return patch(url, header, new JsonRequestBody(requestBody), validator);228 }229 public <E> E patch(String url, HttpHeader header, Collection<?> requestBody, HttpResponseValidatorWithReturn validator) {230 return patch(url, header, new JsonRequestBody(requestBody), validator);231 }232 public void patch(String url, HttpQueryParams queryParams, HttpHeader header, Map<String, ?> requestBody,233 HttpResponseValidator validator) {234 patch(url, queryParams, header, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));235 }236 public void patch(String url, HttpQueryParams queryParams, HttpHeader header, Collection<?> requestBody,237 HttpResponseValidator validator) {238 patch(url, queryParams, header, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));239 }240 public void patch(String url, HttpHeader header, Map<String, ?> requestBody, HttpResponseValidator validator) {241 patch(url, header, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));242 }243 public void patch(String url, HttpHeader header, Collection<?> requestBody, HttpResponseValidator validator) {244 patch(url, header, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));245 }246 public <E> E patch(String url, HttpQueryParams queryParams, Map<String, ?> requestBody, HttpResponseValidatorWithReturn validator) {247 return patch(url, queryParams, HttpHeader.EMPTY, new JsonRequestBody(requestBody), validator);248 }249 public <E> E patch(String url, HttpQueryParams queryParams, Collection<?> requestBody, HttpResponseValidatorWithReturn validator) {250 return patch(url, queryParams, HttpHeader.EMPTY, new JsonRequestBody(requestBody), validator);251 }252 public <E> E patch(String url, Map<String, ?> requestBody, HttpResponseValidatorWithReturn validator) {253 return patch(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), validator);254 }255 public <E> E patch(String url, Collection<?> requestBody, HttpResponseValidatorWithReturn validator) {256 return patch(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), validator);257 }258 public void patch(String url, HttpQueryParams queryParams, Map<String, ?> requestBody, HttpResponseValidator validator) {259 patch(url, queryParams, HttpHeader.EMPTY, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));260 }261 public void patch(String url, HttpQueryParams queryParams, Collection<?> requestBody, HttpResponseValidator validator) {262 patch(url, queryParams, HttpHeader.EMPTY, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));263 }264 public void patch(String url, Map<String, ?> requestBody, HttpResponseValidator validator) {265 patch(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));266 }267 public void patch(String url, Collection<?> requestBody, HttpResponseValidator validator) {268 patch(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));269 }270 public void patch(String url, Map<String, ?> requestBody) {271 patch(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);272 }273 public void patch(String url, Collection<?> requestBody) {274 patch(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);275 }276 public <E> E patch(String url, HttpQueryParams queryParams, HttpResponseValidatorWithReturn validator) {277 return patch(url, queryParams, EmptyRequestBody.INSTANCE, validator);278 }279 public <E> E patch(String url, HttpResponseValidatorWithReturn validator) {280 return patch(url, EmptyRequestBody.INSTANCE, validator);281 }282 public void patch(String url, HttpQueryParams queryParams, HttpResponseValidator validator) {283 patch(url, queryParams, EmptyRequestBody.INSTANCE, new HttpResponseValidatorIgnoringReturn(validator));284 }285 public void patch(String url, HttpResponseValidator validator) {286 patch(url, EmptyRequestBody.INSTANCE, new HttpResponseValidatorIgnoringReturn(validator));287 }288 public void patch(String url, HttpQueryParams queryParams, HttpHeader header) {289 patch(url, queryParams, header, EMPTY_RESPONSE_VALIDATOR);290 }291 public void patch(String url, HttpHeader header) {292 patch(url, header, EMPTY_RESPONSE_VALIDATOR);293 }294 public void patch(String url, HttpQueryParams queryParams) {295 patch(url, queryParams, EMPTY_RESPONSE_VALIDATOR);296 }297 public void patch(String url) {298 patch(url, EMPTY_RESPONSE_VALIDATOR);299 }300 public void patch(String url, HttpQueryParams queryParams, HttpRequestBody requestBody) {301 patch(url, queryParams, requestBody, EMPTY_RESPONSE_VALIDATOR);302 }303 public void patch(String url, HttpRequestBody requestBody) {304 patch(url, requestBody, EMPTY_RESPONSE_VALIDATOR);305 }306 public <E> E post(String url, HttpQueryParams queryParams, HttpHeader header, HttpRequestBody requestBody, HttpResponseValidatorWithReturn validator) {307 return executeAndValidateHttpCall("POST", queryParams.attachToUrl(url),308 (fullUrl, fullHeader) -> postToFullUrl(fullUrl, fullHeader, requestBody),309 header,310 requestBody,311 validator);312 }313 public <E> E post(String url, HttpHeader header, HttpRequestBody requestBody, HttpResponseValidatorWithReturn validator) {314 return post(url, HttpQueryParams.EMPTY, header, requestBody, validator);315 }316 public void post(String url, HttpQueryParams queryParams, HttpHeader header, HttpRequestBody requestBody, HttpResponseValidator validator) {317 post(url, queryParams, header, requestBody, new HttpResponseValidatorIgnoringReturn(validator));318 }319 public void post(String url, HttpQueryParams queryParams, HttpHeader header, HttpRequestBody requestBody) {320 post(url, queryParams, header, requestBody, EMPTY_RESPONSE_VALIDATOR);321 }322 public void post(String url, HttpHeader header, HttpRequestBody requestBody, HttpResponseValidator validator) {323 post(url, header, requestBody, new HttpResponseValidatorIgnoringReturn(validator));324 }325 public void post(String url, HttpHeader header, HttpRequestBody requestBody) {326 post(url, header, requestBody, EMPTY_RESPONSE_VALIDATOR);327 }328 public <E> E post(String url, HttpQueryParams queryParams, HttpHeader header, HttpResponseValidatorWithReturn validator) {329 return post(url, queryParams, header, EmptyRequestBody.INSTANCE, validator);330 }331 public <E> E post(String url, HttpHeader header, HttpResponseValidatorWithReturn validator) {332 return post(url, header, EmptyRequestBody.INSTANCE, validator);333 }334 public void post(String url, HttpQueryParams queryParams, HttpHeader header, HttpResponseValidator validator) {335 post(url, queryParams, header, EmptyRequestBody.INSTANCE, new HttpResponseValidatorIgnoringReturn(validator));336 }337 public void post(String url, HttpHeader header, HttpResponseValidator validator) {338 post(url, header, EmptyRequestBody.INSTANCE, new HttpResponseValidatorIgnoringReturn(validator));339 }340 public <E> E post(String url, HttpQueryParams queryParams, HttpRequestBody requestBody, HttpResponseValidatorWithReturn validator) {341 return post(url, queryParams, HttpHeader.EMPTY, requestBody, validator);342 }343 public <E> E post(String url, HttpRequestBody requestBody, HttpResponseValidatorWithReturn validator) {344 return post(url, HttpHeader.EMPTY, requestBody, validator);345 }346 public void post(String url, HttpQueryParams queryParams, HttpRequestBody requestBody, HttpResponseValidator validator) {347 post(url, queryParams, requestBody, new HttpResponseValidatorIgnoringReturn(validator));348 }349 public void post(String url, HttpRequestBody requestBody, HttpResponseValidator validator) {350 post(url, requestBody, new HttpResponseValidatorIgnoringReturn(validator));351 }352 public <E> E post(String url, HttpQueryParams queryParams, HttpHeader header, Map<String, ?> requestBody, HttpResponseValidatorWithReturn validator) {353 return post(url, queryParams, header, new JsonRequestBody(requestBody), validator);354 }355 public <E> E post(String url, HttpQueryParams queryParams, HttpHeader header, Collection<?> requestBody, HttpResponseValidatorWithReturn validator) {356 return post(url, queryParams, header, new JsonRequestBody(requestBody), validator);357 }358 public <E> E post(String url, HttpHeader header, Map<String, ?> requestBody, HttpResponseValidatorWithReturn validator) {359 return post(url, header, new JsonRequestBody(requestBody), validator);360 }361 public <E> E post(String url, HttpHeader header, Collection<?> requestBody, HttpResponseValidatorWithReturn validator) {362 return post(url, header, new JsonRequestBody(requestBody), validator);363 }364 public void post(String url, HttpQueryParams queryParams, HttpHeader header, Map<String, ?> requestBody, HttpResponseValidator validator) {365 post(url, queryParams, header, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));366 }367 public void post(String url, HttpQueryParams queryParams, HttpHeader header, Collection<?> requestBody, HttpResponseValidator validator) {368 post(url, queryParams, header, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));369 }370 public void post(String url, HttpQueryParams queryParams, HttpHeader header, Map<String, ?> requestBody) {371 post(url, queryParams, header, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);372 }373 public void post(String url, HttpQueryParams queryParams, HttpHeader header, Collection<?> requestBody) {374 post(url, queryParams, header, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);375 }376 public void post(String url, HttpHeader header, Map<String, ?> requestBody, HttpResponseValidator validator) {377 post(url, header, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));378 }379 public void post(String url, HttpHeader header, Collection<?> requestBody, HttpResponseValidator validator) {380 post(url, header, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));381 }382 public void post(String url, HttpHeader header, Map<String, ?> requestBody) {383 post(url, header, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);384 }385 public void post(String url, HttpHeader header, Collection<?> requestBody) {386 post(url, header, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);387 }388 public <E> E post(String url, HttpQueryParams queryParams, Map<String, ?> requestBody, HttpResponseValidatorWithReturn validator) {389 return post(url, queryParams, HttpHeader.EMPTY, new JsonRequestBody(requestBody), validator);390 }391 public <E> E post(String url, HttpQueryParams queryParams, Collection<?> requestBody, HttpResponseValidatorWithReturn validator) {392 return post(url, queryParams, HttpHeader.EMPTY, new JsonRequestBody(requestBody), validator);393 }394 public <E> E post(String url, Map<String, ?> requestBody, HttpResponseValidatorWithReturn validator) {395 return post(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), validator);396 }397 public <E> E post(String url, Collection<?> requestBody, HttpResponseValidatorWithReturn validator) {398 return post(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), validator);399 }400 public void post(String url, HttpQueryParams queryParams, Map<String, ?> requestBody, HttpResponseValidator validator) {401 post(url, queryParams, HttpHeader.EMPTY, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));402 }403 public void post(String url, HttpQueryParams queryParams, Collection<?> requestBody, HttpResponseValidator validator) {404 post(url, queryParams, HttpHeader.EMPTY, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));405 }406 public void post(String url, HttpQueryParams queryParams, Map<String, ?> requestBody) {407 post(url, queryParams, HttpHeader.EMPTY, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);408 }409 public void post(String url, HttpQueryParams queryParams, Collection<?> requestBody) {410 post(url, queryParams, HttpHeader.EMPTY, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);411 }412 public void post(String url, Map<String, ?> requestBody, HttpResponseValidator validator) {413 post(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));414 }415 public void post(String url, Collection<?> requestBody, HttpResponseValidator validator) {416 post(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));417 }418 public void post(String url, Map<String, ?> requestBody) {419 post(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);420 }421 public void post(String url, Collection<?> requestBody) {422 post(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);423 }424 public <E> E post(String url, HttpQueryParams queryParams, HttpResponseValidatorWithReturn validator) {425 return post(url, queryParams, EmptyRequestBody.INSTANCE, validator);426 }427 public <E> E post(String url, HttpResponseValidatorWithReturn validator) {428 return post(url, EmptyRequestBody.INSTANCE, validator);429 }430 public void post(String url, HttpQueryParams queryParams, HttpResponseValidator validator) {431 post(url, queryParams, EmptyRequestBody.INSTANCE, new HttpResponseValidatorIgnoringReturn(validator));432 }433 public void post(String url, HttpResponseValidator validator) {434 post(url, EmptyRequestBody.INSTANCE, new HttpResponseValidatorIgnoringReturn(validator));435 }436 public void post(String url, HttpQueryParams queryParams, HttpHeader header) {437 post(url, queryParams, header, EMPTY_RESPONSE_VALIDATOR);438 }439 public void post(String url, HttpHeader header) {440 post(url, header, EMPTY_RESPONSE_VALIDATOR);441 }442 public void post(String url, HttpQueryParams queryParams) {443 post(url, queryParams, EMPTY_RESPONSE_VALIDATOR);444 }445 public void post(String url) {446 post(url, EMPTY_RESPONSE_VALIDATOR);447 }448 public void post(String url, HttpQueryParams queryParams, HttpRequestBody requestBody) {449 post(url, queryParams, requestBody, EMPTY_RESPONSE_VALIDATOR);450 }451 public void post(String url, HttpRequestBody requestBody) {452 post(url, requestBody, EMPTY_RESPONSE_VALIDATOR);453 }454 public <E> E put(String url, HttpQueryParams queryParams, HttpHeader header, HttpRequestBody requestBody, HttpResponseValidatorWithReturn validator) {455 return executeAndValidateHttpCall("PUT", queryParams.attachToUrl(url),456 (fullUrl, fullHeader) -> putToFullUrl(fullUrl, fullHeader, requestBody),457 header,458 requestBody,459 validator);460 }461 public void put(String url, HttpQueryParams queryParams, HttpHeader header, HttpRequestBody requestBody, HttpResponseValidator validator) {462 put(url, queryParams, header, requestBody, new HttpResponseValidatorIgnoringReturn(validator));463 }464 public void put(String url, HttpQueryParams queryParams, HttpHeader header, Map<String, ?> requestBody, HttpResponseValidator validator) {465 put(url, queryParams, header, requestBody, new HttpResponseValidatorIgnoringReturn(validator));466 }467 public void put(String url, HttpQueryParams queryParams, HttpHeader header, Collection<?> requestBody, HttpResponseValidator validator) {468 put(url, queryParams, header, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));469 }470 public void put(String url, HttpQueryParams queryParams, HttpHeader header, HttpRequestBody requestBody) {471 put(url, queryParams, header, requestBody, EMPTY_RESPONSE_VALIDATOR);472 }473 public <E> E put(String url, HttpHeader header, HttpRequestBody requestBody, HttpResponseValidatorWithReturn validator) {474 return put(url, HttpQueryParams.EMPTY, header, requestBody, validator);475 }476 public void put(String url, HttpHeader header, HttpRequestBody requestBody, HttpResponseValidator validator) {477 put(url, header, requestBody, new HttpResponseValidatorIgnoringReturn(validator));478 }479 public void put(String url, HttpHeader header, HttpRequestBody requestBody) {480 put(url, header, requestBody, EMPTY_RESPONSE_VALIDATOR);481 }482 public <E> E put(String url, HttpQueryParams queryParams, HttpRequestBody requestBody, HttpResponseValidatorWithReturn validator) {483 return put(url, queryParams, HttpHeader.EMPTY, requestBody, validator);484 }485 public <E> E put(String url, HttpQueryParams queryParams, Map<String, ?> requestBody, HttpResponseValidatorWithReturn validator) {486 return put(url, queryParams, HttpHeader.EMPTY, requestBody, validator);487 }488 public <E> E put(String url, HttpQueryParams queryParams, Collection<?> requestBody, HttpResponseValidatorWithReturn validator) {489 return put(url, queryParams, HttpHeader.EMPTY, requestBody, validator);490 }491 public void put(String url, HttpQueryParams queryParams, HttpRequestBody requestBody, HttpResponseValidator validator) {492 put(url, queryParams, requestBody, new HttpResponseValidatorIgnoringReturn(validator));493 }494 public void put(String url, HttpQueryParams queryParams, Map<String, ?> requestBody, HttpResponseValidator validator) {495 put(url, queryParams, requestBody, new HttpResponseValidatorIgnoringReturn(validator));496 }497 public void put(String url, HttpQueryParams queryParams, Collection<?> requestBody, HttpResponseValidator validator) {498 put(url, queryParams, requestBody, new HttpResponseValidatorIgnoringReturn(validator));499 }500 public void put(String url, HttpQueryParams queryParams, HttpRequestBody requestBody) {501 put(url, queryParams, requestBody, EMPTY_RESPONSE_VALIDATOR);502 }503 public <E> E put(String url, HttpRequestBody requestBody, HttpResponseValidatorWithReturn validator) {504 return put(url, HttpHeader.EMPTY, requestBody, validator);505 }506 public void put(String url, HttpRequestBody requestBody, HttpResponseValidator validator) {507 put(url, requestBody, new HttpResponseValidatorIgnoringReturn(validator));508 }509 public void put(String url, HttpRequestBody requestBody) {510 put(url, requestBody, EMPTY_RESPONSE_VALIDATOR);511 }512 public <E> E put(String url, HttpQueryParams queryParams, HttpResponseValidatorWithReturn validator) {513 return put(url, queryParams, HttpHeader.EMPTY, EmptyRequestBody.INSTANCE, validator);514 }515 public void put(String url, HttpQueryParams queryParams, HttpResponseValidator validator) {516 put(url, queryParams, HttpHeader.EMPTY, EmptyRequestBody.INSTANCE, new HttpResponseValidatorIgnoringReturn(validator));517 }518 public void put(String url, HttpQueryParams queryParams) {519 put(url, queryParams, HttpHeader.EMPTY, EmptyRequestBody.INSTANCE, EMPTY_RESPONSE_VALIDATOR);520 }521 public <E> E put(String url, HttpResponseValidatorWithReturn validator) {522 return put(url, HttpHeader.EMPTY, EmptyRequestBody.INSTANCE, validator);523 }524 public void put(String url, HttpResponseValidator validator) {525 put(url, HttpHeader.EMPTY, EmptyRequestBody.INSTANCE, new HttpResponseValidatorIgnoringReturn(validator));526 }527 public void put(String url) {528 put(url, HttpHeader.EMPTY, EmptyRequestBody.INSTANCE, EMPTY_RESPONSE_VALIDATOR);529 }530 public <E> E put(String url, HttpQueryParams queryParams, HttpHeader header, Map<String, ?> requestBody, HttpResponseValidatorWithReturn validator) {531 return put(url, queryParams, header, new JsonRequestBody(requestBody), validator);532 }533 public <E> E put(String url, HttpQueryParams queryParams, HttpHeader header, Collection<?> requestBody, HttpResponseValidatorWithReturn validator) {534 return put(url, queryParams, header, new JsonRequestBody(requestBody), validator);535 }536 public <E> E put(String url, HttpHeader header, Map<String, ?> requestBody, HttpResponseValidatorWithReturn validator) {537 return put(url, header, new JsonRequestBody(requestBody), validator);538 }539 public <E> E put(String url, HttpHeader header, Collection<?> requestBody, HttpResponseValidatorWithReturn validator) {540 return put(url, header, new JsonRequestBody(requestBody), validator);541 }542 public void put(String url, HttpHeader header, Map<String, ?> requestBody, HttpResponseValidator validator) {543 put(url, header, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));544 }545 public void put(String url, HttpHeader header, Collection<?> requestBody, HttpResponseValidator validator) {546 put(url, header, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));547 }548 public void put(String url, HttpHeader header, Map<String, ?> requestBody) {549 put(url, header, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);550 }551 public void put(String url, HttpHeader header, Collection<?> requestBody) {552 put(url, header, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);553 }554 public void put(String url, HttpQueryParams queryParams, HttpHeader header, Map<String, ?> requestBody) {555 put(url, queryParams, header, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);556 }557 public void put(String url, HttpQueryParams queryParams, HttpHeader header, Collection<?> requestBody) {558 put(url, queryParams, header, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);559 }560 public <E> E put(String url, Map<String, ?> requestBody, HttpResponseValidatorWithReturn validator) {561 return put(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), validator);562 }563 public <E> E put(String url, Collection<?> requestBody, HttpResponseValidatorWithReturn validator) {564 return put(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), validator);565 }566 public void put(String url, Map<String, ?> requestBody, HttpResponseValidator validator) {567 put(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));568 }569 public void put(String url, Collection<?> requestBody, HttpResponseValidator validator) {570 put(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), new HttpResponseValidatorIgnoringReturn(validator));571 }572 public void put(String url, Map<String, ?> requestBody) {573 put(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);574 }575 public void put(String url, Collection<?> requestBody) {576 put(url, HttpHeader.EMPTY, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);577 }578 public void put(String url, HttpQueryParams queryParams, Map<String, ?> requestBody) {579 put(url, queryParams, HttpHeader.EMPTY, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);580 }581 public void put(String url, HttpQueryParams queryParams, Collection<?> requestBody) {582 put(url, queryParams, HttpHeader.EMPTY, new JsonRequestBody(requestBody), EMPTY_RESPONSE_VALIDATOR);583 }584 public <E> E put(String url, HttpQueryParams queryParams, HttpHeader header, HttpResponseValidatorWithReturn validator) {585 return put(url, queryParams, header, EmptyRequestBody.INSTANCE, validator);586 }587 public void put(String url, HttpQueryParams queryParams, HttpHeader header, HttpResponseValidator validator) {588 put(url, queryParams, header, new HttpResponseValidatorIgnoringReturn(validator));589 }590 public void put(String url, HttpQueryParams queryParams, HttpHeader header) {591 put(url, queryParams, header, EMPTY_RESPONSE_VALIDATOR);592 }593 public <E> E put(String url, HttpHeader header, HttpResponseValidatorWithReturn validator) {594 return put(url, header, EmptyRequestBody.INSTANCE, validator);595 }596 public void put(String url, HttpHeader header, HttpResponseValidator validator) {597 put(url, header, EmptyRequestBody.INSTANCE, new HttpResponseValidatorIgnoringReturn(validator));598 }599 public void put(String url, HttpHeader header) {600 put(url, header, EmptyRequestBody.INSTANCE, EMPTY_RESPONSE_VALIDATOR);601 }602 public <E> E delete(String url, HttpQueryParams queryParams, HttpHeader header, HttpResponseValidatorWithReturn validator) {603 return executeAndValidateHttpCall("DELETE", queryParams.attachToUrl(url),604 this::deleteToFullUrl,605 header,606 null,607 validator);608 }609 public void delete(String url, HttpQueryParams queryParams, HttpHeader header, HttpResponseValidator validator) {610 delete(url, queryParams, header, new HttpResponseValidatorIgnoringReturn(validator));611 }612 public <E> E delete(String url, HttpHeader header, HttpResponseValidatorWithReturn validator) {613 return delete(url, HttpQueryParams.EMPTY, header, validator);614 }615 public void delete(String url, HttpHeader header, HttpResponseValidator validator) {616 delete(url, HttpQueryParams.EMPTY, header, new HttpResponseValidatorIgnoringReturn(validator));617 }618 public <E> E delete(String url, HttpQueryParams queryParams, HttpResponseValidatorWithReturn validator) {619 return delete(url, queryParams, HttpHeader.EMPTY, validator);620 }621 public void delete(String url, HttpQueryParams queryParams, HttpResponseValidator validator) {622 delete(url, queryParams, HttpHeader.EMPTY, new HttpResponseValidatorIgnoringReturn(validator));623 }624 public <E> E delete(String url, HttpResponseValidatorWithReturn validator) {625 return delete(url, HttpQueryParams.EMPTY, HttpHeader.EMPTY, validator);626 }627 public void delete(String url, HttpResponseValidator validator) {628 delete(url, HttpQueryParams.EMPTY, HttpHeader.EMPTY, new HttpResponseValidatorIgnoringReturn(validator));629 }630 public void delete(String url, HttpQueryParams queryParams, HttpHeader header) {631 delete(url, queryParams, header, EMPTY_RESPONSE_VALIDATOR);632 }633 public void delete(String url, HttpHeader header) {634 delete(url, HttpQueryParams.EMPTY, header, EMPTY_RESPONSE_VALIDATOR);635 }636 public void delete(String url, HttpQueryParams queryParams) {637 delete(url, queryParams, HttpHeader.EMPTY, EMPTY_RESPONSE_VALIDATOR);638 }639 public void delete(String url) {640 delete(url, HttpQueryParams.EMPTY, HttpHeader.EMPTY, EMPTY_RESPONSE_VALIDATOR);641 }642 public HttpHeader header(CharSequence firstKey, CharSequence firstValue, CharSequence... restKv) {643 return new HttpHeader().with(firstKey, firstValue, restKv);644 }645 public HttpHeader header(Map<CharSequence, CharSequence> properties) {646 return new HttpHeader().with(properties);647 }648 public HttpQueryParams query(Map<?, ?> params) {649 return new HttpQueryParams(params);650 }651 public HttpQueryParams query(CharSequence firstKey, Object firstValue, Object... restKv) {652 return new HttpQueryParams(CollectionUtils.aMapOf(firstKey, firstValue, restKv));653 }654 public HttpRequestBody body(String mimeType, String content) {655 return TextRequestBody.withType(mimeType, content);656 }657 public HttpRequestBody body(String mimeType, byte[] content) {658 return BinaryRequestBody.withType(mimeType, content);659 }660 public MultiPartFormData formData(MultiPartFormField... fields) {661 MultiPartFormData formData = new MultiPartFormData();662 Arrays.stream(fields).forEach(formData::addField);663 return formData;664 }665 public MultiPartFormData formData(Map<String, ?> fields) {666 return new MultiPartFormData(fields);667 }668 public MultiPartFormField formField(byte[] fileContent) {669 return formField("file", fileContent, null);670 }671 public MultiPartFormField formField(String fieldName, byte[] fileContent) {672 return formField(fieldName, fileContent, null);673 }674 public MultiPartFormField formField(String fieldName, Path file) {675 return formField(fieldName, file, file.getFileName().toString());676 }677 public MultiPartFormField formField(String fieldName, Path file, String fileName) {678 return MultiPartFormField.fileFormField(fieldName, file, fileName);679 }680 public MultiPartFormField formField(String fieldName, byte[] fileContent, String fileName) {681 return MultiPartFormField.binaryFormField(fieldName, fileContent, fileName);682 }683 public MultiPartFormField formField(String fieldName, String textContent, String fileName) {684 return MultiPartFormField.textFormField(fieldName, textContent, fileName);685 }686 public MultiPartFormField formField(String fieldName, String textContent) {687 return formField(fieldName, textContent, null);688 }689 public MultiPartFile formFile(String fileName, byte[] fileContent) {690 return new MultiPartFile(fileName, fileContent);691 }692 public MultiPartFile formFile(String fileName, Path file) {693 return new MultiPartFile(fileName, file);694 }695 public HttpValidationResult getLastValidationResult() {696 return lastValidationResult.get();697 }698 public HttpResponse getToFullUrl(String fullUrl, HttpHeader requestHeader) {699 return request("GET", fullUrl, requestHeader, EmptyRequestBody.INSTANCE);700 }701 public HttpResponse deleteToFullUrl(String fullUrl, HttpHeader requestHeader) {702 return request("DELETE", fullUrl, requestHeader, EmptyRequestBody.INSTANCE);703 }704 public HttpResponse patchToFullUrl(String fullUrl, HttpHeader requestHeader, HttpRequestBody requestBody) {705 return request("PATCH", fullUrl, requestHeader, requestBody);706 }707 public HttpResponse postToFullUrl(String fullUrl, HttpHeader requestHeader, HttpRequestBody requestBody) {708 return request("POST", fullUrl, requestHeader, requestBody);709 }710 public HttpResponse putToFullUrl(String fullUrl, HttpHeader requestHeader, HttpRequestBody requestBody) {711 return request("PUT", fullUrl, requestHeader, requestBody);712 }713 private <R> R executeAndValidateHttpCall(String requestMethod,714 String url,715 HttpCall httpCall,716 HttpHeader requestHeader,717 HttpRequestBody requestBody,718 HttpResponseValidatorWithReturn validator) {719 String fullUrl = WebTauHttpConfigurations.fullUrl(url);720 HttpHeader fullHeader = WebTauHttpConfigurations.fullHeader(fullUrl, url, requestHeader);721 HttpValidationResult validationResult = new HttpValidationResult(Persona.getCurrentPersona().getId(),722 requestMethod, url, fullUrl, fullHeader, requestBody);723 WebTauStep step = createHttpStep(validationResult, httpCall, validator);724 step.setInput(new HttpStepInput(validationResult));725 step.setOutputSupplier(() -> validationResult);726 try {727 return step.execute(StepReportOptions.REPORT_ALL);728 } finally {729 lastValidationResult.set(validationResult);730 }731 }732 private <R> WebTauStep createHttpStep(HttpValidationResult validationResult,733 HttpCall httpCall,734 HttpResponseValidatorWithReturn validator) {735 Supplier<Object> httpCallSupplier = () -> {736 HttpResponse response = null;737 try {738 BeforeFirstHttpCallListenerTrigger.trigger();739 HttpListeners.beforeHttpCall(validationResult.getRequestMethod(),740 validationResult.getUrl(), validationResult.getFullUrl(),741 validationResult.getRequestHeader(), validationResult.getRequestBody());742 long startTime = Time.currentTimeMillis();743 validationResult.setStartTime(startTime);744 response = httpCall.execute(validationResult.getFullUrl(),745 validationResult.getRequestHeader());746 response = followRedirects(validationResult.getRequestMethod(),747 httpCall, validationResult.getRequestHeader(), response);748 validationResult.calcElapsedTimeIfNotCalculated();749 validationResult.setResponse(response);750 751 validationResult.setOperationId(HttpOperationIdProviders.operationId(752 validationResult.getRequestMethod(),753 validationResult.getUrl(),754 validationResult.getFullUrl(),755 validationResult.getRequestHeader(),756 validationResult.getRequestBody()));757 R validationBlockReturnedValue = validateAndRecord(validationResult, validator);758 if (validationResult.hasMismatches()) {759 throw new AssertionError("\n" + validationResult.renderMismatches());760 }761 return validationBlockReturnedValue;762 } catch (AssertionError e) {763 throw e;764 } catch (Throwable e) {765 validationResult.setErrorMessage(StackTraceUtils.fullCauseMessage(e));766 throw new HttpException("error during http." + validationResult.getRequestMethod().toLowerCase() + "(" +767 validationResult.getFullUrl() + "): " + StackTraceUtils.fullCauseMessage(e), e);768 } finally {769 validationResult.calcElapsedTimeIfNotCalculated();770 HttpListeners.afterHttpCall(validationResult.getRequestMethod(),771 validationResult.getUrl(), validationResult.getFullUrl(),772 validationResult.getRequestHeader(), validationResult.getRequestBody(),773 response);774 }775 };776 return WebTauStep.createStep(777 tokenizedMessage(action("executing HTTP " + validationResult.getRequestMethod()), urlValue(validationResult.getFullUrl())),778 () -> tokenizedMessage(action("executed HTTP " + validationResult.getRequestMethod()), urlValue(validationResult.getFullUrl())),779 httpCallSupplier);780 }781 private HttpResponse followRedirects(String requestMethod, HttpCall httpCall, HttpHeader fullRequestHeader, HttpResponse response) {782 int retryCount = 0;783 while (response.isRedirect() && getCfg().shouldFollowRedirects() && retryCount++ < getCfg().maxRedirects()) {784 WebTauStep httpStep = createRedirectStep(requestMethod, response.locationHeader(), httpCall, fullRequestHeader);785 response = httpStep.execute(StepReportOptions.REPORT_ALL);786 }787 return response;788 }789 private WebTauStep createRedirectStep(String requestMethod, String fullUrl, HttpCall httpCall,790 HttpHeader fullRequestHeader) {791 Supplier<Object> httpCallSupplier = () -> httpCall.execute(fullUrl, fullRequestHeader);792 return WebTauStep.createStep(tokenizedMessage(action("executing HTTP redirect to " + requestMethod), urlValue(fullUrl)),793 () -> tokenizedMessage(action("executed HTTP redirect to " + requestMethod), urlValue(fullUrl)),794 httpCallSupplier);795 }796 @SuppressWarnings("unchecked")797 private <R> R validateAndRecord(HttpValidationResult validationResult,798 HttpResponseValidatorWithReturn validator) {799 HeaderDataNode header = new HeaderDataNode(validationResult.getResponse());800 BodyDataNode body = new BodyDataNode(validationResult.getResponse(),801 createBodyDataNodeAndMarkResponseInvalidWhenParsingError(validationResult));802 validationResult.setResponseHeaderNode(header);803 validationResult.setResponseBodyNode(body);804 ExpectationHandler recordAndThrowHandler = new ExpectationHandler() {805 @Override806 public Flow onValueMismatch(ValueMatcher valueMatcher, ActualPath actualPath, Object actualValue, String message) {807 validationResult.addMismatch(message);808 return ExpectationHandler.Flow.PassToNext;809 }810 };811 // 1. validate using user provided validation block812 // 2. validate status code813 // 3. if validation block throws exception,814 // we still validate status code to make sure user is aware of the status code problem815 try {816 R extracted = ExpectationHandlers.withAdditionalHandler(recordAndThrowHandler, () -> {817 Object returnedValue = validator.validate(header, body);818 return (R) extractOriginalValue(returnedValue);819 });820 ExpectationHandlers.withAdditionalHandler(recordAndThrowHandler, () -> {821 validateStatusCode(validationResult);822 return null;823 });824 HttpValidationHandlers.validate(validationResult);825 return extracted;826 } catch (Throwable e) {827 ExpectationHandlers.withAdditionalHandler(new ExpectationHandler() {828 @Override829 public Flow onValueMismatch(ValueMatcher valueMatcher, ActualPath actualPath, Object actualValue, String message) {830 validationResult.addMismatch(message);831 // another assertion happened before status code check832 // we discard it and throw status code instead833 if (e instanceof AssertionError) {834 throw new AssertionError('\n' + message);835 }836 // originally an exception happened,837 // so we combine its message with status code failure838 throw new AssertionError('\n' + message +839 "\n\nadditional exception message:\n" + e.getMessage(), e);840 }841 }, () -> {842 validateErrorsOnlyStatusCode(validationResult);843 return null;844 });845 throw e;846 }847 }848 private DataNode createBodyDataNodeAndMarkResponseInvalidWhenParsingError(HttpValidationResult validationResult) {849 DataNodeId id = new DataNodeId("body");850 HttpResponse response = validationResult.getResponse();851 if (!response.isBinary() && response.nullOrEmptyTextContent()) {852 return new StructuredDataNode(id, new TraceableValue(null));853 }854 if (response.isText()) {855 return new StructuredDataNode(id, new TraceableValue(response.getTextContent()));856 }857 if (response.isJson()) {858 return tryParseJsonAndReturnTextIfFails(validationResult, id, response.getTextContent());859 }860 return new StructuredDataNode(id, new TraceableValue(response.getBinaryContent()));861 }862 private DataNode tryParseJsonAndReturnTextIfFails(HttpValidationResult validationResult,863 DataNodeId id,864 String textContent) {865 try {866 Object object = JsonUtils.deserialize(textContent);867 return DataNodeBuilder.fromValue(id, object);868 } catch (JsonParseException e) {869 validationResult.setBodyParseErrorMessage(e.getMessage());870 validationResult.addMismatch("can't parse JSON response of " + validationResult.getFullUrl()871 + ": " + e.getMessage());872 return new StructuredDataNode(id,873 new TraceableValue("invalid JSON:\n" + textContent));874 }875 }876 private void validateStatusCode(HttpValidationResult validationResult) {877 DataNode statusCode = validationResult.getHeaderNode().statusCode;878 if (statusCode.getTraceableValue().getCheckLevel() != CheckLevel.None) {879 return;880 }881 statusCode.should(equal(defaultExpectedStatusCodeByRequest(validationResult)));882 }883 private void validateErrorsOnlyStatusCode(HttpValidationResult validationResult) {884 DataNode statusCode = validationResult.getHeaderNode().statusCode;885 if (statusCode.getTraceableValue().getCheckLevel() != CheckLevel.None) {886 return;887 }888 Integer statusCodeValue = (Integer) statusCode.getTraceableValue().getValue();889 if (statusCodeValue >= 200 && statusCodeValue < 300) {890 return;891 }892 statusCode.should(equal(defaultExpectedStatusCodeByRequest(validationResult)));893 }894 private Integer defaultExpectedStatusCodeByRequest(HttpValidationResult validationResult) {895 switch (validationResult.getRequestMethod()) {896 case "POST":897 return 201;898 case "PUT":899 case "DELETE":900 case "PATCH":901 return validationResult.hasResponseContent() ? 200 : 204;902 case "GET":903 default:904 return 200;905 }906 }907 private HttpResponse request(String method, String fullUrl,908 HttpHeader requestHeader,909 HttpRequestBody requestBody) {910 if (requestHeader == null) {911 throw new IllegalArgumentException("Request header is null, check your header provider is not returning null");912 }913 try {914 HttpURLConnection connection = createConnection(fullUrl);915 connection.setInstanceFollowRedirects(false);916 setRequestMethod(method, connection);917 connection.setConnectTimeout(getCfg().getHttpTimeout());918 connection.setReadTimeout(getCfg().getHttpTimeout());919 connection.setRequestProperty("Content-Type", requestBody.type());920 connection.setRequestProperty("Accept", requestBody.type());921 connection.setRequestProperty("User-Agent", getCfg().getUserAgent());922 requestHeader.forEachProperty(connection::setRequestProperty);923 if (! (requestBody instanceof EmptyRequestBody)) {924 validateRequestContent(requestBody);925 connection.setDoOutput(true);926 if (requestBody.isBinary()) {927 connection.getOutputStream().write(requestBody.asBytes());928 } else {929 IOUtils.write(requestBody.asString(), connection.getOutputStream(), UTF_8);930 }931 }932 return extractHttpResponse(connection);933 } catch (IOException e) {934 throw new RuntimeException("couldn't " + method + ": " + fullUrl, e);935 }936 }937 private void validateRequestContent(HttpRequestBody requestBody) {938 if (requestBody.type().contains("/json")) {939 validateJsonRequestContent(requestBody.asString());940 }941 }942 private void validateJsonRequestContent(String json) {943 JsonUtils.deserialize(json);944 }945 private HttpURLConnection createConnection(String fullUrl) {946 try {947 if (getCfg().isHttpProxySet()) {948 HostPort hostPort = new HostPort(getCfg().getHttpProxyConfigValue().getAsString());949 return (HttpURLConnection) new URL(fullUrl).openConnection(new Proxy(Proxy.Type.HTTP,950 new InetSocketAddress(hostPort.host, hostPort.port)));951 }952 return (HttpURLConnection) new URL(fullUrl).openConnection();953 } catch (IOException e) {954 throw new UncheckedIOException(e);955 }956 }957 private void setRequestMethod(String method, HttpURLConnection connection) throws ProtocolException {958 if (method.equals("PATCH")) {959 // Http(s)UrlConnection does not recognize PATCH, unfortunately, nor will it be added, see960 // https://bugs.openjdk.java.net/browse/JDK-8207840 .961 // The Oracle-recommended solution requires JDK 11's new java.net.http package.962 try {963 Object connectionTarget = connection;964 if (connection instanceof HttpsURLConnection) {965 final Field delegateField = HttpsURLConnectionImpl.class.getDeclaredField("delegate");966 delegateField.setAccessible(true);967 connectionTarget = delegateField.get(connection);968 }969 final Field f = HttpURLConnection.class.getDeclaredField("method");970 f.setAccessible(true);971 f.set(connectionTarget, "PATCH");972 } catch (IllegalAccessException | NoSuchFieldException e) {973 throw new RuntimeException("Failed to enable PATCH on HttpUrlConnection", e);974 }975 } else {976 connection.setRequestMethod(method);977 }978 }979 private HttpResponse extractHttpResponse(HttpURLConnection connection) throws IOException {980 HttpResponse httpResponse = new HttpResponse();981 populateResponseHeader(httpResponse, connection);982 InputStream inputStream = getInputStream(connection);983 httpResponse.setStatusCode(connection.getResponseCode());984 httpResponse.setContentType(connection.getContentType() != null ? connection.getContentType() : "");985 if (!httpResponse.isBinary()) {986 httpResponse.setTextContent(inputStream != null ? IOUtils.toString(inputStream, StandardCharsets.UTF_8) : "");987 } else {988 httpResponse.setBinaryContent(inputStream != null ? IOUtils.toByteArray(inputStream) : new byte[0]);989 }990 return httpResponse;991 }992 private InputStream getInputStream(HttpURLConnection connection) throws IOException {993 InputStream inputStream = connection.getResponseCode() < 400 ? connection.getInputStream() : connection.getErrorStream();994 if ("gzip".equals(connection.getContentEncoding())) {995 inputStream = new GZIPInputStream(inputStream);996 }997 return inputStream;998 }999 private void populateResponseHeader(HttpResponse httpResponse, HttpURLConnection connection) {1000 Map<CharSequence, CharSequence> header = new LinkedHashMap<>();1001 connection.getHeaderFields().forEach((key, values) -> {1002 if (!values.isEmpty()) {1003 header.put(key, values.get(0));1004 }1005 });1006 httpResponse.addHeader(header);1007 }1008 /**1009 * Response consist of DataNode and Traceable values, but we need to return a simple value that can be used for1010 * regular calculations and to drive test flow1011 *1012 * @param v value returned from a validation callback1013 * @return extracted regular value1014 */1015 private Object extractOriginalValue(Object v) {1016 if (v instanceof DataNode) {1017 return ((DataNode) v).get();1018 }1019 if (v instanceof TraceableValue) {1020 return ((TraceableValue) v).getValue();1021 }1022 if (v instanceof List) {1023 return ((List<?>) v).stream().map(this::extractOriginalValue).collect(toList());1024 }1025 return v;1026 }1027 private interface HttpCall {1028 HttpResponse execute(String fullUrl, HttpHeader fullHeader);1029 }1030 private static class HostPort {1031 private final String host;1032 private final int port;1033 private HostPort(String hostPort) {1034 String[] parts = hostPort.split(":");1035 if (parts.length != 2) {1036 throw new IllegalArgumentException("expect host:port format for proxy, given: " + hostPort);1037 }1038 host = parts[0];1039 port = Integer.parseInt(parts[1]);1040 }1041 }1042 private static class BeforeFirstHttpCallListenerTrigger {1043 static {1044 HttpListeners.beforeFirstHttpCall();1045 }1046 /**1047 * no-op to force class loading1048 */1049 private static void trigger() {1050 }1051 }1052}...
Source:GraphQLListeners.java
...18import org.testingisdocumenting.webtau.graphql.model.GraphQLResponse;19import org.testingisdocumenting.webtau.http.HttpHeader;20import org.testingisdocumenting.webtau.http.HttpResponse;21import org.testingisdocumenting.webtau.http.listener.HttpListener;22import org.testingisdocumenting.webtau.http.listener.HttpListeners;23import org.testingisdocumenting.webtau.http.request.HttpRequestBody;24import org.testingisdocumenting.webtau.utils.ServiceLoaderUtils;25import org.testingisdocumenting.webtau.utils.UrlUtils;26import java.util.List;27import java.util.Map;28import java.util.Optional;29import java.util.stream.Collectors;30public class GraphQLListeners {31 private static final List<WrappedGraphQLListener> listeners = ServiceLoaderUtils.load(GraphQLListener.class)32 .stream().map(WrappedGraphQLListener::new).collect(Collectors.toList());33 private GraphQLListeners() {34 }35 public static void beforeFirstGraphQLQuery() {36 listeners.forEach(l -> l.listener.beforeFirstGraphQLQuery());37 }38 public static void beforeGraphQLQuery(String query,39 Map<String, Object> variables,40 String operationName,41 HttpHeader requestHeader) {42 listeners.forEach(l -> l.listener.beforeGraphQLQuery(query, variables, operationName, requestHeader));43 }44 public static void add(GraphQLListener listener) {45 listeners.add(new WrappedGraphQLListener(listener));46 }47 public static void remove(GraphQLListener listener) {48 listeners.stream()49 .filter(l -> l.listener == listener)50 .findFirst()51 .ifPresent(l -> {52 HttpListeners.remove(l);53 listeners.remove(l);54 });55 }56 private static class WrappedGraphQLListener implements GraphQLListener, HttpListener {57 private final GraphQLListener listener;58 private WrappedGraphQLListener(GraphQLListener listener) {59 this.listener = listener;60 HttpListeners.add(this);61 }62 @Override63 public void beforeFirstGraphQLQuery() {64 listener.beforeFirstGraphQLQuery();65 }66 @Override67 public void beforeGraphQLQuery(String query, Map<String, Object> variables, String operationName, HttpHeader requestHeader) {68 listener.beforeGraphQLQuery(query, variables, operationName, requestHeader);69 }70 @Override71 public void afterHttpCall(String requestMethod,72 String passedUrl,73 String fullUrl,74 HttpHeader requestHeader,...
Source:HttpListeners.java
...18import org.testingisdocumenting.webtau.http.HttpResponse;19import org.testingisdocumenting.webtau.http.request.HttpRequestBody;20import org.testingisdocumenting.webtau.utils.ServiceLoaderUtils;21import java.util.List;22public class HttpListeners {23 private static final List<HttpListener> listeners = ServiceLoaderUtils.load(HttpListener.class);24 private HttpListeners() {25 }26 public static void beforeFirstHttpCall() {27 listeners.forEach(HttpListener::beforeFirstHttpCall);28 }29 public static void beforeHttpCall(String requestMethod,30 String passedUrl,31 String fullUrl,32 HttpHeader requestHeader,33 HttpRequestBody requestBody) {34 listeners.forEach(listener -> listener.beforeHttpCall(requestMethod, passedUrl, fullUrl, requestHeader, requestBody));35 }36 public static void afterHttpCall(String requestMethod,37 String passedUrl,38 String fullUrl,...
HttpListeners
Using AI Code Generation
1import org.testingisdocumenting.webtau.http.listener.HttpListeners;2import org.testingisdocumenting.webtau.http.listener.HttpRequestListener;3import org.testingisdocumenting.webtau.http.listener.HttpResponseListener;4import static org.testingisdocumenting.webtau.WebTauDsl.*;5import static org.testingisdocumenting.webtau.http.Http.http;6public class 1 {7 public static void main(String[] args) {8 HttpListeners.registerListener(new HttpRequestListener() {9 public void onRequest(HttpRequest request) {10 System.out.println("request: " + request);11 }12 });13 HttpListeners.registerListener(new HttpResponseListener() {14 public void onResponse(HttpResponse response) {15 System.out.println("response: " + response);16 }17 });18 http.get("/hello");19 }20}21import org.testingisdocumenting.webtau.http.listener.HttpListeners;22import org.testingisdocumenting.webtau.http.listener.HttpRequestListener;23import org.testingisdocumenting.webtau.http.listener.HttpResponseListener;24import static org.testingisdocumenting.webtau.WebTauDsl.*;25import static org.testingisdocumenting.webtau.http.Http.http;26public class 2 {27 public static void main(String[] args) {28 HttpListeners.registerListener(new HttpRequestListener() {29 public void onRequest(HttpRequest request) {30 System.out.println("request: " + request);31 }32 });33 HttpListeners.registerListener(new HttpResponseListener() {34 public void onResponse(HttpResponse response) {35 System.out.println("response: " + response);36 }37 });38 http.get("/hello");39 }40}41import org.testingisdocumenting.webtau.http.listener.HttpListeners;42import org.testingisdocumenting.webtau.http.listener.HttpRequestListener;43import org.testingisdocumenting.webtau.http.listener.HttpResponseListener;44import static org.testingisdocumenting.webtau.WebTauDsl.*;45import static org.testingisdocumenting.webtau.http.Http.http;46public class 3 {47 public static void main(String[] args) {48 HttpListeners.registerListener(new HttpRequestListener() {49 public void onRequest(HttpRequest request) {
HttpListeners
Using AI Code Generation
1import org.testingisdocumenting.webtau.http.listener.HttpListeners;2import org.testingisdocumenting.webtau.http.listener.HttpListener;3import org.testingisdocumenting.webtau.http.listener.HttpListenerRequest;4import org.testingisdocumenting.webtau.http.listener.HttpListenerResponse;5import java.util.Map;6public class 1 {7 public static void main(String[] args) {8 HttpListener httpListener = new HttpListener() {9 public void request(HttpListenerRequest request) {10 System.out.println("Request: " + request);11 }12 public void response(HttpListenerResponse response) {13 System.out.println("Response: " + response);14 }15 };16 HttpListeners.add(httpListener);17 HttpListeners.remove(httpListener);18 }19}20import org.testingisdocumenting.webtau.http.listener.HttpListeners;21import org.testingisdocumenting.webtau.http.listener.HttpListener;22import org.testingisdocumenting.webtau.http.listener.HttpListenerRequest;23import org.testingisdocumenting.webtau.http.listener.HttpListenerResponse;24import java.util.Map;25public class 2 {26 public static void main(String[] args) {27 HttpListener httpListener = new HttpListener() {28 public void request(HttpListenerRequest request) {29 System.out.println("Request: " + request);30 }31 public void response(HttpListenerResponse response) {32 System.out.println("Response: " + response);33 }34 };35 HttpListeners.add(httpListener);36 HttpListeners.remove(httpListener);37 }38}39import org.testingisdocumenting.webtau.http.listener.HttpListeners;40import org.testingisdocumenting.webtau.http.listener.HttpListener;41import org.testingisdocumenting.webtau.http.listener.HttpListenerRequest;42import org.testingisdocumenting.webtau.http.listener.HttpListenerResponse;43import java.util.Map;44public class 3 {45 public static void main(String[] args) {46 HttpListener httpListener = new HttpListener() {47 public void request(HttpListenerRequest request) {48 System.out.println("Request: " + request);49 }50 public void response(HttpListenerResponse response) {
HttpListeners
Using AI Code Generation
1import org.testingisdocumenting.webtau.http.listener.*;2import org.testingisdocumenting.webtau.http.*;3import org.testingisdocumenting.webtau.http.datanode.*;4import org.testingisdocumenting.webtau.reporter.*;5import java.util.*;6import java.util.stream.*;7public class 1 {8 public static void main(String[] args) {9 HttpListeners.register(new HttpListener() {10 public void beforeRequest(HttpCall httpCall) {11 Reporter.createStep("before request", () -> {12 Reporter.reportValue("url", httpCall.getUrl());13 Reporter.reportValue("method", httpCall.getMethod());14 Reporter.reportValue("headers", httpCall.getHeaders());15 Reporter.reportValue("body", httpCall.getBody());16 });17 }18 public void afterRequest(HttpCall httpCall) {19 Reporter.createStep("after request", () -> {20 Reporter.reportValue("status", httpCall.getStatus());21 Reporter.reportValue("headers", httpCall.getHeaders());22 Reporter.reportValue("body", httpCall.getBody());23 });24 }25 });26 }27}28import org.testingisdocumenting.webtau.http.listener.*;29import org.testingisdocumenting.webtau.http.*;30import org.testingisdocumenting.webtau.http.datanode.*;31import org.testingisdocumenting.webtau.reporter.*;32import java.util.*;33import java.util.stream.*;34public class 2 {35 public static void main(String[] args) {36 HttpListeners.register(new HttpListenerAdapter() {37 public void beforeRequest(HttpCall httpCall) {38 Reporter.createStep("before request", () -> {39 Reporter.reportValue("url", httpCall.getUrl());40 Reporter.reportValue("method", httpCall.getMethod());41 Reporter.reportValue("headers", httpCall.getHeaders());42 Reporter.reportValue("body", httpCall.getBody());43 });44 }45 public void afterRequest(HttpCall httpCall) {46 Reporter.createStep("after request", () -> {47 Reporter.reportValue("status", httpCall.getStatus());48 Reporter.reportValue("headers", httpCall.getHeaders());49 Reporter.reportValue("body", httpCall.getBody());50 });51 }52 });
HttpListeners
Using AI Code Generation
1import org.testingisdocumenting.webtau.http.listener.HttpListeners;2public class 1 {3 public static void main(String[] args) {4 HttpListeners.registerListener(new MyHttpListener());5 }6}7import org.testingisdocumenting.webtau.http.listener.HttpListener;8public class 2 implements HttpListener {9 public void beforeRequest(HttpRequest httpRequest) {10 }11 public void afterResponse(HttpResponse httpResponse) {12 }13}14import org.testingisdocumenting.webtau.http.listener.HttpListener;15public class 3 implements HttpListener {16 public void beforeRequest(HttpRequest httpRequest) {17 }18 public void afterResponse(HttpResponse httpResponse) {19 }20}21import org.testingisdocumenting.webtau.http.listener.HttpListener;22public class 4 implements HttpListener {23 public void beforeRequest(HttpRequest httpRequest) {24 }25 public void afterResponse(HttpResponse httpResponse) {26 }27}28import org.testingisdocumenting.webtau.http.listener.HttpListener;29public class 5 implements HttpListener {30 public void beforeRequest(HttpRequest httpRequest) {31 }32 public void afterResponse(HttpResponse httpResponse) {33 }34}35import org.testingisdocumenting.webtau.http.listener.HttpListener;36public class 6 implements HttpListener {37 public void beforeRequest(HttpRequest httpRequest) {38 }39 public void afterResponse(HttpResponse httpResponse) {40 }41}
HttpListeners
Using AI Code Generation
1import org.testingisdocumenting.webtau.http.listener.HttpListeners2import org.testingisdocumenting.webtau.http.listener.HttpListener3HttpListeners.register(new HttpListener() {4 public void onHttpRequest(HttpRequest httpRequest) {5 System.out.println(httpRequest)6 }7 public void onHttpResponse(HttpResponse httpResponse) {8 System.out.println(httpResponse)9 }10})11import org.testingisdocumenting.webtau.http.listener.HttpListener12import org.testingisdocumenting.webtau.http.listener.HttpListeners13HttpListeners.register(new HttpListener() {14 public void onHttpRequest(HttpRequest httpRequest) {15 System.out.println(httpRequest)16 }17 public void onHttpResponse(HttpResponse httpResponse) {18 System.out.println(httpResponse)19 }20})21import org.testingisdocumenting.webtau.http.HttpListener22import org.testingisdocumenting.webtau.http.HttpListeners23HttpListeners.register(new HttpListener() {24 public void onHttpRequest(HttpRequest httpRequest) {25 System.out.println(httpRequest)26 }27 public void onHttpResponse(HttpResponse httpResponse) {28 System.out.println(httpResponse)29 }30})31import org.testingisdocumenting.webtau.http.HttpListener32import org.testingisdocumenting.webtau.http.HttpListeners33HttpListeners.register(new HttpListener() {34 public void onHttpRequest(HttpRequest httpRequest) {35 System.out.println(httpRequest)36 }37 public void onHttpResponse(HttpResponse httpResponse) {38 System.out.println(httpResponse)39 }40})41import org.testingisdocumenting.webtau.http.listener.HttpListener42import org.testingisdocumenting.webtau.http.listener.HttpListeners43HttpListeners.register(new HttpListener() {44 public void onHttpRequest(HttpRequest httpRequest) {45 System.out.println(httpRequest)46 }47 public void onHttpResponse(HttpResponse httpResponse) {48 System.out.println(http
HttpListeners
Using AI Code Generation
1package org.testingisdocumenting.webtau.http.listener;2import org.testingisdocumenting.webtau.http.HttpListener;3public class HttpListeners {4 public static HttpListener noOp() {5 return (request, response) -> {};6 }7}8package org.testingisdocumenting.webtau.http.listener;9import org.testingisdocumenting.webtau.http.HttpListener;10public class HttpListeners {11 public static HttpListener noOp() {12 return (request, response) -> {};13 }14}15package org.testingisdocumenting.webtau.http.listener;16import org.testingisdocumenting.webtau.http.HttpListener;17public class HttpListeners {18 public static HttpListener noOp() {19 return (request, response) -> {};20 }21}22package org.testingisdocumenting.webtau.http.listener;23import org.testingisdocumenting.webtau.http.HttpListener;24public class HttpListeners {25 public static HttpListener noOp() {26 return (request, response) -> {};27 }28}29package org.testingisdocumenting.webtau.http.listener;30import org.testingisdocumenting.webtau.http.HttpListener;31public class HttpListeners {32 public static HttpListener noOp() {33 return (request, response) -> {};34 }35}36package org.testingisdocumenting.webtau.http.listener;37import org.testingisdocumenting.webtau.http.HttpListener;38public class HttpListeners {39 public static HttpListener noOp() {40 return (request, response) -> {};41 }42}43package org.testingisdocumenting.webtau.http.listener;44import org.testingisdocumenting.webtau.http.HttpListener;45public class HttpListeners {46 public static HttpListener noOp() {47 return (request, response) -> {};48 }
HttpListeners
Using AI Code Generation
1import org.testingisdocumenting.webtau.WebTauDsl.*;2import org.testingisdocumenting.webtau.http.listener.*;3HttpListeners.register(new HttpListener() {4 public void onRequest(HttpRequest request) {5 echo("request: " + request);6 }7 public void onResponse(HttpResponse response) {8 echo("response: " + response);9 }10});11http.get("/some/url");12http.post("/some/url", "some payload");13import org.testingisdocumenting.webtau.WebTauDsl.*;14import org.testingisdocumenting.webtau.http.listener.*;15HttpListeners.register(new HttpListener() {16 public void onRequest(HttpRequest request) {17 echo("request: " + request);18 }19 public void onResponse(HttpResponse response) {20 echo("response: " + response);21 }22});23http.get("/some/url");24http.post("/some/url", "some payload");25import org.testingisdocumenting.webtau.WebTauDsl.*;26import org.testingisdocumenting.webtau.http.listener.*;27HttpListeners.register(new HttpListener() {28 public void onRequest(HttpRequest request) {29 echo("request: " + request);30 }31 public void onResponse(HttpResponse response) {32 echo("response: " + response);33 }34});35http.get("/some/url");36http.post("/some/url", "some payload");37import org.testingisdocumenting.webtau.WebTauDsl.*;38import org.testingisdocumenting.webtau.http.listener.*;39HttpListeners.register(new HttpListener() {40 public void onRequest(HttpRequest request) {41 echo("request: " + request);42 }43 public void onResponse(HttpResponse response) {44 echo("response: " + response);45 }46});47http.get("/some/url");48http.post("/some/url", "some payload");49import org.testingisdocumenting.webtau.WebTauDsl.*;50import org.testingisdocumenting.webtau.http.listener.*;51HttpListeners.register(new HttpListener() {52 public void onRequest(HttpRequest
HttpListeners
Using AI Code Generation
1package org.testingisdocumenting.webtau.http;2import org.testingisdocumenting.webtau.http.listener.HttpListener;3import org.testingisdocumenting.webtau.http.listener.HttpListeners;4public class 1 {5 public static void main(String[] args) {6 HttpListeners.register(new HttpListener() {7 public void beforeRequest(HttpRequest request) {8 System.out.println("request: " + request);9 }10 public void afterResponse(HttpResponse response) {11 System.out.println("response: " + response);12 }13 });14 }15}
HttpListeners
Using AI Code Generation
1HttpListeners.registerListener(new HttpListener() {2 public void onRequest(HttpRequest request) {3 System.out.println("request: " + request);4 }5 public void onResponse(HttpRequest request, HttpResponse response) {6 System.out.println("request: " + request);7 System.out.println("response: " + response);8 }9});10HttpListeners.registerListener(new HttpListener() {11 public void onRequest(HttpRequest request) {12 System.out.println("request: " + request);13 }14 public void onResponse(HttpRequest request, HttpResponse response) {15 System.out.println("request: " + request);16 System.out.println("response: " + response);17 }18});19HttpListeners.registerListener(new HttpListener() {20 public void onRequest(HttpRequest request) {21 System.out.println("request: " + request);22 }23 public void onResponse(HttpRequest request, HttpResponse response) {24 System.out.println("request: " + request);25 System.out.println("response: " + response);26 }27});28HttpListeners.registerListener(new HttpListener() {29 public void onRequest(HttpRequest request) {30 System.out.println("request: " + request);31 }32 public void onResponse(HttpRequest request, HttpResponse response) {33 System.out.println("request: " + request);34 System.out.println("response: " + response);35 }36});37HttpListeners.registerListener(new HttpListener() {38 public void onRequest(HttpRequest request) {39 System.out.println("request: " + request);40 }41HttpListeners.registerListener(new HttpListener() {42 public void onRequest(HttpRequest request) {43 System.out.println("request: " + request);44 }45 public void onResponse(HttpRequest request, HttpResponse response) {46 System.out.println("request: " + request);47 System.out.println("response: " + response);48 }49});50HttpListeners.registerListener(new HttpListener() {51 public void onRequest(HttpRequest request) {52 System.out.println("request: " + request);53 }54 public void onResponse(HttpRequest request, HttpResponse response) {55 System.out.println("request: " + request);56 System.out.println("response: " + response);57 }58});59HttpListeners.registerListener(new HttpListener() {60 public void onRequest(HttpRequest request) {61 System.out.println("request: " + request);62 }
HttpListeners
Using AI Code Generation
1package org.testingisdocumenting.webtau.http;2import org.testingisdocumenting.webtau.http.listener.HttpListener;3import org.testingisdocumenting.webtau.http.listener.HttpListeners;4public class 1 {5 public static void main(String[] args) {6 HttpListeners.register(new HttpListener() {7 public void beforeRequest(HttpRequest request) {8 System.out.println("request: " + request);9 }10 public void afterResponse(HttpResponse response) {11 System.out.println("response: " + response);12 }13 });14 }15}
HttpListeners
Using AI Code Generation
1HttpListeners.registerListener(new HttpListener() {2 public void onRequest(HttpRequest request) {3 System.out.println("request: " + request);4 }5 public void onResponse(HttpRequest request, HttpResponse response) {6 System.out.println("request: " + request);7 System.out.println("response: " + response);8 }9});10HttpListeners.registerListener(new HttpListener() {11 public void onRequest(HttpRequest request) {12 System.out.println("request: " + request);13 }14 public void onResponse(HttpRequest request, HttpResponse response) {15 System.out.println("request: " + request);16 System.out.println("response: " + response);17 }18});19HttpListeners.registerListener(new HttpListener() {20 public void onRequest(HttpRequest request) {21 System.out.println("request: " + request);22 }23 public void onResponse(HttpRequest request, HttpResponse response) {24 System.out.println("request: " + request);25 System.out.println("response: " + response);26 }27});28HttpListeners.registerListener(new HttpListener() {29 public void onRequest(HttpRequest request) {30 System.out.println("request: " + request);31 }32 public void onResponse(HttpRequest request, HttpResponse response) {33 System.out.println("request: " + request);34 System.out.println("response: " + response);35 }36});37HttpListeners.registerListener(new HttpListener() {38 public void onRequest(HttpRequest request) {39 System.out.println("request: " + request);40 }
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!