Jmeter Regex http response - regex

I am trying to "catch" a value from a json response using regex.
The response:
{"Result":0,"ResponseStatus":{"ErrorCode":null,"Message":null,"StackTrace":null,"Errors":null},"SessionId":"5a004b3b-f610-4a4e-9a0c-9953cee9bd47","ResponseHeader":{"Succeeded":true,"Errors":[]}}
I have created a HTTP request and added a child "JSON PATH EXTRACTOR" with the following data:
Destination Variable Name: SessionId_Regex
JsonPath Expression: "SessionId":"(.{8}-.{4}-.{4}-.{4}-.{12})"
The question is: how do i use the variable of the regex in a 2nd HTTP request
Thanks :)

JSON Path has nothing in common with Regular Expressions, you won't extract the value using above expression.
Change it to: $..SessionId[0]
You can refer extracted value directly as ${SessionId_Regex} or using __V() function like ${__V(SessionId_Regex)} where required
References:
JSONPath - XPath for JSON
Using the XPath Extractor in JMeter (scroll down to Parsing JSON)

Related

What is the regular expression to get the first 'id' from the response containing multiple id?

How to extract the ID of the first object from the response? I am getting the below response of the API.
{"data":[{"id":1,"description":"Test description 1", "Location": "test location 1"}, {"id":2,"description":"Test description 2", "Location": "test location 2"}, {"id":3,"description":"Test description 3", "Location": "test location 3"}]}
I want to extract the id= 1, from the above response. I have tried with {"id":(.+?), regular expression. But I am getting randomly any of the id. What is the regular expression to get the first id from the response?
To get what you want (bad idea):
Regex:
"id":(\d+),.*
Get the result with \1.
Test here.
To get what you need: use a proper json parser. Regexes are not suitable for handling complex stuff (also including HTML among many others).
Use JSON Extractor instead of Regular expression extractor for the JSON response.
To extract the first id from the response you mentioned, use JSON path expressions as : .data[0].id
Example Screenshots:
Now, you can pass the variable test to your next API request as ${test}

Wiremock JSON - Parameter Patterns

I have this url:
"url": "/application/userId=5678"
This url will contains the logged in userId, i am trying to map this userId with regex to be mapped on all url's in Wiremock Testing.
So far, i've tried this
"urlPattern": "/application/userId=[0-9]+"
But this is not working, any idea how to make this url work for any UserId?
RegEx should be something like:
^\/application\/userId=[0-9]+$
See also this question + answer:
Wiremock not matching regex

Response assertion for json response in jmeter for webservice

As i am new to webservice in jmeter ,I am not understand how to move ahead in this, I have a json response like below,How can i put assertion for the below...
{
"flightDetails": [
{
"outBoundFlights": [
{
"flightInfo": {
"departureCity": "Bengaluru, , IN - Kempegowda International Airport",
"departureDateAndTime": "2017-04-24T17:00:00",
"arrivalCity": "Newark, NJ, US - Newark Liberty Intl Arpt",
"arrivalDateAndTime": "2017-04-25T07:55:00",
"numberOfStops": 1,
"individualPricing": [
{
"passengerType": 1,
"totalTaxFeePerPaxType": 626.55,
"totalTaxAmountPerPaxType": 461.55,
"baseFareAmountPerPaxType": 165.0,
"taxandFee": {
"markup": 6.6,
"merchantFee": 40.99,
"supplierTax": 410.96
Just add response assertion in your HTTP request and add all JSON responce in Pattern to test field
You can use JSON Path Assertion available via JMeter Plugins project like:
Given you need to check whether departureCity equals "Bengaluru, , IN - Kempegowda International Airport
Add JSON Path Assertion as a child of the request returning your JSON response
Configure it as follows:
If everything is fine the result will be successful
If expected value won't match the actual the sampler will be marked as failed:
JSON Path Assertion can be installed using JMeter Plugins Manager

How to extract RegEx from http response?

I am using Jmeter 2.11 and My http response after login as follows,
"apiResponseStatus": "SUCCESS",
"authToken": "o5SsJF9yOebRC9LsR5WCnYUNpslddO30Db/zBAdhBW/ISfL62CaOHqmSkrAHZ8RT4XF6yaGxX6kbmpACZu212Q=="
How to write RegEx for this to reuse same token throughout the Test Plan?
Use Regular Expression Extractor with below details:
Apply to --> Main Sample Only
Response Field to check --> Body
Reference Name: auth_token
Regular Expression: .authToken": "(.+?)".
Template: $1$
Match No.: 1
Default Value: Not Found
You can pass Reference Name as ${auth_token} where it is required throughout your test plan.
Hope this will help.

How to validate ftp host name using regular expression

I want to validate the ftp host name using knock out js. I have defined the validation in knockout like below:
selfLeadAdapter.Url = ko.observable(data.Url).extend({
required: { message: "Host required." }
}).extend({
pattern: {
message: 'Hey this doesnt match my pattern',
params: /((?:https?\:\/\/|www\.)(?:[-a-z0-9]+\.)*[-a-z0-9]+.*)/i
}
});
But the regular expression is for validating the webpage or website. I want to validate the ftp host name. This will be in the form of ftp://ftp.example.com
you can use this expression :
/^ftp:\/\/(.*)$/i
you can be more specific, it's depend what you expect exactly.
By example :
/^ftp:\/\/(\w*\.\w*\.com)$/i