diff --git a/cerberus-api-tests/cerberus-api-tests.gradle b/cerberus-api-tests/cerberus-api-tests.gradle
index 6af2f4a35..17fa7a5ec 100644
--- a/cerberus-api-tests/cerberus-api-tests.gradle
+++ b/cerberus-api-tests/cerberus-api-tests.gradle
@@ -23,7 +23,7 @@ repositories {
dependencies {
compile project(':cerberus-core').sourceSets.test.output
- compile group: 'org.testng', name: 'testng', version: '6.14.3'
+ compile group: 'org.testng', name: 'testng', version: '7.1.0'
compile 'junit:junit:4.12'
compile 'org.slf4j:slf4j-api:1.7.21'
compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.5.9'
diff --git a/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusCompositeApiActions.groovy b/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusCompositeApiActions.groovy
index 7fab86171..d063d1ecb 100644
--- a/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusCompositeApiActions.groovy
+++ b/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusCompositeApiActions.groovy
@@ -134,12 +134,10 @@ class CerberusCompositeApiActions {
assertTrue(list.contains(path.toString()))
}
- static void "v1 create, read, list, update and then delete a safe deposit box"(Map cerberusAuthPayloadData) {
+ static void "v1 create, read, list, update and then delete a safe deposit box"(Map cerberusAuthPayloadData, String group) {
String accountId = PropUtils.getPropWithDefaultValue("TEST_ACCOUNT_ID", "1111111111")
String roleName = PropUtils.getPropWithDefaultValue("TEST_ROLE_NAME", "fake_role")
String cerberusAuthToken = cerberusAuthPayloadData.'client_token'
- String groups = cerberusAuthPayloadData.metadata.groups
- def group = groups.split(/,/)[0]
// Create a map of category ids to names'
JsonPath getCategoriesResponse = getCategories(cerberusAuthToken)
@@ -154,85 +152,85 @@ class CerberusCompositeApiActions {
roleMap.put role.name, role.id
}
- String name = "${RandomStringUtils.randomAlphabetic(5,10)} ${RandomStringUtils.randomAlphabetic(5,10)}"
+ String name = "${RandomStringUtils.randomAlphabetic(5, 10)} ${RandomStringUtils.randomAlphabetic(5, 10)}"
String description = "${Lorem.getWords(50)}"
String categoryId = catMap.Applications
String owner = group
def userGroupPermissions = [
- [
- "name": 'foo',
- "role_id": roleMap.read
- ]
+ [
+ "name" : 'foo',
+ "role_id": roleMap.read
+ ]
]
def iamRolePermissions = [
- [
- "account_id": accountId,
- "iam_role_name": roleName,
- "role_id": roleMap.owner
- ]
+ [
+ "account_id" : accountId,
+ "iam_role_name": roleName,
+ "role_id" : roleMap.owner
+ ]
]
def sdbId = createSdbV1(cerberusAuthToken, name, description, categoryId, owner, userGroupPermissions, iamRolePermissions)
- JsonPath sdb = readSdb(cerberusAuthToken, sdbId, V1_SAFE_DEPOSIT_BOX_PATH)
+ try {
+ JsonPath sdb = readSdb(cerberusAuthToken, sdbId, V1_SAFE_DEPOSIT_BOX_PATH)
- // verify that the sdb we created contains the data we expect
- assertSafeDepositBoxV1HasFields(sdb, name, description, categoryId, owner, userGroupPermissions, iamRolePermissions)
+ // verify that the sdb we created contains the data we expect
+ assertSafeDepositBoxV1HasFields(sdb, name, description, categoryId, owner, userGroupPermissions, iamRolePermissions)
- // verify that the listing call contains our new SDB
- def sdbList = listSdbs(cerberusAuthToken, V1_SAFE_DEPOSIT_BOX_PATH)
- def foundNewSdb = false
- def listSdb
+ // verify that the listing call contains our new SDB
+ def sdbList = listSdbs(cerberusAuthToken, V1_SAFE_DEPOSIT_BOX_PATH)
+ def foundNewSdb = false
+ def listSdb
- sdbList.getList("").each { sdbMeta ->
- if (sdbMeta.id == sdbId) {
- foundNewSdb = true
- listSdb = sdbMeta
+ sdbList.getList("").each { sdbMeta ->
+ if (sdbMeta.id == sdbId) {
+ foundNewSdb = true
+ listSdb = sdbMeta
+ }
}
- }
- assertTrue("Failed to find the newly created SDB in the list results", foundNewSdb)
- assertEquals(listSdb.name, sdb.get('name'))
- assertEquals(listSdb.id, sdb.get('id'))
- assertEquals(listSdb.path, sdb.get('path'))
- assertEquals(listSdb.'category_id', sdb.get('category_id'))
-
- // update the sdb
- description = "${Lorem.getWords(60)}"
- userGroupPermissions.add([
- "name": 'bar',
- "role_id": roleMap.write
- ])
- iamRolePermissions.add([
- "account_id": "1111111111",
- "iam_role_name": "fake_role2",
- "role_id": roleMap.read
- ])
- updateSdbV1(cerberusAuthToken, sdbId, description, owner, userGroupPermissions, iamRolePermissions)
- JsonPath sdbUpdated = readSdb(cerberusAuthToken, sdbId, V1_SAFE_DEPOSIT_BOX_PATH)
-
- // verify that the sdbUpdated we created contains the data we expect
- assertSafeDepositBoxV1HasFields(sdbUpdated, name, description, categoryId, owner, userGroupPermissions, iamRolePermissions)
-
- // delete the SDB
- deleteSdb(cerberusAuthToken, sdbId, V1_SAFE_DEPOSIT_BOX_PATH)
-
- // verify that the sdb is not longer in the list
- def updatedSdbList = listSdbs(cerberusAuthToken, V1_SAFE_DEPOSIT_BOX_PATH)
- def isSdbPresentInUpdatedList = false
-
- updatedSdbList.getList("").each { sdbMeta ->
- if (sdbMeta.id == sdbId) {
- isSdbPresentInUpdatedList = true
+ assertTrue("Failed to find the newly created SDB in the list results", foundNewSdb)
+ assertEquals(listSdb.name, sdb.get('name'))
+ assertEquals(listSdb.id, sdb.get('id'))
+ assertEquals(listSdb.path, sdb.get('path'))
+ assertEquals(listSdb.'category_id', sdb.get('category_id'))
+
+ // update the sdb
+ description = "${Lorem.getWords(60)}"
+ userGroupPermissions.add([
+ "name" : 'bar',
+ "role_id": roleMap.write
+ ])
+ iamRolePermissions.add([
+ "account_id" : "1111111111",
+ "iam_role_name": "fake_role2",
+ "role_id" : roleMap.read
+ ])
+ updateSdbV1(cerberusAuthToken, sdbId, description, owner, userGroupPermissions, iamRolePermissions)
+ JsonPath sdbUpdated = readSdb(cerberusAuthToken, sdbId, V1_SAFE_DEPOSIT_BOX_PATH)
+
+ // verify that the sdbUpdated we created contains the data we expect
+ assertSafeDepositBoxV1HasFields(sdbUpdated, name, description, categoryId, owner, userGroupPermissions, iamRolePermissions)
+ } finally {
+ // delete the SDB
+ deleteSdb(cerberusAuthToken, sdbId, V1_SAFE_DEPOSIT_BOX_PATH)
+
+ // verify that the sdb is not longer in the list
+ def updatedSdbList = listSdbs(cerberusAuthToken, V1_SAFE_DEPOSIT_BOX_PATH)
+ def isSdbPresentInUpdatedList = false
+
+ updatedSdbList.getList("").each { sdbMeta ->
+ if (sdbMeta.id == sdbId) {
+ isSdbPresentInUpdatedList = true
+ }
}
+ assertFalse("The created sdb should not be in the sdb listing call after deleting it", isSdbPresentInUpdatedList)
}
- assertFalse("The created sdb should not be in the sdb listing call after deleting it", isSdbPresentInUpdatedList)
}
- static void "v2 create, read, list, update and then delete a safe deposit box"(Map cerberusAuthPayloadData) {
+ static void "v2 create, read, list, update and then delete a safe deposit box"(Map cerberusAuthPayloadData, String group) {
String accountId = PropUtils.getPropWithDefaultValue("TEST_ACCOUNT_ID", "1111111111")
String roleName = PropUtils.getPropWithDefaultValue("TEST_ROLE_NAME", "fake_role")
String cerberusAuthToken = cerberusAuthPayloadData.'client_token'
- String groups = cerberusAuthPayloadData.metadata.groups
- def group = groups.split(/,/)[0]
// Create a map of category ids to names'
JsonPath getCategoriesResponse = getCategories(cerberusAuthToken)
@@ -265,64 +263,68 @@ class CerberusCompositeApiActions {
"role_id": roleMap.owner
]
]
-
// verify that the sdb we created contains the data we expect
def createdSdb = createSdbV2(cerberusAuthToken, name, description, categoryId, owner, userGroupPermissions, iamPrincipalPermissions)
- assertSafeDepositBoxV2HasFields(createdSdb, name, description, categoryId, owner, userGroupPermissions, iamPrincipalPermissions)
-
// test read sdb returns returns expected data
def sdbId = createdSdb.getString("id")
- JsonPath sdb = readSdb(cerberusAuthToken, sdbId, V2_SAFE_DEPOSIT_BOX_PATH)
- assertSafeDepositBoxV2HasFields(sdb, name, description, categoryId, owner, userGroupPermissions, iamPrincipalPermissions)
-
- // verify that the listing call contains our new SDB
- def sdbList = listSdbs(cerberusAuthToken, V2_SAFE_DEPOSIT_BOX_PATH)
- def foundNewSdb = false
- def listSdb
-
- sdbList.getList("").each { sdbMeta ->
- if (sdbMeta.id == sdbId) {
- foundNewSdb = true
- listSdb = sdbMeta
+
+ try {
+ // verify that the sdb we created contains the data we expect
+ assertSafeDepositBoxV2HasFields(createdSdb, name, description, categoryId, owner, userGroupPermissions, iamPrincipalPermissions)
+
+ // test read sdb returns returns expected data
+ JsonPath sdb = readSdb(cerberusAuthToken, sdbId, V2_SAFE_DEPOSIT_BOX_PATH)
+ assertSafeDepositBoxV2HasFields(sdb, name, description, categoryId, owner, userGroupPermissions, iamPrincipalPermissions)
+
+ // verify that the listing call contains our new SDB
+ def sdbList = listSdbs(cerberusAuthToken, V2_SAFE_DEPOSIT_BOX_PATH)
+ def foundNewSdb = false
+ def listSdb
+
+ sdbList.getList("").each { sdbMeta ->
+ if (sdbMeta.id == sdbId) {
+ foundNewSdb = true
+ listSdb = sdbMeta
+ }
}
- }
- assertTrue("Failed to find the newly created SDB in the list results", foundNewSdb)
- assertEquals(listSdb.name, sdb.get('name'))
- assertEquals(listSdb.id, sdb.get('id'))
- assertEquals(listSdb.path, sdb.get('path'))
- assertEquals(listSdb.'category_id', sdb.get('category_id'))
-
- // update the sdb
- description = "${Lorem.getWords(60)}"
- userGroupPermissions.add([
- "name": 'bar',
- "role_id": roleMap.write
- ])
- iamPrincipalPermissions.add([
- "iam_principal_arn": "arn:aws:iam::1111111111:role/fake_role2",
- "role_id": roleMap.read
- ])
- JsonPath sdbUpdatedUpdate = updateSdbV2(cerberusAuthToken, sdbId, description, owner, userGroupPermissions, iamPrincipalPermissions)
-
- // verify that the sdbUpdated we created contains the data we expect
- assertSafeDepositBoxV2HasFields(sdbUpdatedUpdate, name, description, categoryId, owner, userGroupPermissions, iamPrincipalPermissions)
-
- JsonPath sdbUpdatedRead = readSdb(cerberusAuthToken, sdbId, V2_SAFE_DEPOSIT_BOX_PATH)
- assertSafeDepositBoxV2HasFields(sdbUpdatedRead, name, description, categoryId, owner, userGroupPermissions, iamPrincipalPermissions)
-
- // delete the SDB
- deleteSdb(cerberusAuthToken, sdbId, V2_SAFE_DEPOSIT_BOX_PATH)
-
- // verify that the sdb is not longer in the list
- def updatedSdbList = listSdbs(cerberusAuthToken, V2_SAFE_DEPOSIT_BOX_PATH)
- def isSdbPresentInUpdatedList = false
-
- updatedSdbList.getList("").each { sdbMeta ->
- if (sdbMeta.id == sdbId) {
- isSdbPresentInUpdatedList = true
+ assertTrue("Failed to find the newly created SDB in the list results", foundNewSdb)
+ assertEquals(listSdb.name, sdb.get('name'))
+ assertEquals(listSdb.id, sdb.get('id'))
+ assertEquals(listSdb.path, sdb.get('path'))
+ assertEquals(listSdb.'category_id', sdb.get('category_id'))
+
+ // update the sdb
+ description = "${Lorem.getWords(60)}"
+ userGroupPermissions.add([
+ "name" : 'bar',
+ "role_id": roleMap.write
+ ])
+ iamPrincipalPermissions.add([
+ "iam_principal_arn": "arn:aws:iam::1111111111:role/fake_role2",
+ "role_id" : roleMap.read
+ ])
+ JsonPath sdbUpdatedUpdate = updateSdbV2(cerberusAuthToken, sdbId, description, owner, userGroupPermissions, iamPrincipalPermissions)
+
+ // verify that the sdbUpdated we created contains the data we expect
+ assertSafeDepositBoxV2HasFields(sdbUpdatedUpdate, name, description, categoryId, owner, userGroupPermissions, iamPrincipalPermissions)
+
+ JsonPath sdbUpdatedRead = readSdb(cerberusAuthToken, sdbId, V2_SAFE_DEPOSIT_BOX_PATH)
+ assertSafeDepositBoxV2HasFields(sdbUpdatedRead, name, description, categoryId, owner, userGroupPermissions, iamPrincipalPermissions)
+ } finally {
+ // delete the SDB
+ deleteSdb(cerberusAuthToken, sdbId, V2_SAFE_DEPOSIT_BOX_PATH)
+
+ // verify that the sdb is not longer in the list
+ def updatedSdbList = listSdbs(cerberusAuthToken, V2_SAFE_DEPOSIT_BOX_PATH)
+ def isSdbPresentInUpdatedList = false
+
+ updatedSdbList.getList("").each { sdbMeta ->
+ if (sdbMeta.id == sdbId) {
+ isSdbPresentInUpdatedList = true
+ }
}
+ assertFalse("The created sdb should not be in the sdb listing call after deleting it", isSdbPresentInUpdatedList)
}
- assertFalse("The created sdb should not be in the sdb listing call after deleting it", isSdbPresentInUpdatedList)
}
static Map "login user with multi factor authentication (or skip mfa if not required) and return auth data"(
diff --git a/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusIamApiTests.groovy b/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusIamApiTests.groovy
index 2d1c03117..03acf5408 100644
--- a/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusIamApiTests.groovy
+++ b/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusIamApiTests.groovy
@@ -33,6 +33,7 @@ class CerberusIamApiTests {
private String accountId
private String roleName
private String region
+ private String ownerGroup
private String cerberusAuthToken
private def cerberusAuthData
@@ -61,6 +62,9 @@ class CerberusIamApiTests {
region = PropUtils.getRequiredProperty("TEST_REGION",
"The region to use when authenticating with Cerberus using the IAM Auth endpoint")
+
+ ownerGroup = PropUtils.getRequiredProperty("TEST_OWNER_GROUP",
+ "The owner group to use when creating an SDB")
}
@Test
@@ -80,12 +84,12 @@ class CerberusIamApiTests {
@Test
void "test that an authenticated IAM role can create, read, update then delete a safe deposit box v1"() {
- "v1 create, read, list, update and then delete a safe deposit box"(cerberusAuthData)
+ "v1 create, read, list, update and then delete a safe deposit box"(cerberusAuthData as Map, ownerGroup)
}
@Test
void "test that an authenticated IAM role can create, read, update then delete a safe deposit box v2"() {
- "v2 create, read, list, update and then delete a safe deposit box"(cerberusAuthData)
+ "v2 create, read, list, update and then delete a safe deposit box"(cerberusAuthData as Map, ownerGroup)
}
@Test
diff --git a/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusIamApiV2Tests.groovy b/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusIamApiV2Tests.groovy
index 54c878d47..868381f27 100644
--- a/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusIamApiV2Tests.groovy
+++ b/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusIamApiV2Tests.groovy
@@ -36,6 +36,7 @@ class CerberusIamApiV2Tests {
private String accountId
private String roleName
private String region
+ private String ownerGroup
private String cerberusAuthToken
private def cerberusAuthData
@@ -64,6 +65,8 @@ class CerberusIamApiV2Tests {
region = PropUtils.getRequiredProperty("TEST_REGION",
"The region to use when authenticating with Cerberus using the IAM Auth endpoint")
+ ownerGroup = PropUtils.getRequiredProperty("TEST_OWNER_GROUP",
+ "The owner group to use when creating an SDB")
}
@Test
@@ -83,12 +86,12 @@ class CerberusIamApiV2Tests {
@Test
void "test that an authenticated IAM role can create, read, update then delete a safe deposit box v1"() {
- "v1 create, read, list, update and then delete a safe deposit box"(cerberusAuthData)
+ "v1 create, read, list, update and then delete a safe deposit box"(cerberusAuthData as Map, ownerGroup)
}
@Test
void "test that an authenticated IAM role can create, read, update then delete a safe deposit box v2"() {
- "v2 create, read, list, update and then delete a safe deposit box"(cerberusAuthData)
+ "v2 create, read, list, update and then delete a safe deposit box"(cerberusAuthData as Map, ownerGroup)
}
@Test
diff --git a/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusUserApiTests.groovy b/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusUserApiTests.groovy
index c8b28c7ac..88bf79c79 100644
--- a/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusUserApiTests.groovy
+++ b/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/CerberusUserApiTests.groovy
@@ -31,6 +31,7 @@ class CerberusUserApiTests {
private String password
private String otpDeviceId
private String otpSecret
+ private String ownerGroup
private String cerberusAuthToken
private Map cerberusAuthData
@@ -63,12 +64,12 @@ class CerberusUserApiTests {
@Test
void "test that an authenticated user can create, read, update then delete a safe deposit box v1"() {
- "v1 create, read, list, update and then delete a safe deposit box"(cerberusAuthData)
+ "v1 create, read, list, update and then delete a safe deposit box"(cerberusAuthData as Map, ownerGroup)
}
@Test
void "test that an authenticated user can create, read, update then delete a safe deposit box v2"() {
- "v2 create, read, list, update and then delete a safe deposit box"(cerberusAuthData)
+ "v2 create, read, list, update and then delete a safe deposit box"(cerberusAuthData as Map, ownerGroup)
}
@Test
@@ -99,5 +100,8 @@ class CerberusUserApiTests {
otpDeviceId = PropUtils.getRequiredProperty("TEST_USER_OTP_DEVICE_ID",
"The device id for the test users OTP MFA (OTP == Google auth)")
+
+ ownerGroup = PropUtils.getRequiredProperty("TEST_OWNER_GROUP",
+ "The owner group to use when creating an SDB")
}
}
diff --git a/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/NegativeIamPermissionsApiTests.groovy b/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/NegativeIamPermissionsApiTests.groovy
index 5f04bd6e4..2ec8cfea2 100644
--- a/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/NegativeIamPermissionsApiTests.groovy
+++ b/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/NegativeIamPermissionsApiTests.groovy
@@ -45,7 +45,7 @@ class NegativeIamPermissionsApiTests {
private String password
private String otpDeviceId
private String otpSecret
- private String[] userGroups
+ private String ownerGroup
private String userAuthToken
private Map userAuthData
@@ -70,6 +70,9 @@ class NegativeIamPermissionsApiTests {
password = PropUtils.getRequiredProperty("TEST_USER_PASSWORD",
"The password for a test user for testing user based endpoints")
+ ownerGroup = PropUtils.getRequiredProperty("TEST_OWNER_GROUP",
+ "The owner group to use when creating an SDB")
+
// todo: make this optional
otpSecret = PropUtils.getRequiredProperty("TEST_USER_OTP_SECRET",
"The secret for the test users OTP MFA (OTP == Google auth)")
@@ -84,8 +87,7 @@ class NegativeIamPermissionsApiTests {
loadRequiredEnvVars()
userAuthData = retrieveUserAuthToken(username, password, otpSecret, otpDeviceId)
userAuthToken = userAuthData."client_token"
- userGroups = userAuthData.metadata.groups.split(/,/)
- String userGroupOfTestUser = userGroups[0]
+ String userGroupOfTestUser = ownerGroup
String iamPrincipalArn = "arn:aws:iam::${accountId}:role/${roleName}"
def iamAuthData = retrieveIamAuthToken(iamPrincipalArn, region)
@@ -261,7 +263,7 @@ class NegativeIamPermissionsApiTests {
String sdbDescription = generateRandomSdbDescription()
String ownerRoleId = getRoleMap(iamAuthToken).owner
String accountRootArn = "arn:aws:iam::00000000:root"
- String automationUserGroup = userGroups[0]
+ String automationUserGroup = ownerGroup
def userPerms = []
def iamPrincipalPermissions = [
["iam_principal_arn": accountRootArn, "role_id": ownerRoleId],
@@ -296,7 +298,7 @@ class NegativeIamPermissionsApiTests {
String ownerRoleId = getRoleMap(iamAuthToken).owner
String accountRootWithNoAccess = "arn:aws:iam::00000000:root"
String accountRootWithAccess = "arn:aws:iam::$accountId:root"
- String automationUserGroup = userGroups[0]
+ String automationUserGroup = ownerGroup
def userPerms = []
def iamPermsWithNoAccess = [
["iam_principal_arn": accountRootWithNoAccess, "role_id": ownerRoleId],
diff --git a/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/NegativeUserPermissionsApiTests.groovy b/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/NegativeUserPermissionsApiTests.groovy
index e97de56f7..8f3c87072 100644
--- a/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/NegativeUserPermissionsApiTests.groovy
+++ b/cerberus-api-tests/src/integration-test/groovy/com/nike/cerberus/api/NegativeUserPermissionsApiTests.groovy
@@ -45,7 +45,7 @@ class NegativeUserPermissionsApiTests {
private String password
private String otpDeviceId
private String otpSecret
- private String[] userGroups
+ private String userGroup
private String userAuthToken
private Map userAuthData
@@ -70,6 +70,9 @@ class NegativeUserPermissionsApiTests {
password = PropUtils.getRequiredProperty("TEST_USER_PASSWORD",
"The password for a test user for testing user based endpoints")
+ userGroup = PropUtils.getRequiredProperty("TEST_OWNER_GROUP",
+ "The owner group to use when creating an SDB")
+
// todo: make this optional
otpSecret = PropUtils.getRequiredProperty("TEST_USER_OTP_SECRET",
"The secret for the test users OTP MFA (OTP == Google auth)")
@@ -87,8 +90,7 @@ class NegativeUserPermissionsApiTests {
def iamAuthData = retrieveIamAuthToken(iamPrincipalArn, region)
userAuthToken = userAuthData."client_token"
iamAuthToken = iamAuthData."client_token"
- userGroups = userAuthData.metadata.groups.split(/,/)
- String userGroupOfTestUser = userGroups[0]
+ String userGroupOfTestUser = userGroup
String sdbCategoryId = getCategoryMap(userAuthToken).Applications
String sdbDescription = generateRandomSdbDescription()
diff --git a/dependency-check-supressions.xml b/dependency-check-supressions.xml
index 632aa48da..5f8a23664 100644
--- a/dependency-check-supressions.xml
+++ b/dependency-check-supressions.xml
@@ -18,35 +18,35 @@
- 8f49e12035d0357b5f35e254334ea06d4585cf01
+ c934efe76038c21dbf033b797593acfbf5db73a9
CVE-2018-1258
- 9e43c2d8d2dffc60bfba8ac95a106d30e9593106
+ 8e6c8c1e88654122d84ab79ad87186344b3d5eb2
CVE-2018-1258
- f1265ecdd4636a2038768c2ab9da4b79961a3465
+ 2b52303edc13f2b45869e778ff47f4b390feb0a9
CVE-2018-1258
@@ -73,30 +73,4 @@
606ef790ce33d9cd6b892c47cc2a9508efc57698
CVE-2016-6798
-
-
- 57a550a531648dd665444f11d45c352a6978c7b6
- CVE-2019-17563
-
-
-
- 207dc9ca4215853d96ed695862f9873001f02a4b
- CVE-2019-17563
-
diff --git a/gradle.properties b/gradle.properties
index 1d316dc1c..93d81b34e 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -16,4 +16,4 @@
version=4.0.1
group=com.nike.cerberus
-springBootVersion=2.2.4.RELEASE
+springBootVersion=2.2.5.RELEASE
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index e0718e547..8ac4fb560 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -5,6 +5,14 @@
false
+
+
+
+
+
+
+
+
@@ -265,36 +273,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -330,14 +323,6 @@
-
-
-
-
-
-
-
-
@@ -362,22 +347,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -386,22 +355,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -410,22 +363,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -434,37 +371,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -473,22 +384,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -497,22 +392,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -521,22 +400,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -545,16 +408,6 @@
-
-
-
-
-
-
-
-
-
-
@@ -568,12 +421,26 @@
-
-
-
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -700,6 +567,11 @@
+
+
+
+
+
@@ -719,9 +591,6 @@
-
-
-
@@ -784,6 +653,14 @@
+
+
+
+
+
+
+
+
@@ -799,6 +676,11 @@
+
+
+
+
+
@@ -867,6 +749,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1283,20 +1178,12 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
+
+
@@ -1307,14 +1194,9 @@
-
-
-
-
-
-
-
-
+
+
+
@@ -1348,6 +1230,11 @@
+
+
+
+
+
@@ -1524,14 +1411,6 @@
-
-
-
-
-
-
-
-
@@ -1657,12 +1536,12 @@
-
-
-
+
+
+
-
-
+
+
@@ -1670,9 +1549,9 @@
-
-
-
+
+
+
@@ -1760,30 +1639,17 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -1796,11 +1662,6 @@
-
-
-
-
-
@@ -1816,19 +1677,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -1876,14 +1727,6 @@
-
-
-
-
-
-
-
-
@@ -1926,9 +1769,9 @@
-
-
-
+
+
+
@@ -1978,12 +1821,12 @@
-
-
-
+
+
+
-
-
+
+
@@ -1999,14 +1842,6 @@
-
-
-
-
-
-
-
-
@@ -2185,67 +2020,25 @@
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -2389,14 +2182,6 @@
-
-
-
-
-
-
-
-
@@ -2620,12 +2405,12 @@
-
-
-
+
+
+
-
-
+
+
@@ -2638,9 +2423,9 @@
-
-
-
+
+
+
@@ -2653,11 +2438,6 @@
-
-
-
-
-
@@ -2681,14 +2461,6 @@
-
-
-
-
-
-
-
-
@@ -2705,12 +2477,12 @@
-
-
-
+
+
+
-
-
+
+
@@ -2972,91 +2744,33 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -3162,6 +2876,14 @@
+
+
+
+
+
+
+
+
@@ -3175,14 +2897,6 @@
-
-
-
-
-
-
-
-
@@ -3191,14 +2905,6 @@
-
-
-
-
-
-
-
-
@@ -3209,14 +2915,6 @@
-
-
-
-
-
-
-
-
@@ -3225,14 +2923,6 @@
-
-
-
-
-
-
-
-
@@ -3241,14 +2931,6 @@
-
-
-
-
-
-
-
-
@@ -3257,14 +2939,6 @@
-
-
-
-
-
-
-
-
@@ -3273,14 +2947,6 @@
-
-
-
-
-
-
-
-
@@ -3289,14 +2955,6 @@
-
-
-
-
-
-
-
-
@@ -3305,14 +2963,6 @@
-
-
-
-
-
-
-
-
@@ -3321,14 +2971,6 @@
-
-
-
-
-
-
-
-
@@ -3337,14 +2979,6 @@
-
-
-
-
-
-
-
-
@@ -3353,14 +2987,6 @@
-
-
-
-
-
-
-
-
@@ -3369,14 +2995,6 @@
-
-
-
-
-
-
-
-
@@ -3385,14 +3003,6 @@
-
-
-
-
-
-
-
-
@@ -3401,14 +3011,6 @@
-
-
-
-
-
-
-
-
@@ -3417,14 +3019,6 @@
-
-
-
-
-
-
-
-
@@ -3433,14 +3027,6 @@
-
-
-
-
-
-
-
-
@@ -3449,14 +3035,6 @@
-
-
-
-
-
-
-
-
@@ -3465,14 +3043,6 @@
-
-
-
-
-
-
-
-
@@ -3481,14 +3051,6 @@
-
-
-
-
-
-
-
-
@@ -3497,14 +3059,6 @@
-
-
-
-
-
-
-
-
@@ -3513,14 +3067,6 @@
-
-
-
-
-
-
-
-
@@ -3537,14 +3083,6 @@
-
-
-
-
-
-
-
-
@@ -3664,24 +3202,19 @@
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -3972,24 +3505,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -3998,14 +3518,6 @@
-
-
-
-
-
-
-
-
@@ -4373,6 +3885,14 @@
+
+
+
+
+
+
+
+
@@ -4397,14 +3917,6 @@
-
-
-
-
-
-
-
-
@@ -4413,14 +3925,6 @@
-
-
-
-
-
-
-
-
@@ -4571,124 +4075,44 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -4701,274 +4125,94 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
@@ -4981,400 +4225,136 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -5502,19 +4482,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -5527,19 +4497,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -5552,19 +4512,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -5572,33 +4522,33 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
@@ -5611,9 +4561,9 @@
-
-
-
+
+
+
@@ -5629,12 +4579,12 @@
-
-
-
+
+
+
-
-
+
+