Below are steps to add JSR223-based response header assertion:
- Add a
JSR223 Assertion
on your sampler
- Ensure language is groovy as we are going to use groovy
- Add below script into the JSR223 script:
import java.util.HashMap;
def sanitizeResponseHaders() {
def headers = new HashMap<String, String>();
if(SampleResult.getHeadersSize() > 0) {
def headersData = SampleResult.getResponseHeaders().split("\n");
for(headerData: headersData) {
if(headerData.contains(":")) {
def header = headerData.split(":");
headers.put(header[0].toLowerCase().trim(), header[1].toLowerCase().trim());
}
}
}
return headers;
}
def assertHeader(headers, header, value) {
if(!headers.get(header).equals(value)) {
def msg = "Header assertion failed: " + header + " is not as expected " + value + " and actual value is " + headers.get(header);
SampleResult.setSuccessful(false);
SampleResult.setResponseMessage(msg);
AssertionResult.setFailure(true);
AssertionResult.setFailureMessage(msg);
addLog(msg);
}
}
def addLog(msg) {
log.info(msg);
}
def logHeaders(headers) {
for(entry: headers.entrySet()) {
addLog("header name: " + entry.getKey() + ", value: " + entry.getValue());
}
}
addLog("=========== Header assertion started ===============");
def headers = sanitizeResponseHaders();
//Add your own header assertion here
assertHeader(headers, "x-frame-options", "sameorigin");
logHeaders(headers);
addLog("============ Header assertion completed =============");
- At
Add your own header assertion here
line, add your own assertion. To do that, just call assertHeader(headers, "your_own_header", "your_own_header_value");
method for each assertion.