J'ai une API Rest qui génère un jeton. Ce jeton de session est utilisé dans plusieurs API REST comme autorisation. Jeton de porteur . J'ai utilisé ceci comme référence : https://github.com/cypress-io/cypress-example-recipes/blob/master/examples/logging-in__jwt/cypress/integration/spec.js
Cependant, dans cet exemple, la fonction permettant de générer le jeton est intégrée au test. J'ai essayé de créer une commande personnalisée qui devrait être stockée localement mais elle n'est pas prise en compte par le test. Notez qu'aucune valeur de retour n'est incluse dans la commande personnalisée.
Mon code ci-dessous sous support/commandes.js :
let identity
Cypress.Commands.add('postToken', () => {
cy.request({
method: 'POST',
url: Cypress.env('api_identity_url'), //get from cypress.env.json
form: true, //sets to application/x-www-form-urlencoded
body: {
grant_type: 'client_credentials',
scope: 'xero_all-apis'
},
auth: {
username: Cypress.env('api_identity_username'),
password: Cypress.env('api_identity_password')
}
})
.its('body')
.then((response) => {
identity = response
window.localStorage.setItem('identity', JSON.stringify(identity))
cy.log(identity.access_token)
})
})
Mon test :
context('Check token details', () => {
it('Check token', () => {
cy.postToken()
const bToken = window.localStorage.getItem('identity')
cy.log(bToken)
})
})
Lorsque je lance le test, le journal indique null
pour "identité". Cependant, il affiche la valeur actuelle dans la commande personnalisée où j'ai placé cy.log(identity.access_token)
J'ai essayé d'utiliser cy.writeFile mais je ne pense pas que ce soit une méthode propre. Il doit y avoir un moyen de faire passer les données entre les fonctions et les différentes classes.
Exemple de format JSON :
{
"token": "<this is the value I would like to use for other API's authorisation bearer token>",
"expires_in": 1200,
"token_type": "Bearer"
}