如何使用 Postman 从 xray Jira Cloud 制作 GET(REST API)

问题描述 投票:0回答:2

我的组织有 Jira Cloud Xray 环境,我想在 Postman 中获取特定测试问题(或多个)的测试步骤。 我设法使用承载令牌 Auth 来验证执行 POST 请求,该令牌链接到带有 2 个代码的请求正文:client_id 和 client_secret

此请求的输出是一个令牌,因此我将其存储在一个变量中。

我认为我必须使用此令牌来执行 GET 请求,但我得到以下输出: "error": "身份验证请求已过期。请尝试重新加载页面。"

我的 GET 请求的 URL 如下:https://xray.cloud.getxray.app/api/internal/test/149565/steps?startAt=0&maxResults=8 我在问题页面按F12找到了它,它有我想要的响应: 在此输入图片描述

我错过了什么?

testing postman jira jira-xray
2个回答
1
投票

您没有使用公共 API。 文档中描述了可用的 Xray 云 API,其中包括 REST API 和 GraphQL API。 GraphQL API 请求必须经过身份验证,因此您需要发出初始请求来获取令牌

公共 GitHub 存储库中有一些 Postman 的集合,展示了如何调用 API。 还有一个包含源代码片段的 GitHub 项目,例如 thisone,它准确地显示了您正在寻找的内容。

var axios = require('axios');
const { GraphQLClient, gql } = require('graphql-request')

var xray_cloud_base_url = "https://xray.cloud.getxray.app/api/v2";
var xray_cloud_graphql_url = xray_cloud_base_url + "/graphql";
var client_id = process.env.CLIENT_ID || "215FFD69FE4644728C72182E00000000";
var client_secret = process.env.CLIENT_SECRET || "1c00f8f22f56a8684d7c18cd6147ce2787d95e4da9f3bfb0af8f02ec00000000";

var authenticate_url = xray_cloud_base_url + "/authenticate";

// Test issue key to obtain the info from
test_key = "CALC-3"

axios.post(authenticate_url, { "client_id": client_id, "client_secret": client_secret }, {}).then( (response) => {
    console.log('success');
    var auth_token = response.data;

    console.log("AUTH: " + auth_token);

    const graphQLClient = new GraphQLClient(xray_cloud_graphql_url, {
        headers: {
          authorization: `Bearer ${auth_token}`,
        },
      })

      const query = gql` 
      {
        getTests(jql: "key=${test_key}", limit: 1) {
          results {
            issueId
            projectId
    
            jira(fields: ["key", "summary", "description" ])
    
            testType {name}
    
            folder {
                path
            }
    
            steps {
                id
                action
                data
                result
                attachments {
                    id
                    filename
                    downloadLink
                }
                customFields {
                  id
                  name
                  value
                }
            }
    
            scenarioType
            gherkin
    
            unstructured
    
            preconditions(limit: 10) {
              total
              results {
                jira(fields: ["key", "summary"])
              }
            }
          }
        }
    }
    
      
`

    graphQLClient.request(query).then(function(data) {
        console.log(JSON.stringify(data, undefined, 2))
    }).catch(function(error) {
        console.log('Error performing query: ' + error);
    });
}).catch( (error) => {
    console.log('Error on Authentication: ' + error);
});

0
投票

谢谢@Sérgio,由于你的回答,我解决了问题。 我在邮递员上发送这个 graphql 查询:

query
{
  getTests(jql: "key=COL-9791", limit: 1) {
    results {
      issueId
      projectId
    
      jira(fields: ["key", "summary", "description" ])
    
      testType {name}
    
      folder {
        path
      }
    
      steps {
        id
        action
        data
        result
        attachments {
          id
          filename
          downloadLink
        }
        customFields {
          id
          name
          value
        }
      }
    
      scenarioType
      gherkin
    
      unstructured
    
      preconditions(limit: 10) {
        total
        results {
          jira(fields: ["key", "summary"])
        }
      }
    }
  }
}

并使用此 URL 来获取请求

© www.soinside.com 2019 - 2024. All rights reserved.