Исходя из моего предыдущего вопроса здесь
Действительно пытаюсь разобраться со всей документацией, и я действительно изо всех сил пытаюсь разобраться в нескольких концепциях. В основном, я не понимаю, как работает настройка заголовков. Короче говоря, я делаю почтовый запрос, чтобы войти и получить токен авторизации. Когда я получаю токен авторизации, я также хочу получить все куки, и тогда могут начаться другие мои тесты. Я думаю, что я действительно борюсь с идеей использования примера headers.js. Я пытался и не получил, где.
мой каратэ-конфиг:
function() {
karate.configure('connectTimeout', 5000);
karate.configure('readTimeout', 5000);
karate.configure('ssl', true);
karate.configure('logPrettyRequest', true);
karate.configure('logPrettyResponse', true);
var env = karate.env; // get system property 'karate.env'
karate.log('karate.env system property was:', env);
if (!env) {
env = 'dev';
}
var config = {
env: env,
baseUrl: 'https://someurl'
}
if (env == 'dev') {
// cust
} else if (env == 'e2e') {
// customize
}
return config;
}
Моя функция аутентификации (которая находится рядом с karate-config.js). Должны ли сеанс и токен ниже быть доступными в моих сценариях?
Feature: Log in user and authenticate
Background:
* url baseUrl
Scenario: Login user
Given path '/api.fs/ProfileLogin'
And request {"request":{"LoginName":"user","Password":"password"}}
When method POST
Then status 200
And match response.IsSuccess == true
* def r = response
* def session = {"OrganizationCode":'#(r.Session.OrganizationCode)',"OrganizationId":'#(r.Session.OrganizationId)',"SessionId":"","UserId":'#(r.UserId)',"Environment":'#(r.Session.Environment)'}
* def token = r.Token
Следующее - мой первый правильный тест, который после вышеупомянутой аутентификации должен сделать 2 запроса.
Feature: Do some application stuff
Background:
* url baseUrl
* def signIn = call read('classpath:authenticate.feature')
* header Authorization = signIn.Token
Scenario: Get an application's data and edit
# get all user's applications
Given path '/ListApplications'
And request {"request":{},"Session":'#(signIn.session)'}
When method POST
Then status 200
And def applicationId = response.Applications[0].Id
#get first application in list
Given path '/GetApplication'
And request {"request":{"ApplicationId":'#(applicationId)'},"Session":'#(signIn.session)'}
When method POST
Then status 200
Первый запрос в порядке, но второй запрос не включает authToken, поэтому он терпит неудачу. почему токен аутентификации не сохраняется? Я попытался переместить '* header Authorization = signIn.Token' в authenticate.feature, но это просто означало, что первый запрос не содержал заголовок Authorization.
Я чувствую, что перепробовал все возможности в учебнике, где / как после запуска authenticate.feature я получаю токен и затем автоматически назначаю его всем будущим запросам, будь то в том же или другом сценарии