Как предоставить правильные заголовки для Basic Auth на GET в OpenTest? - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь вызвать 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

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

1 Ответ

1 голос
/ 27 апреля 2019

Вот два способа сделать это (обратите внимание, я не тестировал этот код). Вы можете создать значение заголовка 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...