diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 1ce6e58..7454180 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3b50f4c..ffed3a2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Mon Dec 30 16:31:57 CET 2019 -distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew.bat b/gradlew.bat index f955316..107acd3 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -13,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,28 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/src/main/java/com/imperva/apiattacktool/activators/TestHttpRequestGenerator.java b/src/main/java/com/imperva/apiattacktool/activators/TestHttpRequestGenerator.java index ccc795a..a7521d8 100644 --- a/src/main/java/com/imperva/apiattacktool/activators/TestHttpRequestGenerator.java +++ b/src/main/java/com/imperva/apiattacktool/activators/TestHttpRequestGenerator.java @@ -21,10 +21,7 @@ import org.slf4j.LoggerFactory; import java.net.URISyntaxException; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -74,6 +71,12 @@ private HttpRequestWrapper generateFrom(EndpointTestRequestData endpointTestRequ if (endpointTestRequestData.hasHeaderParameters()) { updateRequestWithRequestHeaders(httpRequest, endpointTestRequestData.getHeaderParameters()); } + if ((httpRequest.getHeaders("content-type") == null + || Arrays.stream(httpRequest.getHeaders("content-type")).count() == 0 ) + && !endpointTestRequestData.getConsumesMimeTypes().isEmpty()){ + httpRequest.addHeader("content-type", endpointTestRequestData.getConsumesMimeTypes().get(0)); + } + //httpRequest.addHeader("content-type", "application/json"); } catch (URISyntaxException uriSyntaxException) { logger.error("Couldn't generate http request for {}", endpointTestRequestData, uriSyntaxException); return null; diff --git a/src/main/java/com/imperva/apiattacktool/model/valued/ArrayPropertyValue.java b/src/main/java/com/imperva/apiattacktool/model/valued/ArrayPropertyValue.java index 753ad8e..92c2c74 100644 --- a/src/main/java/com/imperva/apiattacktool/model/valued/ArrayPropertyValue.java +++ b/src/main/java/com/imperva/apiattacktool/model/valued/ArrayPropertyValue.java @@ -45,7 +45,11 @@ public List> fuzz(Fuzzer fuzzer) { @Override public Map bodyParameterJsonRepresentationMap() { HashMap representationMap = new HashMap<>(1); + if(value == null) { + return representationMap; + } representationMap.put(this.getName(), value.stream().map(PropertyValueNode::bodyParameterJsonRepresentationMap).collect(Collectors.toList())); + return representationMap; } diff --git a/src/main/java/com/imperva/apiattacktool/tests/MainTest.java b/src/main/java/com/imperva/apiattacktool/tests/MainTest.java index 0f734f2..1596b1c 100644 --- a/src/main/java/com/imperva/apiattacktool/tests/MainTest.java +++ b/src/main/java/com/imperva/apiattacktool/tests/MainTest.java @@ -81,7 +81,7 @@ private void testEndpoint(HttpRequest httpRequest, HttpResponseValidator httpRes try { httpResponse = httpClient.execute(httpHost, httpRequest); } catch (Exception anyException) { - TestReporter.log("❌ Error connecting to target! " + anyException.getMessage()); + TestReporter.log("Error connecting to target! " + anyException.getMessage()); TestReporter.log(""); Assert.fail(anyException.getMessage()); return; @@ -89,7 +89,7 @@ private void testEndpoint(HttpRequest httpRequest, HttpResponseValidator httpRes int statusCode = httpResponse.getStatusLine().getStatusCode(); boolean isStatusCodeValid = httpResponseValidator.isValidHttpCode(statusCode); - TestReporter.log((isStatusCodeValid? "✅ " : "❌ ") +"Request was: " + httpRequest.toString() + ", Response status code: " + statusCode + (isStatusCodeValid? " " : " (UNEXPECTED)")); + TestReporter.log((isStatusCodeValid? "ok " : "not ok ") +"Request was: " + httpRequest.toString() + ", Response status code: " + statusCode + (isStatusCodeValid? " " : " (UNEXPECTED)")); if (!isStatusCodeValid) { TestReporter.log(httpResponseValidator.toString()); }