cancel
Showing results for 
Search instead for 
Did you mean: 

Add headers to a teststep in rest testcase using the java api

SOLVED
New Contributor

Add headers to a teststep in rest testcase using the java api

I am using SOAP-UI 5.5 for automating some rest services and modifing the rest soap-ui project using java. 

I can add a teststep using the following code snippet. 

 

WsdlTestCase testCaseAt = project.getTestSuiteAt(0).getTestCaseAt(0);
RestResource restResourceAt = (RestResource) project.getInterfaceAt(0).getOperationAt(0);
RestMethod restMethodAt = restResourceAt.getRestMethodAt(0);

RestRequestStepFactory restRequestFactory = (RestRequestStepFactory) WsdlTestStepRegistry.getInstance().getFactory("restrequest"); TestStepConfig testStepConfig = restRequestFactory.createNewTestStep(restMethodAt, "teststep_added"); restRequestFactory.buildTestStep(testCaseAt, testStepConfig, false); testCaseAt.addTestStep(testStepConfig);

Now I am looking for a way to add the headers to that teststep. I knwo how to add headers to a request in the interface of the restservice using a code snippet (will not work, just for showing the approache) similar like this :

StringToStringMap map = new StringToStringMap();
map.put("headername", "headervalue");
request = RestMethod.addNewRequest("name");
request.setRequestHeaders(map);					

But there is not a similar api for teststeps in a testcase. Can someone show me a way how to do this?

I searched around the community and tried different ways, but up to now I am clueless...

 

1 ACCEPTED SOLUTION

Accepted Solutions
New Contributor

Re: Add headers to a teststep in rest testcase using the java api

I found the correct way to add the headers to a new teststep.Here is the modified codesnippet:

WsdlTestCase testCaseAt = project.getTestSuiteAt(0).getTestCaseAt(0);
RestResource restResourceAt = (RestResource) project.getInterfaceAt(0).getOperationAt(0);
RestMethod restMethodAt = restResourceAt.getRestMethodAt(0);

RestRequestStepFactory restRequestFactory = (RestRequestStepFactory) WsdlTestStepRegistry.getInstance().getFactory("restrequest");
TestStepConfig testStepConfig = restRequestFactory.createNewTestStep(restMethodAt, "teststep_added");
WsdlTestStep buildTestStep = restRequestFactory.buildTestStep(testCaseAt, testStepConfig, false);

if (buildTestStep instanceof RestTestRequestStep) {
	RestTestRequestStep step = (RestTestRequestStep)buildTestStep;
	RestRequestStepConfig requestStepConfig = step.getRequestStepConfig();
	if (requestStepConfig != null) {
		RestRequestConfig restRequest = requestStepConfig.getRestRequest();
		CompressedStringConfig addNewRequest = restRequest.addNewRequest();
		restRequest.setRequest(addNewRequest);
		// write headers
		StringToStringMap map = new StringToStringMap();
		map.put("header", "header_value");
		step.getHttpRequest().setRequestHeaders(map);
	}
}
testCaseAt.addTestStep(testStepConfig);

The solution is similiar to the groovy script but you need a class cast before you can find the needed api.

3 REPLIES 3
Highlighted
Community Hero

Re: Add headers to a teststep in rest testcase using the java api

New Contributor

Re: Add headers to a teststep in rest testcase using the java api

The java api does not offer the function setHttpHeaders or any other similar function.

At least not with version soapui-5.5.0.jar

What version of the soap-ui-libary did you used? Mayby this part of the api is only part of pro version of the api?

*edit : Corrected the last sentence. I Wrote the direct opposite of what I meant.

New Contributor

Re: Add headers to a teststep in rest testcase using the java api

I found the correct way to add the headers to a new teststep.Here is the modified codesnippet:

WsdlTestCase testCaseAt = project.getTestSuiteAt(0).getTestCaseAt(0);
RestResource restResourceAt = (RestResource) project.getInterfaceAt(0).getOperationAt(0);
RestMethod restMethodAt = restResourceAt.getRestMethodAt(0);

RestRequestStepFactory restRequestFactory = (RestRequestStepFactory) WsdlTestStepRegistry.getInstance().getFactory("restrequest");
TestStepConfig testStepConfig = restRequestFactory.createNewTestStep(restMethodAt, "teststep_added");
WsdlTestStep buildTestStep = restRequestFactory.buildTestStep(testCaseAt, testStepConfig, false);

if (buildTestStep instanceof RestTestRequestStep) {
	RestTestRequestStep step = (RestTestRequestStep)buildTestStep;
	RestRequestStepConfig requestStepConfig = step.getRequestStepConfig();
	if (requestStepConfig != null) {
		RestRequestConfig restRequest = requestStepConfig.getRestRequest();
		CompressedStringConfig addNewRequest = restRequest.addNewRequest();
		restRequest.setRequest(addNewRequest);
		// write headers
		StringToStringMap map = new StringToStringMap();
		map.put("header", "header_value");
		step.getHttpRequest().setRequestHeaders(map);
	}
}
testCaseAt.addTestStep(testStepConfig);

The solution is similiar to the groovy script but you need a class cast before you can find the needed api.

New Here?
Join us and watch the welcome video:
6 / 7 API Testing Mistakes Video
Top Kudoed Authors