how MOCK read request data from attachement
SOLVED- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
how MOCK read request data from attachement
Hello,
exists some way, how to read this request in ReadyAPI MOCK service?
My AUT (Application under test) sends text file in POST. I need to return JSON with somem value form the text file.
But how to do that?
My RAW request looks like:
POST http://localhost:9000/rest/submit HTTP/1.1 Content-Type: multipart/form-data; boundary="----=_Part_2_1159636768.1573464138308" MIME-Version: 1.0 Content-Length: 132451 Host: localhost:9000 Connection: Keep-Alive User-Agent: Apache-HttpClient/4.5.2 (Java/1.8.0_181) ------=_Part_2_1159636768.1573464138308 Content-Type: application/octet-stream; name=example1.tdf Content-Transfer-Encoding: binary Content-Disposition: form-data; name="example1.tdf"; filename="example1.tdf" 1.01:1431.02:03001.09:MBI20191107151008-IDE-000651.11:00.001.12:00.00
I must extract this string "MBI20191107151008-IDE-00065" from it = each time will have differed value. And then send his value to the AUT in JSON.
How to read it? It is even possible in Soapui?
Solved! Go to Solution.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
> It is even possible in Soapui?
Yes, I believe that this should be possible in SoapUI.
But, considering that the question was posted to the ServiceVirtualization board but not to the SoapUI one, this is what I did using ServiceV:
-- For the POST /rest/submit VirtAction I set dispatch style to Script;
-- Pasted this code to the script dispatch window:
def attachments = mockRequest.getRequestAttachments(); //log.info attachments.size(); //def attachmentName = attachments[0].name; //log.info "Name: $attachmentName"; //log.info "URL: ${attachments[0].url}"; //log.info "Part: ${attachments[0].part}"; //log.info "Encoding: ${attachments[0].contentEncoding}"; def attachmentInputStream = attachments[0].inputStream; def textValue = new String(attachmentInputStream.bytes, "UTF-8"); //log.info textValue; context.setProperty("textFileValue", textValue); /* // This part of code will save attachment's content to the file def attachmentContent = attachmentInputStream def file = new File("D:\\$attachmentName"); file.append(attachmentInputStream); */ attachmentInputStream.close(); //log.info context.getProperty("textFileValue").toString();
-- For the response that will be sent as reply I opened Script section (will be on the right after you click on the response name) and entered this code:
import groovy.json.JsonSlurper import groovy.json.JsonOutput def textParam = context.getProperty("textFileValue").toString(); def payload = '{ "id" : "' + textParam + '"}'; //log.info(payload); def json = new JsonSlurper().parseText(payload.toString()); log.info(json); mockResponse.responseContent = new JsonOutput().toJson(json);
And I got the value from request attachment as a value of the id json entry in response.
You will need to:
a) Write the code that will extract required value from the textFileValue property; and
b) Define the proper json structure for the payload variable.
Hope this will help.
P.S. In case you need to implement the same approach but in SoapUI, I believe that it will be not a problem to adopt the above code for SoapUI.
/Alex [Community Champion]
____
[Community Champions] are not employed by SmartBear Software but
are just volunteers who have some experience with the tools by SmartBear Software
and a desire to help others. Posts made by [Community Champions]
may differ from the official policies of SmartBear Software and should be treated
as the own private opinion of their authors and under no circumstances as an
official answer from SmartBear Software.
The [Community Champion] signature is assigned on quarterly basis and is used with permission by SmartBear Software.
https://community.smartbear.com/t5/Community-Champions/About-the-Community-Champions-Program/gpm-p/252662
================================
