var clientID = pm.collectionVariables.get('clientID');
var clientSecret = pm.collectionVariables.get('clientSecret');
var resource = pm.collectionVariables.get('resource');
var username = pm.collectionVariables.get('username');
var password = pm.collectionVariables.get('password');
var odataURL = pm.collectionVariables.get('odataURL');
var jwtToken = pm.collectionVariables.get('jwtToken');
var oauthURL = pm.collectionVariables.get('oauthURL');
var sdk = require('postman-collection');
var isValidTokenRequest = new sdk.Request({
url: odataURL + "/IsFTRAvailable",
method: 'POST',
header: [
new sdk.Header({
key: 'content-type',
value: 'application/json',
}),
new sdk.Header({
key: 'accept',
value: 'application/json',
}),
new sdk.Header({
key: 'Authorization',
value: 'Bearer ' + pm.collectionVariables.get("jwtToken"),
}),
]
});
pm.sendRequest(isValidTokenRequest, function (err, response) {
if (response.code === 401) {
refreshToken();
}
});
function refreshToken() {
var tokenRequest = new sdk.Request({
url: oauthURL + '/connect/token',
method: 'POST',
header: [
new sdk.Header({
key: 'Content-Type',
value: 'application/x-www-form-urlencoded'
}),
new sdk.Header({
key: 'Accept',
value: '*/*'
}),
],
body: {
mode: 'urlencoded',
urlencoded: [
{key: "grant_type", value: "password", disabled: false},
{key: "username", value: username, disabled: false},
{key: "password", value: password, disabled: false},
{key: "client_id", value: clientID, disabled: false},
{key: "client_secret", value: clientSecret, disabled: false},
{key: "scope", value: 'ingr.api', disabled: false},
{key: "resource", value: resource, disabled: false},
]
}
});
pm.sendRequest(tokenRequest, function (err, response) {
if (err) {
throw err;
}
if (response.code !== 200) {
throw new Error('Could not log in.');
}
pm.collectionVariables.set("jwtToken", response.json().access_token);
console.log(`New token has been set: ${response.json().access_token}`);
});
}