如何在OpenTest中的GET上为Basic Auth提供正确的标头?

时间:2019-04-26 22:02:34

标签: opentest

我正在尝试对公开API的测试管理系统进行GET调用。我想在OT中提供的HTTPRequest标头中提供基本身份验证,就像这样。

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 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点(请注意,我没有测试此代码)。您可以使用JavaScript表达式构建Authorization标头值,

- 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