diff --git a/test/unit/org/apache/cassandra/auth/CassandraRoleManagerTest.java b/test/unit/org/apache/cassandra/auth/CassandraRoleManagerTest.java index 1a4d1ded1d..04ea7b92d8 100644 --- a/test/unit/org/apache/cassandra/auth/CassandraRoleManagerTest.java +++ b/test/unit/org/apache/cassandra/auth/CassandraRoleManagerTest.java @@ -52,7 +52,7 @@ public class CassandraRoleManagerTest public void getGrantedRolesImplMinimizesReads() { // IRoleManager::getRoleDetails was not in the initial API, so a default impl - // was added which uses the existing methods on IRoleManager as primitive to + // was added which uses the existing methods on IRoleManager as primitives to // construct the Role objects. While this will work for any IRoleManager impl // it is inefficient, so CassandraRoleManager has its own implementation which // collects all of the necessary info with a single query for each granted role. @@ -75,7 +75,7 @@ public class CassandraRoleManagerTest fetchRolesAndCheckReadCount(roleManager, ROLE_A); // Check that when granted roles appear multiple times in parallel levels of the hierarchy, we don't - // do redundant reads. E.g. here role_b_1, role_b_2 and role_b3 are granted to both role_b and role_c + // do redundant reads. E.g. here role_b_1, role_b_2 and role_b_3 are granted to both role_b and role_c // but we only want to actually read them once grantRolesTo(roleManager, ROLE_C, ROLE_B_1, ROLE_B_2, ROLE_B_3); fetchRolesAndCheckReadCount(roleManager, ROLE_A); @@ -182,15 +182,12 @@ public class CassandraRoleManagerTest RoleOptions options2 = getLoginRoleOptions("password2"); roleManager.createRole(AuthenticatedUser.ANONYMOUS_USER, role2, options2); - // Wait for the rate limit interval to pass + // Wait for the rate limit interval to pass since creation Thread.sleep(150); RoleOptions newOptions1 = getLoginRoleOptions("new_password1"); roleManager.alterRole(AuthenticatedUser.ANONYMOUS_USER, role1, newOptions1); - RoleOptions newOptions2 = getLoginRoleOptions("new_password2"); - roleManager.alterRole(AuthenticatedUser.ANONYMOUS_USER, role2, newOptions2); - try { RoleOptions newOptions1Again = getLoginRoleOptions("another_password1"); @@ -202,6 +199,20 @@ public class CassandraRoleManagerTest assertEquals("Password for role test_role_1 can only be changed every 100ms.", e.getMessage()); } + RoleOptions newOptions2 = getLoginRoleOptions("new_password2"); + roleManager.alterRole(AuthenticatedUser.ANONYMOUS_USER, role2, newOptions2); + + try + { + RoleOptions newOptions2Again = getLoginRoleOptions("another_password2"); + roleManager.alterRole(AuthenticatedUser.ANONYMOUS_USER, role2, newOptions2Again); + fail("Expected OverloadedException for test_role_2"); + } + catch (OverloadedException e) + { + assertEquals("Password for role test_role_2 can only be changed every 100ms.", e.getMessage()); + } + roleManager.dropRole(AuthenticatedUser.ANONYMOUS_USER, role1); roleManager.dropRole(AuthenticatedUser.ANONYMOUS_USER, role2); }