apidog-reporter-allure
Version:
An adapter for apidog proving reports in allure format
96 lines (95 loc) • 2.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getId = getId;
var _utils = require("../utils");
const testopsMetaData = {
endpoint: process.env.ALLURE_ENDPOINT,
token: process.env.ALLURE_TOKEN,
project: process.env.ALLURE_PROJECT_ID
};
const AUTH_PATH = '/api/uaa/oauth/token';
async function auth(endpoint, token) {
const response = await fetch((0, _utils.buildUrl)(endpoint, AUTH_PATH), {
method: 'POST',
headers: {
'Accept': 'application/json'
},
body: new URLSearchParams({
'grant_type': 'apitoken',
'scope': 'openid',
'token': token
})
});
if (!response.ok) {
console.log(`HTTP error! status: ${response.status}`);
return undefined;
}
const data = await response.json();
return data.access_token;
}
async function getCaseId(endpoint, projectId, token, name) {
const response = await fetch((0, _utils.buildUrl)(endpoint, `/api/v2/project/${projectId}/test-case/flat?deleted=false&baseAql=${encodeURIComponent(`name = "${name.replace('"', "'")}"`)}`), {
headers: {
"Authorization": `Bearer ${token}`
}
});
if (!response.ok) {
console.log(`HTTP error! getCaseId status: ${response.status}`);
return -2;
}
const result = await response.json();
if (result.content.length === 0) {
console.log(`Could not join case. Will try to create`);
return -1;
}
if (result.content.length > 1) {
console.log(`Could not join case. Got\n${JSON.stringify(result)}`);
return -2;
}
return result.content[0].id;
}
async function createTestCase(endpoint, projectId, token, name) {
const response = await fetch((0, _utils.buildUrl)(endpoint, `/api/v2/project/${projectId}/test-case/flat/`), {
method: "POST",
headers: {
'Accept': '*/*',
'Content-Type': 'application/json',
"Authorization": `Bearer ${token}`
},
body: JSON.stringify({
name
})
});
if (!response.ok) {
console.log(`HTTP error! createTestCase status: ${response.status}`);
return -2;
}
console.log('Successfully created new testCase');
const result = await response.json();
return result.id;
}
async function getId(testName, suite) {
const {
endpoint,
token,
project
} = testopsMetaData;
if (!endpoint || !token || !project) {
console.log("Did not provide env data, can not get testops id");
return -1;
}
const authToken = await auth(endpoint, token);
if (!authToken) {
return -1;
}
const id = await getCaseId(endpoint, Number(project), authToken, testName);
if (id === -1) {
const createdId = await createTestCase(endpoint, Number(project), authToken, testName);
if (createdId > 0) {
return createdId;
}
}
return id;
}