Как предоставить правильные заголовки для базовой аутентификации в GET в OpenTest?

Я пытаюсь сделать вызов GET в систему управления тестированием, которая предоставляет API. Я хочу предоставить Basic Auth в заголовке HTTPRequest, предоставленного как действие в OT, например.

includes: login.js
actors:
  - actor: WEB
    segments:
      - segment: 1
        actions:
          - script: var xUsername = $env("X_USERNAME");
          - script: var xPassword = $env("X_PASSWORD");
          - script: $log("This is the username " + xUsername);
          - script: $log("This is the password " + xPassword);

          - description: Sample Reading testid
            action: org.getopentest.actions.HttpRequest
            args:
              $checkpoint: true
              $localData:
                testRailCaseInfo: $output.body
              url: https://sub.domain.io/api/v2/get_results/1234
              headers:
                Content-Type: application/json
                Authorization: Basic xUsername xPassword
              verb: GET

Это правильно?


person dmcgill50    schedule 26.04.2019    source источник


Ответы (1)


Вот два способа сделать это (обратите внимание, что я не тестировал этот код). Вы можете создать значение заголовка Authorization с помощью выражения JavaScript,

- description: Read test ID
  action: org.getopentest.actions.HttpRequest
  args:
      url: https://sub.domain.io/api/v2/get_results/1234
      verb: GET
      headers:
        Content-Type: application/json
        Authorization: |
            $script
            "Basic " + $base64($env("X_USERNAME") + ":" + $env("X_PASSWORD"))

или заранее создайте значение заголовка в действии скрипта:

- script: |
    // Build the authentication header
    var authHeader =
        "Basic " + $base64($env("X_USERNAME") + ":" + $env("X_PASSWORD"));

- description: Read test ID
  action: org.getopentest.actions.HttpRequest
  args:
      url: https://sub.domain.io/api/v2/get_results/1234
      verb: GET
      headers:
        Content-Type: application/json
        Authorization: $script authHeader         

Вероятно, мне следует объяснить, что такое роль или префикс $script в двух примерах. Когда значение аргумента действия начинается с символа доллара с префиксом (например, $json, $data, $format и т. д.), субъект тестирования понимает, что выражение представляет собой код JavaScript, оценивает выражение и использует результат в качестве значения аргумента. . Если выражение JS не начинается с символа с префиксом доллара (например, наши выражения начинаются с "Basic" и authHeader соответственно), мы должны поставить перед выражением префикс $script, за которым следует один или несколько пробельных символов, чтобы субъект тестирования знал, что строка далее следует код JavaScript, а не просто обычный строковый литерал.

Что касается формата базовой схемы аутентификации, вы можете найти дополнительную информацию здесь: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization.

person Adrian T    schedule 27.04.2019