Maestro comes with its own JavaScript HTTP API
// script.js
const response = http.get('https://example.com')
output.script.result = response.body
Use json()
function to parse JSON responses.
For example, assume that https://example.com/jsonEndpoint
returns the following result:
{
"myField": {
"mySubField": "Test value"
}
}
mySubField
could then be accessed in the following way:
// script.js
const response = http.get('https://example.com/jsonEndpoint')
output.script.result = json(response.body).myField.mySubField
To send body to a given endpoint, specify a body
parameter:
// script.js
const response = http.post('https://example.com/myEndpoint', {
body: JSON.stringify(
{
myField: "Payload"
}
)
})
Headers can be provided in a headers
parameter
// script.js
const response = http.get('https://example.com', {
headers: {
Authorization: 'Bearer MyToken'
}
})
The following request methods are provided out of the box:
http.get
http.post
http.put
http.delete
To send a request of any other HTTP method, use http.request
// script.js
const response = http.request('https://example.com`, {
method: "GET" // or specify any other method, i.e. OPTION
})
Field Name | Value |
---|---|
ok |
true if request was successful, false otherwise |
status |
HTTP status code (i.e. 200 ) |
body |
String body of the response |
Here's an example of using these utilities to perform a common test action, creating a user and populating it with data.
const date = new Date();
const email = `test${date.getTime().toString()}@test.com`;
const password = 'test'
function createNewUser() {
const url = 'https://my-api/signup'
const signupResponse = http.post(url, {
body: JSON.stringify({
email: email,
password: 'test'
}),
headers: {'Content-Type': 'application/json'},
});
const data = json(signupResponse.body);
return {
guid: data.guid,
token: data.token
}
}
function fillUserInfo() {
const test_user = createNewUser()
const url = `https://my-api/user/${test_user.guid}`
http.request(url, {
method: 'PATCH',
body: JSON.stringify({
age: '46',
gender: 'female',
country: 'Canada'
}),
headers: {
'Content-Type': 'application/json',
Authorization: test_user.token,
},
})
// return email and password for logging in to newly created account
return {
email: email,
password: password
}
}
output.test_user = fillUserInfo()