diff --git a/cloudsplaining/output/src/test/principals-test.js b/cloudsplaining/output/src/test/principals-test.js index df147bbf..98c05472 100644 --- a/cloudsplaining/output/src/test/principals-test.js +++ b/cloudsplaining/output/src/test/principals-test.js @@ -31,7 +31,7 @@ it("principals.getPrincipalMetadata: should return principal object", function ( it("principals.getPrincipalIds: should return a list of principal IDs for a given principal type", function () { var result = principals.getPrincipalIds(iam_data, "User"); - var expectedResult = ["ASIAZZUSERZZPLACEHOLDER", "obama"] + var expectedResult = ["obama", "ASIAZZUSERZZPLACEHOLDER"] assert.deepStrictEqual(result, expectedResult); console.log(`Should return the list of users ["obama", "ASIAZZUSERZZPLACEHOLDER"]: ${JSON.stringify(result)}`); }); diff --git a/cloudsplaining/output/src/util/principals.js b/cloudsplaining/output/src/util/principals.js index 596bc745..39d3fa4b 100644 --- a/cloudsplaining/output/src/util/principals.js +++ b/cloudsplaining/output/src/util/principals.js @@ -45,18 +45,28 @@ function getPrincipalNames(iam_data, principalType) { function getPrincipalIds(iam_data, principalType) { let result; if (principalType.toLowerCase() === "role") { - result = Object.keys(iam_data["roles"]) - return result.sort(); + result = Object.keys(iam_data["roles"]); + return result.sort(function(a, b) { + let nameA = (iam_data["roles"][a].name || a).toLowerCase(); + let nameB = (iam_data["roles"][b].name || b).toLowerCase(); + return nameA.localeCompare(nameB); + }); } if (principalType.toLowerCase() === "group") { result = Object.keys(iam_data["groups"]); - result.sort(); - return result + return result.sort(function(a, b) { + let nameA = (iam_data["groups"][a].name || a).toLowerCase(); + let nameB = (iam_data["groups"][b].name || b).toLowerCase(); + return nameA.localeCompare(nameB); + }); } if (principalType.toLowerCase() === "user") { result = Object.keys(iam_data["users"]); - result.sort(); - return result + return result.sort(function(a, b) { + let nameA = (iam_data["users"][a].name || a).toLowerCase(); + let nameB = (iam_data["users"][b].name || b).toLowerCase(); + return nameA.localeCompare(nameB); + }); } } diff --git a/pyproject.toml b/pyproject.toml index d87f40e3..a6b63bee 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -78,7 +78,7 @@ requires = ["uv_build~=0.10.0"] build-backend = "uv_build" [tool.uv] -required-version = "~=0.10.0" +required-version = ">=0.10.0" [tool.uv.build-backend] module-name = "cloudsplaining"