public boolean hasPermission(final UserKey userKey) { // Allow the sysadmin condition to be bypassed by a dark feature // This enables us to use the event reporter when sysadmin permissions may not be accessible, e.g. in OnDemand instances return userPermissionsHelper.isUserSystemAdmin(userKey) || darkFeatureManager.isFeatureEnabledForUser(userKey, DARK_FEATURE_KEY); } }
@Test public void systemFeatureEnabledForAnonymous() { assertFeatureEnabled(darkFeatureManager.isFeatureEnabledForUser(ANONYMOUS, ENABLED_FEATURE)); }
@Test public void systemFeatureDisabledForAnonymous() { assertFeatureDisabled(darkFeatureManager.isFeatureEnabledForUser(ANONYMOUS, DISABLED_FEATURE)); }
@Test public void invalidFeatureKeyIsNeverEnabledForAnonymous() { assertInvalidFeatureDisabled(darkFeatureManager.isFeatureEnabledForUser(ANONYMOUS, INVALID_FEATURE_KEY)); }
@Test(expected = IllegalArgumentException.class) public void featureUndefinedForInvalidUser() { darkFeatureManager.isFeatureEnabledForUser(notExistingUser(), ENABLED_FEATURE); }
@Test public void systemFeatureEnabledForAuthenticatedUser() { assertFeatureEnabled(darkFeatureManager.isFeatureEnabledForUser(adminUser(), ENABLED_FEATURE)); }
@Test public void systemFeatureDisabledForAuthenticatedUser() { assertFeatureDisabled(darkFeatureManager.isFeatureEnabledForUser(adminUser(), DISABLED_FEATURE)); }
@Test public void invalidFeatureKeyIsNeverEnabledForAuthenticatedUser() { assertInvalidFeatureDisabled(darkFeatureManager.isFeatureEnabledForUser(adminUser(), INVALID_FEATURE_KEY)); }
@After public void disableAdminFeature() throws Exception { if (darkFeatureManager.isFeatureEnabledForUser(adminUser(), ADMIN_USER_FEATURE)) { darkFeatureManager.disableFeatureForUser(adminUser(), ADMIN_USER_FEATURE); } }
@Test public void changeFeatureForAuthenticatedUser() { try { darkFeatureManager.enableFeatureForUser(adminUser(), ADMIN_USER_FEATURE); } catch (UnsupportedOperationException e) { ignoreTest(); } assertTrue("Feature key '" + ADMIN_USER_FEATURE + "' must be enabled for the admin user", darkFeatureManager.isFeatureEnabledForUser(adminUser(), ADMIN_USER_FEATURE)); assertFalse("Feature key '" + ADMIN_USER_FEATURE + "' must be disabled for all users", darkFeatureManager.isFeatureEnabledForAllUsers(ADMIN_USER_FEATURE)); darkFeatureManager.disableFeatureForUser(adminUser(), ADMIN_USER_FEATURE); assertFalse("Feature key '" + ADMIN_USER_FEATURE + "' must be disabled for the admin user", darkFeatureManager.isFeatureEnabledForUser(adminUser(), ADMIN_USER_FEATURE)); }