У меня есть функция, которая будет возвращать токен
var accessToken;
function TestToken(){
return cy.request({
method: 'POST',
url: "https://site/token",
headers: {
'Content-Type': 'application/json',
},
body: {
client_id: '1234',
client_secret: '1234',
audience: 'https://site/api/v1/',
grant_type: 'credentials'
}
}).then(response => {
return new Cypress.Promise((resolve, reject) => {
const rbody = (response.body);
var tokenPattern = "(?i)\"access_token\":\\s*\"([^\"]*)\"";
const authToken = rbody.access_token;
accessToken = authToken
cy.log(accessToken);
resolve(accessToken);
return accessToken;
})
});
Я вызываю эту функцию в другой команде кипариса, так как мне нужно использовать токен в заголовке авторизации
Cypress.Commands.add("ResetPwd", () => {
const authToken = TestToken();
cy.log(authToken);
cy.request({
method: 'POST',
url: "https://site/api/v2/users/1234",
headers: {
'Content-Type': 'application/json',
'authorization': 'Bearer '+authToken,
},
body: {
password: 'Test4321',
connection: 'DB',
}
});
});
Когда я выполняю команду, я не вижу используемого токена.Вместо этого я вижу "authorization": "Bearer [object Object]"
в запросе.
В функцию TestToken я добавил cy.log(authToken);
, чтобы убедиться, что он правильно захватывает токен.Проверка на кипарис не удалась:
CypressError: cy.then () не удалось, потому что вы смешиваете асинхронный и синхронизирующий код.
, но я все еще могу видеть правильный токен вконсоль.
Вот кипарисовый тест, который я пытаюсь запустить
describe('Token Test', function() {
before(() => {
cy.ResetPwd();
})
it('Go to website', function() {
cy.visit('https://site/login')
});
});