How to upload and encode (base64) a file in webservice using Jmeter - encoding

I am new to Jmeter and I need to upload a file and then encrypt the file using base64.
I am able to encode the filename and file path to base64, however I need to both upload and then encrypt the file (base64).
I attempted to use the jmeter custom extension to encode the file, however it encoded the file.
Any ideas on how I can upload the file (text/plain or text/csv or application/excel) and then encode (base64) the file.
Is it possible to specify filetostring function in jmeter ans then encode the string?

You can do this using __FileToString() and __base64Encode() functions combination like:
${__base64Encode(${__FileToString(/path/to/your_file)})}
You can install __base64Encode() function as a part of Custom JMeter Functions bundle using JMeter Plugins Manager

Yes, I managed to resolve the issue. I used the same custom jmeter functions and the __fileToString() function.

Related

How to read actual file contents by name in CSV Data Set config - Jmeter

I was writing JMeter tests for REST API.
Its a post request and we need to send a big xml content in request body.
So I was using CSV Data Set config to parameterize the xml content in body part.
I have created a CSV Data Set config for HTTP Request sampler.
In csv file, I am writing the whole xml content. 1 row for 1 request. It is working fine.
But I found this is bit complex as we have to maintain large lines of xml in csv file.
Is there any way we can write only xml file names or full paths in csv file and CSV DataSet config checks the name and then read the contents of that file and append in request body.
file-abc.xml
file-def.xml
I think this would be easy to maintain as we can have dedicated files for XML content.
Any way to do it using CSV DataSet config?
Or any other way to achieve the same in JMeter tests.
I found this question How to hold Xml file names in CSV Data set Config (Jmeter)
I followed its answer but I am not able to pass the xml content in request body.
Its only passing xmlfile names written in csv file in the request body.
But as per answer it reads the file from xml path/name and pass it in the parameter.
You can keep the file names or paths to the files in the CSV file and read the file content using __FileToString() function directly in the HTTP Request sampler body
If you're keeping XML files in a separate folder you might find Directory Listing Config plugin easier to use in case you want to add/remove/rename files without having to maintain the CSV mapping.
Directory Listing Config plugin can be installed using JMeter Plugins Manager

How to send multiple json body using jmeter?

I have written a REST API and now my requirement is to send the multiple JSON body to the API using POST method from JMeter. I have a csv file with four values(1,2,3,4). And in each of the four files I have the JSON body. I used :
Step-1) added the csv file to jmeter and create a reference and named it JSON_FILE
Step-2) ${__FileToString(C:Path_to_csv_file/${__eval(${JSON_FILE})}.txt,,)}
But from this I am able to access only first file i.e which is named with one. How do I send the body of all file to the API?
Help is highly appreciated.
You won't be able to use CSV Data Set Config as it will read the next value for each thread (virtual user) and/or Thread Group iteration.
If your requirement is to send all the files bodies at once you can go for an alternative approach
Add JSR223 PreProcessor as a child of the HTTP Request sampler which you use for sending the JSON payload
Put the following code into "Script" area:
def builder = new StringBuilder()
new File('/path/to/plans.csv').readLines().each { line ->
builder.append(new File(line).text).append(System.getProperty('line.separator'))
}
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('', builder.toString(), '')
sampler.setPostBodyRaw(true)
the above code iterates through entries in plans.csv file, reads the file contents into a string and concatenates them altogether. Once done it sets the HTTP Request sampler body data to the generated cumulative string.
Check out The Groovy Templates Cheat Sheet for JMeter to learn more and what else could be achieved using Groovy scripting in JMeter.
Use Body data as follows in HTTP Sampler:
{__FileToString(${JSON_FILE},,)}
You have to put all the file path in your plan.csv file. At each line, there should be a file path.
Example:
Suppose, you have 4 files with JSON body which you want to use in your HTTP sampler.
Give the file path of these 4 files in your CSV file which is plan.csv. Each line contains a file path like this:
/User/file/file1.json
/User/file/file2.json
/User/file/file3.json
/User/file/file4.json
Now, in your CSV data set config, Use the proper file name of CSV file which contains all the file path and give it a variable name like JSON_FILE.
Now, Use {__FileToString(${JSON_FILE},,)} this line in your Body data. Also use the loop count value accordingly.

Base64 Encoding on ng-file-upload

When a file is selected or dropped, is it automatically converted to Base64 encoding?
I need to be able to take files, convert them to strings then pass them into POST requests to our backend.
Is ng-file-upload already converting the file? Or is this something I need to manually do by calling either the:
Upload.base64DataUrl(files).then(function(urls){...});
or
Upload.dataUrl(file, boolean).then(function(url){...});
methods?
I can post the relevant code but this seems relatively straightforward. Thanks for the help!

How to upload .csv file to server using code in iphone(ios)?

I want to upload .csv file on server while i get .csv file in my project . Can any one help me in that ?
You need to create web service on your server that accepts data of csv file as input.
Then you can use NSURLConnection or use NSData's writeToURL:atomically: method

Transmit compressed file as xml to an iPhone application

How do I pass a zip file in xml format to an iPhone?
How do I retrieve to the compressed file using objective C and xcode?
Encode the zip's binary data (e.g. via Base64) and add to the XML data
Transmit the XML to the iOS device (e.g. via ASIHTTPRequest)
Parse the XML to retreive the encoded zip data (e.g. via NSXMLParser, or libxml2 etc.)
Decode the encoded zip data (again, with the same encoding method, e.g. Base64)
Use Apple's pre-built zip library to decompress the decoded data
What do you want to do.. Pass an zipped xml file or want to pass zipped data to an xml file?
Here is the library for packing/unpacking the zip files