Scripting
Скрипти виконуються на JavaScript (Rhino) у двох точках: Before Request і After Request.
Обидва етапи працюють зі спільним vars і логами, тому дані можуть передаватися між ними.
Before Request
- Виконується перед шаблонізацією.
- Може змінювати
request: body, headers, params, formData, binaryFilePath.
- Може читати
rawRequest — початковий стан запиту.
- Будь-який виняток зупиняє виконання запиту.
- Після виконання формується snapshot
vars, який використовується для шаблонізації.
After Request
- Виконується лише якщо запит відправлено і є відповідь.
- Має доступ до
response, request (шаблонізований) і rawRequest.
- Логи додаються у спільний список.
Шаблонізація
- Синтаксис ``.
- Працює для URL, body, headers, params, formData, binaryFilePath.
- Якщо body — JSON, шаблони можуть замінювати значення як числа, booleans, обʼєкти або масиви.
- Якщо body не JSON, шаблони замінюються як текст.
Контекстні обʼєкти
vars — сховище значень з get, set, add, all.
request — ScriptRequest, який можна змінювати.
rawRequest — оригінальний ScriptRequest до змін.
response — HTTP або gRPC відповідь.
context — обʼєкт з vars, request, response, rawRequest, helpers, log.
Структура request
request.body — рядок або JSON-обʼєкт.
request.headers — масив { name, value, enabled }.
request.params — масив { name, value, enabled }.
request.formData — масив { name, value, enabled, file }.
request.binaryFilePath — шлях до файлу.
Структура response
- HTTP:
response.statusCode, response.headers, response.body.
- gRPC:
response.statusCode, response.statusMessage, response.headers, response.body.
response.body парситься як JSON, якщо це валідний JSON.
Helpers і функції
log(...) логує значення як текст або JSON.
assert(actual, expected, message) логує помилки перевірки.
uuid() генерує UUID.
stringify(value) перетворює значення в JSON-рядок.
jsonify(value) перетворює JSON-рядок у JS-обʼєкт.
Приклади
log("Before: prepare token");
vars.add("token", "Bearer " + uuid());
request.headers = [
{ name: "Authorization", value: "", enabled: true }
];
log("Status:", response.statusCode);
assert(response.statusCode, 200, "Expected 200 OK");