added feature for checking enum values

This commit is contained in:
Philip Ellis
2024-02-01 09:31:02 -06:00
parent 71cefebe43
commit dfb50b03a5
4 changed files with 127712 additions and 118479 deletions

View File

@@ -1,7 +1,8 @@
{ {
"folderStrategy": "Tags", "folderStrategy": "Tags",
"requestParametersResolution": "Schema", "requestParametersResolution": "Example",
"exampleParametersResolution": "Schema", "exampleParametersResolution": "Example",
"parametersResolution": "Example",
"disableOptionalParameters": true, "disableOptionalParameters": true,
"optimizeConversion": false, "optimizeConversion": false,
"stackLimit": 50, "stackLimit": 50,

View File

@@ -108,7 +108,9 @@ const requestFromLocal = (localRequest, responses) => {
} }
const responseFromLocal = (localResponse, requestObject) => { const responseFromLocal = (localResponse, requestObject) => {
const headers = localResponse.header let headers = []
if (localResponse.header) {
headers = localResponse.header
.map((item) => ({ key: item.key, value: item.value })) .map((item) => ({ key: item.key, value: item.value }))
.sort((a, b) => { .sort((a, b) => {
if (a.key < b.key) { if (a.key < b.key) {
@@ -119,6 +121,10 @@ const requestFromLocal = (localRequest, responses) => {
} }
return 0; return 0;
}); });
} else {
console.log(`missing headers for response ${localResponse.name}`)
}
const response = { const response = {
// owner: '8119550', // owner: '8119550',
// lastUpdatedBy: '8119550', // lastUpdatedBy: '8119550',

View File

@@ -12,16 +12,68 @@ const postmanCollections = {
v3Uid: '23226990-67f2ed91-57dc-470b-b2fb-bc2ed1dfd655', v3Uid: '23226990-67f2ed91-57dc-470b-b2fb-bc2ed1dfd655',
v3Public: '23226990-3721beea-5615-44b4-9459-e858a0ca7aed', v3Public: '23226990-3721beea-5615-44b4-9459-e858a0ca7aed',
v3Location: 'postman/collections/sailpoint-api-v3.json', v3Location: 'postman/collections/sailpoint-api-v3.json',
v3SpecLocation: 'dereferenced/deref-sailpoint-api.v3.json',
beta: '6617193f-0b30-4f11-b42d-6aa7e60759ca', beta: '6617193f-0b30-4f11-b42d-6aa7e60759ca',
betaUid: '23226990-6617193f-0b30-4f11-b42d-6aa7e60759ca', betaUid: '23226990-6617193f-0b30-4f11-b42d-6aa7e60759ca',
betaPublic: '23226990-3b87172a-cd55-40a2-9ace-1560a1158a4e', betaPublic: '23226990-3b87172a-cd55-40a2-9ace-1560a1158a4e',
betaLocation: 'postman/collections/sailpoint-api-beta.json', betaLocation: 'postman/collections/sailpoint-api-beta.json',
betaSpecLocation: 'dereferenced/deref-sailpoint-api.beta.json',
nerm: '91b47f89-5fc4-4111-b9c6-382cf29d1475', nerm: '91b47f89-5fc4-4111-b9c6-382cf29d1475',
nermUid: '23226990-91b47f89-5fc4-4111-b9c6-382cf29d1475', nermUid: '23226990-91b47f89-5fc4-4111-b9c6-382cf29d1475',
nermPublic: '23226990-20d718e3-b9b3-43ad-850c-637b00864ae2', nermPublic: '23226990-20d718e3-b9b3-43ad-850c-637b00864ae2',
nermLocation: 'postman/collections/sailpoint-api-nerm.json' nermLocation: 'postman/collections/sailpoint-api-nerm.json'
} }
const enumRecordsToIgnore = [
'type',
'approverType',
'operation',
'localeOrigin',
'reassignmentType',
'state',
'scheme',
'status',
'attributes', //objects
'completionStatus',
'approvalStatus',
'provisioningStatus',
'clientMetadata', //objects
'executionStatus',
'requestedObjectType',
'capabilities', //objects
'level',
'correlatedStatus',
'operator',
'targetType',
'reportType',
'mandatoryCommentRequirement',
'campaignType',
'phase',
'usageDaysState',
'decision',
'mode',
'action',
'details', //objects
'data', //objects
'grantTypes', //objects
'accessType',
'availableFormats',
'requestStatus',
'actionInProcess',
'requestType',
'result',
'legacyMembershipInfo',
'roleAssignmentSource',
'indices',
'columns',
'_type',
'assignmentRule',
'features',
'usageType'
]
const release = async () => { const release = async () => {
@@ -29,6 +81,7 @@ const release = async () => {
privateRemoteCollectionIdUid = postmanCollections[args[2].toLowerCase() + 'Uid'] privateRemoteCollectionIdUid = postmanCollections[args[2].toLowerCase() + 'Uid']
mainPublicCollectionId = postmanCollections[args[2].toLowerCase() + 'Public'] mainPublicCollectionId = postmanCollections[args[2].toLowerCase() + 'Public']
localCollection = JSON.parse(fs.readFileSync(postmanCollections[args[2].toLowerCase() + 'Location'], 'utf8')) localCollection = JSON.parse(fs.readFileSync(postmanCollections[args[2].toLowerCase() + 'Location'], 'utf8'))
SpecCollection = JSON.parse(fs.readFileSync(postmanCollections[args[2].toLowerCase() + 'SpecLocation'], 'utf8'))
let remoteCollection = await refreshRemoteCollection(privateRemoteCollectionId) let remoteCollection = await refreshRemoteCollection(privateRemoteCollectionId)
@@ -231,6 +284,9 @@ function syncKeys(obj1, obj2) {
function isDeepEqual(obj1, obj2) { function isDeepEqual(obj1, obj2) {
if (obj1['name'] && obj1['name'] === 'List of Access Profiles') {
console.log('here')
}
if (areValuesEqual(obj1, obj2)) { if (areValuesEqual(obj1, obj2)) {
return true return true
} }
@@ -247,13 +303,17 @@ function isDeepEqual(obj1, obj2) {
} }
for (let key of keys1) { for (let key of keys1) {
const val1 = obj1[key]; let val1 = findJSONObjects(obj1[key]);
const val2 = obj2[key]; let val2 = findJSONObjects(obj2[key]);
if (shouldIgnore(key)) {
continue;
}
const areObjects = isObject(val1) && isObject(val2); const areObjects = isObject(val1) && isObject(val2);
if ( if (
areObjects && !isDeepEqual(val1, val2) || areObjects && !isDeepEqual(val1, val2) ||
(!areObjects && !areValuesEqual(val1, val2)) (!areObjects && !areValuesEqual(val1, val2))
) { ) {
console.log(`found difference in ${key} value1: ${val1} value2: ${val2}`)
return false; return false;
} }
} }
@@ -261,6 +321,30 @@ function isDeepEqual(obj1, obj2) {
return true; return true;
} }
function shouldIgnore(key) {
return enumRecordsToIgnore.includes(key)
}
function findJSONObjects(obj) {
const jsonObjects = {};
if (typeof obj === 'string') {
try {
// Attempt to parse the string as JSON
const parsed = JSON.parse(obj);
// Check if the parsed result is an object (and not a number, string, etc.)
if (parsed !== null && typeof parsed === 'object') {
return parsed;
}
} catch (e) {
return obj;
}
}
return obj;
}
function areValuesEqual(val1, val2) { function areValuesEqual(val1, val2) {
if (isNullorEmpty(val1) && isNullorEmpty(val2)) { if (isNullorEmpty(val1) && isNullorEmpty(val2)) {
return true; return true;

File diff suppressed because one or more lines are too long