Skip to content

Latest commit

 

History

History
143 lines (108 loc) · 2.91 KB

make-http-s-requests.md

File metadata and controls

143 lines (108 loc) · 2.91 KB

Make HTTP(s) requests

Maestro comes with its own JavaScript HTTP API

// script.js
const response = http.get('https://example.com')

output.script.result = response.body

JSON

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

POST request

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

Headers can be provided in a headers parameter

// script.js
const response = http.get('https://example.com', {
    headers: {
        Authorization: 'Bearer MyToken'
    }
})

Other request types

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
})

Response object

Field Name Value
ok true if request was successful, false otherwise
status HTTP status code (i.e. 200)
body String body of the response

Example

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()