Headless CMS and Content Managment Hub
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

63 lines
1.7 KiB

import http from 'k6/http';
export const variables = {
appName: getValue('APP__NAME', 'integration-tests'),
clientId: getValue('CLIENT__ID', 'root'),
clientSecret: getValue('CLIENT__SECRET', 'xeLd6jFxqbXJrfmNLlO2j1apagGGGSyZJhFnIuHp4I0='),
serverUrl: getValue('SERVER__URL', 'https://localhost:5001')
};
let bearerToken = null;
export function getBearerToken(appName) {
if (!bearerToken) {
const adminToken = getToken(variables.clientId, variables.clientSecret);
const clientsUrl = `${variables.serverUrl}/api/apps/${appName}/clients`;
const clientsResponse = http.get(clientsUrl, {
headers: {
Authorization: `Bearer ${adminToken}`
}
});
const clientsJson = JSON.parse(clientsResponse.body);
const client = clientsJson.items[0];
const clientId = `${appName}:${client.id}`;
const clientSecret = client.secret;
console.log(`Using ${clientId} / ${clientSecret}`);
bearerToken = getToken(clientId, clientSecret);
}
return bearerToken;
}
function getToken(clientId, clientSecret) {
const tokenUrl = `${variables.serverUrl}/identity-server/connect/token`;
const tokenResponse = http.post(tokenUrl, {
grant_type: 'client_credentials',
client_id: clientId,
client_secret: clientSecret,
scope: 'squidex-api'
}, {
responseType: 'text'
});
if (tokenResponse.status !== 200) {
throw new Error('Invalid response.');
}
const tokenJson = JSON.parse(tokenResponse.body);
return tokenJson.access_token;
}
function getValue(key, fallback) {
const result = __ENV[key] || fallback;
return result;
}