Home > other >  How to get, store and reuse firebase token in cypress api automated testing
How to get, store and reuse firebase token in cypress api automated testing

Time:10-19

after sending in body "email" and "password" https://identitytoolkit.googleapis.com/ returns a few objects in the response. One of them is "idToken": with a value of the token.

What do I need?

I need to get this token, store it in variable and reuse it in further tests.

So far I prepared something like this:

        it("Get a fresh admin firebase token", () => {
            cy.request({
                method: "POST",
                url: "https://identitytoolkit.googleapis.com/...",
                body: {
                    "email": "myUsername",
                    "password": "myPassword",
                    "returnSecureToken": true
                },
                headers: {
                    accept: "application/json"
                }
            }).then((responseToLog) => {
                cy.log(JSON.stringify(responseToLog.body))
            }).then(($response) => {
                expect($response.status).to.eq(200);
        })
    })
})```

Above code works, but cy.log() returns the whole body response. How can I separate only idToken and reuse it in my next API scenarios?

CodePudding user response:

Considering that idToken in in response body so inside then() you can directly wrap the value and save it using an alias and then use it later.

it('Get a fresh admin firebase token', () => {
  cy.request({
    method: 'POST',
    url: 'https://identitytoolkit.googleapis.com/...',
    body: {
      email: 'myUsername',
      password: 'myPassword',
      returnSecureToken: true,
    },
    headers: {
      accept: 'application/json',
    },
  }).then((response) => {
    cy.wrap(response.body.idToken).as('token')
  })
})

cy.get('@token').then((token) => {
  cy.log(token) //logs token or Do anything with token here
})

In case you want to use the token in a different it block you can:

describe('Test Suite', () => {
  var token
  it('Get a fresh admin firebase token', () => {
    cy.request({
      method: 'POST',
      url: 'https://identitytoolkit.googleapis.com/...',
      body: {
        email: 'myUsername',
        password: 'myPassword',
        returnSecureToken: true,
      },
      headers: {
        accept: 'application/json',
      },
    }).then((response) => {
      token = response.body.idToken
    })
  })

  it('Use the token here', () => {
    cy.log(token) //prints token
    //use token here
  })
})
  • Related