我的组织有 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找到了它,它有我想要的响应: 在此输入图片描述
我错过了什么?
您没有使用公共 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);
});
谢谢@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 来获取请求