### Question:
AuditRoleManager implements IRoleManager { @Override public Set<Option> alterableOptions() { return alterableOptions; } AuditRoleManager(); @VisibleForTesting  AuditRoleManager(IRoleManager wrappedRoleManager, AuditWhitelistManager whitelistManager, AuditAdapter auditAdapter, IAuthenticator authenticator); @Override void validateConfiguration(); @Override void setup(); @Override Set<? extends IResource> protectedResources(); @Override Set<Option> supportedOptions(); @Override Set<Option> alterableOptions(); @Override void createRole(AuthenticatedUser performer, RoleResource role, RoleOptions options); @Override void alterRole(AuthenticatedUser performer, RoleResource role, RoleOptions options); @Override Map<String, String> getCustomOptions(RoleResource role); @Override void grantRole(AuthenticatedUser performer, RoleResource role, RoleResource grantee); @Override void revokeRole(AuthenticatedUser performer, RoleResource role, RoleResource revokee); @Override void dropRole(AuthenticatedUser performer, RoleResource role); @Override Set<RoleResource> getRoles(RoleResource grantee, boolean includeInherited); @Override Set<RoleResource> getAllRoles(); @Override boolean isSuper(RoleResource role); @Override boolean canLogin(RoleResource role); @Override boolean isExistingRole(RoleResource role);  }### Answer:
@Test public void testAlterableOptions() { Set<IRoleManager.Option> options = auditRoleManager.alterableOptions(); assertThat(options).containsExactlyInAnyOrder(IRoleManager.Option.PASSWORD, IRoleManager.Option.OPTIONS); }
@Test public void testStandAloneAlterableOptions() { IAuthenticator authenticator = mock(IAuthenticator.class); AuditRoleManager standAloneAuditRoleManager = new AuditRoleManager(mockWrappedRoleManager, mockAuditWhitelistManager, mockAuditAdapter, authenticator); Set<IRoleManager.Option> options = standAloneAuditRoleManager.alterableOptions(); assertThat(options).containsExactlyInAnyOrder(IRoleManager.Option.OPTIONS); }