Repository: geode
Updated Branches:
  refs/heads/feature/GEODE-2632-21 288158d1f -> 6f7f51cce


fixup


Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/6f7f51cc
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/6f7f51cc
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/6f7f51cc

Branch: refs/heads/feature/GEODE-2632-21
Commit: 6f7f51cce1c6558dc227fc115782fb243c9f67ff
Parents: 288158d
Author: Kirk Lund <[email protected]>
Authored: Tue Jun 6 12:08:38 2017 -0700
Committer: Kirk Lund <[email protected]>
Committed: Tue Jun 6 12:08:38 2017 -0700

----------------------------------------------------------------------
 .../security/CustomSecurityService.java         |  59 ++++-
 .../internal/security/PostProcessorService.java | 264 -------------------
 .../security/SecurityServiceFactory.java        |  18 +-
 .../internal/security/SecurityServiceType.java  |   2 -
 .../security/SecurityServiceFactoryTest.java    |  20 +-
 .../security/AccessControlMBeanJUnitTest.java   |   1 +
 .../security/MBeanSecurityJUnitTest.java        |   1 +
 .../security/MemberMBeanSecurityJUnitTest.java  |   1 +
 .../CacheFactoryWithSecurityObjectTest.java     |  26 +-
 .../java/org/apache/geode/test/fake/Fakes.java  |   3 +
 10 files changed, 102 insertions(+), 293 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/6f7f51cc/geode-core/src/main/java/org/apache/geode/internal/security/CustomSecurityService.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/security/CustomSecurityService.java
 
b/geode-core/src/main/java/org/apache/geode/internal/security/CustomSecurityService.java
index 1fcf38f..038f04b 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/security/CustomSecurityService.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/security/CustomSecurityService.java
@@ -14,15 +14,21 @@
  */
 package org.apache.geode.internal.security;
 
+import java.io.IOException;
+import java.io.Serializable;
 import java.security.AccessController;
 import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.Callable;
 
+import org.apache.commons.lang.SerializationException;
 import org.apache.commons.lang.StringUtils;
+import org.apache.geode.GemFireIOException;
+import org.apache.geode.internal.cache.EntryEventImpl;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.security.shiro.GeodeAuthenticationToken;
 import org.apache.geode.internal.security.shiro.ShiroPrincipal;
+import org.apache.geode.internal.util.BlobHelper;
 import org.apache.geode.security.AuthenticationFailedException;
 import org.apache.geode.security.GemFireSecurityException;
 import org.apache.geode.security.NotAuthorizedException;
@@ -44,13 +50,17 @@ import org.apache.geode.security.SecurityManager;
 public class CustomSecurityService implements SecurityService {
   private static Logger logger = 
LogService.getLogger(LogService.SECURITY_LOGGER_NAME);
 
-  CustomSecurityService() {
-    // nothing
+  private final PostProcessor postProcessor;
+
+  CustomSecurityService(PostProcessor postProcessor) {
+    this.postProcessor = postProcessor;
   }
 
   @Override
   public void initSecurity(final Properties securityProps) {
-    // nothing
+    if (this.postProcessor != null) {
+      this.postProcessor.init(securityProps);
+    }
   }
 
   @Override
@@ -270,19 +280,48 @@ public class CustomSecurityService implements 
SecurityService {
 
   @Override
   public boolean needPostProcess() {
-    return false;
+    return this.postProcessor != null;
   }
 
   @Override
   public Object postProcess(final String regionPath, final Object key, final 
Object value,
-      final boolean valueIsSerialized) {
-    return value;
+                            final boolean valueIsSerialized) {
+    return postProcess(null, regionPath, key, value, valueIsSerialized);
   }
 
   @Override
-  public Object postProcess(final Object principal, final String regionPath, 
final Object key,
-      final Object value, final boolean valueIsSerialized) {
-    return value;
+  public Object postProcess(Object principal, final String regionPath, final 
Object key,
+                            final Object value, final boolean 
valueIsSerialized) {
+    if (!needPostProcess()) {
+      return value;
+    }
+
+    if (principal == null) {
+      Subject subject = getSubject();
+      if (subject == null) {
+        return value;
+      }
+      principal = (Serializable) subject.getPrincipal();
+    }
+
+    String regionName = StringUtils.stripStart(regionPath, "/");
+    Object newValue;
+
+    // if the data is a byte array, but the data itself is supposed to be an 
object, we need to
+    // deserialize it before we pass it to the callback.
+    if (valueIsSerialized && value instanceof byte[]) {
+      try {
+        Object oldObj = EntryEventImpl.deserialize((byte[]) value);
+        Object newObj = this.postProcessor.processRegionValue(principal, 
regionName, key, oldObj);
+        newValue = BlobHelper.serializeToBlob(newObj);
+      } catch (IOException | SerializationException e) {
+        throw new GemFireIOException("Exception de/serializing entry value", 
e);
+      }
+    } else {
+      newValue = this.postProcessor.processRegionValue(principal, regionName, 
key, value);
+    }
+
+    return newValue;
   }
 
   @Override
@@ -307,6 +346,6 @@ public class CustomSecurityService implements 
SecurityService {
 
   @Override
   public PostProcessor getPostProcessor() {
-    return null;
+    return this.postProcessor;
   }
 }

http://git-wip-us.apache.org/repos/asf/geode/blob/6f7f51cc/geode-core/src/main/java/org/apache/geode/internal/security/PostProcessorService.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/security/PostProcessorService.java
 
b/geode-core/src/main/java/org/apache/geode/internal/security/PostProcessorService.java
deleted file mode 100644
index 3c1e4d8..0000000
--- 
a/geode-core/src/main/java/org/apache/geode/internal/security/PostProcessorService.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license
- * agreements. See the NOTICE file distributed with this work for additional 
information regarding
- * copyright ownership. The ASF licenses this file to You under the Apache 
License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the 
License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software 
distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
KIND, either express
- * or implied. See the License for the specific language governing permissions 
and limitations under
- * the License.
- */
-package org.apache.geode.internal.security;
-
-import org.apache.commons.lang.SerializationException;
-import org.apache.commons.lang.StringUtils;
-import org.apache.geode.GemFireIOException;
-import org.apache.geode.internal.cache.EntryEventImpl;
-import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.internal.util.BlobHelper;
-import org.apache.geode.management.internal.security.ResourceOperation;
-import org.apache.geode.security.PostProcessor;
-import org.apache.geode.security.ResourcePermission;
-import org.apache.geode.security.SecurityManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.shiro.subject.Subject;
-import org.apache.shiro.util.ThreadState;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.Properties;
-import java.util.concurrent.Callable;
-
-/**
- * Security service with PostProcessor but no SecurityManager
- */
-public class PostProcessorService implements SecurityService {
-  private static Logger logger = 
LogService.getLogger(LogService.SECURITY_LOGGER_NAME);
-
-  private final PostProcessor postProcessor;
-
-  PostProcessorService(final PostProcessor postProcessor) {
-    if (postProcessor == null) {
-      throw new IllegalArgumentException("PostProcessor must not be null");
-    }
-    this.postProcessor = postProcessor;
-  }
-
-  @Override
-  public void initSecurity(final Properties securityProps) {
-    this.postProcessor.init(securityProps);
-  }
-
-  @Override
-  public void setSecurityManager(final SecurityManager securityManager) {
-    // nothing
-  }
-
-  @Override
-  public void setPostProcessor(final PostProcessor postProcessor) {
-    // nothing
-  }
-
-  /**
-   * It first looks the shiro subject in AccessControlContext since JMX will 
use multiple threads to
-   * process operations from the same client, then it looks into Shiro's thead 
context.
-   *
-   * @return the shiro subject, null if security is not enabled
-   */
-  @Override
-  public Subject getSubject() {
-    return null;
-  }
-
-  /**
-   * @return null if security is not enabled, otherwise return a shiro subject
-   */
-  @Override
-  public Subject login(final Properties credentials) {
-    return null;
-  }
-
-  @Override
-  public void logout() {
-    // nothing
-  }
-
-  @Override
-  public Callable associateWith(final Callable callable) {
-    return null;
-  }
-
-  @Override
-  public ThreadState bindSubject(final Subject subject) {
-    return null;
-  }
-
-  @Override
-  public void authorize(final ResourceOperation resourceOperation) {
-    // nothing
-  }
-
-  @Override
-  public void authorizeClusterManage() {
-    // nothing
-  }
-
-  @Override
-  public void authorizeClusterWrite() {
-    // nothing
-  }
-
-  @Override
-  public void authorizeClusterRead() {
-    // nothing
-  }
-
-  @Override
-  public void authorizeDataManage() {
-    // nothing
-  }
-
-  @Override
-  public void authorizeDataWrite() {
-    // nothing
-  }
-
-  @Override
-  public void authorizeDataRead() {
-    // nothing
-  }
-
-  @Override
-  public void authorizeRegionManage(final String regionName) {
-    // nothing
-  }
-
-  @Override
-  public void authorizeRegionManage(final String regionName, final String key) 
{
-    // nothing
-  }
-
-  @Override
-  public void authorizeRegionWrite(final String regionName) {
-    // nothing
-  }
-
-  @Override
-  public void authorizeRegionWrite(final String regionName, final String key) {
-    // nothing
-  }
-
-  @Override
-  public void authorizeRegionRead(final String regionName) {
-    // nothing
-  }
-
-  @Override
-  public void authorizeRegionRead(final String regionName, final String key) {
-    // nothing
-  }
-
-  @Override
-  public void authorize(final String resource, final String operation) {
-    // nothing
-  }
-
-  @Override
-  public void authorize(final String resource, final String operation, final 
String regionName) {
-    // nothing
-  }
-
-  @Override
-  public void authorize(final String resource, final String operation, String 
regionName,
-      final String key) {
-    // nothing
-  }
-
-  @Override
-  public void authorize(final ResourcePermission context) {
-    // nothing
-  }
-
-  @Override
-  public void close() {
-    if (this.postProcessor != null) {
-      this.postProcessor.close();
-    }
-  }
-
-  /**
-   * postProcess call already has this logic built in, you don't need to call 
this everytime you
-   * call postProcess. But if your postProcess is pretty involved with 
preparations and you need to
-   * bypass it entirely, call this first.
-   */
-  @Override
-  public boolean needPostProcess() {
-    return true;
-  }
-
-  @Override
-  public Object postProcess(final String regionPath, final Object key, final 
Object value,
-      final boolean valueIsSerialized) {
-    return postProcess(null, regionPath, key, value, valueIsSerialized);
-  }
-
-  @Override
-  public Object postProcess(Object principal, final String regionPath, final 
Object key,
-      final Object value, final boolean valueIsSerialized) {
-    if (principal == null) {
-      Subject subject = getSubject();
-      if (subject == null) {
-        return value;
-      }
-      principal = (Serializable) subject.getPrincipal();
-    }
-
-    String regionName = StringUtils.stripStart(regionPath, "/");
-    Object newValue;
-
-    // if the data is a byte array, but the data itself is supposed to be an 
object, we need to
-    // deserialize it before we pass it to the callback.
-    if (valueIsSerialized && value instanceof byte[]) {
-      try {
-        Object oldObj = EntryEventImpl.deserialize((byte[]) value);
-        Object newObj = this.postProcessor.processRegionValue(principal, 
regionName, key, oldObj);
-        newValue = BlobHelper.serializeToBlob(newObj);
-      } catch (IOException | SerializationException e) {
-        throw new GemFireIOException("Exception de/serializing entry value", 
e);
-      }
-    } else {
-      newValue = this.postProcessor.processRegionValue(principal, regionName, 
key, value);
-    }
-
-    return newValue;
-  }
-
-  @Override
-  public SecurityManager getSecurityManager() {
-    return null;
-  }
-
-  @Override
-  public PostProcessor getPostProcessor() {
-    return this.postProcessor;
-  }
-
-  @Override
-  public boolean isIntegratedSecurity() {
-    return false;
-  }
-
-  @Override
-  public boolean isClientSecurityRequired() {
-    return false;
-  }
-
-  @Override
-  public boolean isPeerSecurityRequired() {
-    return false;
-  }
-}

http://git-wip-us.apache.org/repos/asf/geode/blob/6f7f51cc/geode-core/src/main/java/org/apache/geode/internal/security/SecurityServiceFactory.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/security/SecurityServiceFactory.java
 
b/geode-core/src/main/java/org/apache/geode/internal/security/SecurityServiceFactory.java
index 481c385..25f32a8 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/security/SecurityServiceFactory.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/security/SecurityServiceFactory.java
@@ -55,6 +55,11 @@ public class SecurityServiceFactory {
       SecurityManager securityManager, PostProcessor postProcessor) {
     Properties securityConfig = getSecurityConfig(distributionConfig);
 
+    securityManager =
+        getSecurityManager(securityManager, securityConfig);
+    postProcessor =
+        getPostProcessor(postProcessor, securityConfig);
+
     SecurityService securityService = create(securityConfig, securityManager, 
postProcessor);
     initialize(securityService, distributionConfig);
     return securityService;
@@ -74,11 +79,9 @@ public class SecurityServiceFactory {
           ConfigInitialization configInitialization = new 
ConfigInitialization(shiroConfig);
           configInitialization.initialize();
         }
-        return new CustomSecurityService();
+        return new CustomSecurityService(postProcessor);
       case ENABLED:
         return new EnabledSecurityService(securityManager, postProcessor);
-      case POST_PROCESSOR:
-        return new PostProcessorService(postProcessor);
       case LEGACY:
         String clientAuthenticator = getProperty(securityConfig, 
SECURITY_CLIENT_AUTHENTICATOR);
         String peerAuthenticator = getProperty(securityConfig, 
SECURITY_PEER_AUTHENTICATOR);
@@ -95,7 +98,7 @@ public class SecurityServiceFactory {
       return SecurityServiceType.CUSTOM;
     }
 
-    boolean hasSecurityManager = securityManager != null;
+    boolean hasSecurityManager = securityManager != null || 
hasProperty(securityConfig, SECURITY_MANAGER);
     if (hasSecurityManager) {
       return SecurityServiceType.ENABLED;
     }
@@ -111,11 +114,6 @@ public class SecurityServiceFactory {
       return SecurityServiceType.CUSTOM;
     }
 
-    boolean hasPostProcessor = postProcessor != null;
-    if (hasPostProcessor) {
-      return SecurityServiceType.POST_PROCESSOR;
-    }
-
     return SecurityServiceType.DISABLED;
   }
 
@@ -148,7 +146,7 @@ public class SecurityServiceFactory {
     return postProcessor;
   }
 
-  public static boolean isShiroInUse() {
+  private static boolean isShiroInUse() {
     try {
       return SecurityUtils.getSecurityManager() != null;
     } catch (UnavailableSecurityManagerException ignore) {

http://git-wip-us.apache.org/repos/asf/geode/blob/6f7f51cc/geode-core/src/main/java/org/apache/geode/internal/security/SecurityServiceType.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/security/SecurityServiceType.java
 
b/geode-core/src/main/java/org/apache/geode/internal/security/SecurityServiceType.java
index 73fde6b..8ae76d2 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/security/SecurityServiceType.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/security/SecurityServiceType.java
@@ -19,8 +19,6 @@ public enum SecurityServiceType {
   ENABLED,
   /** Security is Disabled */
   DISABLED,
-  /** Has PostProcessor only */
-  POST_PROCESSOR,
   /** Legacy Security is Enabled */
   LEGACY,
   /** Shiro Config is specified */

http://git-wip-us.apache.org/repos/asf/geode/blob/6f7f51cc/geode-core/src/test/java/org/apache/geode/internal/security/SecurityServiceFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/internal/security/SecurityServiceFactoryTest.java
 
b/geode-core/src/test/java/org/apache/geode/internal/security/SecurityServiceFactoryTest.java
index 2029642..e977957 100644
--- 
a/geode-core/src/test/java/org/apache/geode/internal/security/SecurityServiceFactoryTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/internal/security/SecurityServiceFactoryTest.java
@@ -144,12 +144,12 @@ public class SecurityServiceFactoryTest {
   }
 
   @Test
-  public void determineType_postProcessor_returnsPOST_PROCESSOR() throws 
Exception {
+  public void determineType_postProcessor_returnsDISABLED() throws Exception {
     Properties securityConfig = new Properties();
     PostProcessor mockPostProcessor = mock(PostProcessor.class);
 
     assertThat(SecurityServiceFactory.determineType(securityConfig, null, 
mockPostProcessor))
-        .isSameAs(SecurityServiceType.POST_PROCESSOR);
+        .isSameAs(SecurityServiceType.DISABLED);
   }
 
   @Test
@@ -247,16 +247,16 @@ public class SecurityServiceFactoryTest {
   }
 
   @Test
-  public void create_postProcessor_createsPostProcessorService() throws 
Exception {
+  public void create_postProcessor_createsDisabledSecurityService() throws 
Exception {
     Properties securityConfig = new Properties();
     PostProcessor mockPostProcessor = mock(PostProcessor.class);
 
     assertThat(SecurityServiceFactory.create(securityConfig, null, 
mockPostProcessor))
-        .isInstanceOf(PostProcessorService.class);
+        .isInstanceOf(DisabledSecurityService.class);
   }
 
   @Test
-  public void create_securityManager_createsPostProcessorService() throws 
Exception {
+  public void create_securityManager_createsEnabledSecurityService() throws 
Exception {
     Properties securityConfig = new Properties();
     SecurityManager mockSecurityManager = mock(SecurityManager.class);
 
@@ -264,4 +264,14 @@ public class SecurityServiceFactoryTest {
         .isInstanceOf(EnabledSecurityService.class);
   }
 
+  @Test
+  public void 
create_securityManagerAndPostProcessor_createsEnabledSecurityService() throws 
Exception {
+    Properties securityConfig = new Properties();
+    SecurityManager mockSecurityManager = mock(SecurityManager.class);
+    PostProcessor mockPostProcessor = mock(PostProcessor.class);
+
+    assertThat(SecurityServiceFactory.create(securityConfig, 
mockSecurityManager, mockPostProcessor))
+        .isInstanceOf(EnabledSecurityService.class);
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/geode/blob/6f7f51cc/geode-core/src/test/java/org/apache/geode/management/internal/security/AccessControlMBeanJUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/security/AccessControlMBeanJUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/security/AccessControlMBeanJUnitTest.java
index 626ca45..49b8347 100644
--- 
a/geode-core/src/test/java/org/apache/geode/management/internal/security/AccessControlMBeanJUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/security/AccessControlMBeanJUnitTest.java
@@ -31,6 +31,7 @@ import org.junit.experimental.categories.Category;
 
 @Category({IntegrationTest.class, SecurityTest.class})
 public class AccessControlMBeanJUnitTest {
+
   private AccessControlMXBean bean;
 
   @ClassRule

http://git-wip-us.apache.org/repos/asf/geode/blob/6f7f51cc/geode-core/src/test/java/org/apache/geode/management/internal/security/MBeanSecurityJUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/security/MBeanSecurityJUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/security/MBeanSecurityJUnitTest.java
index 30ed267..091b1db 100644
--- 
a/geode-core/src/test/java/org/apache/geode/management/internal/security/MBeanSecurityJUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/security/MBeanSecurityJUnitTest.java
@@ -46,6 +46,7 @@ import javax.management.ReflectionException;
 
 @Category({IntegrationTest.class, SecurityTest.class})
 public class MBeanSecurityJUnitTest {
+
   @ClassRule
   public static ServerStarterRule server = new 
ServerStarterRule().withJMXManager()
       .withProperty(SECURITY_MANAGER, TestSecurityManager.class.getName())

http://git-wip-us.apache.org/repos/asf/geode/blob/6f7f51cc/geode-core/src/test/java/org/apache/geode/management/internal/security/MemberMBeanSecurityJUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/security/MemberMBeanSecurityJUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/security/MemberMBeanSecurityJUnitTest.java
index 6ae8d3f..77ddcc9 100644
--- 
a/geode-core/src/test/java/org/apache/geode/management/internal/security/MemberMBeanSecurityJUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/security/MemberMBeanSecurityJUnitTest.java
@@ -32,6 +32,7 @@ import org.junit.experimental.categories.Category;
 
 @Category({IntegrationTest.class, SecurityTest.class})
 public class MemberMBeanSecurityJUnitTest {
+
   private MemberMXBean bean;
 
   @Rule

http://git-wip-us.apache.org/repos/asf/geode/blob/6f7f51cc/geode-core/src/test/java/org/apache/geode/security/CacheFactoryWithSecurityObjectTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/security/CacheFactoryWithSecurityObjectTest.java
 
b/geode-core/src/test/java/org/apache/geode/security/CacheFactoryWithSecurityObjectTest.java
index 827ae3d..17ac1bd 100644
--- 
a/geode-core/src/test/java/org/apache/geode/security/CacheFactoryWithSecurityObjectTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/security/CacheFactoryWithSecurityObjectTest.java
@@ -16,14 +16,13 @@ package org.apache.geode.security;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.security.SecurityService;
-import org.apache.geode.internal.security.SecurityServiceFactory;
 import org.apache.geode.security.templates.DummyAuthenticator;
 import org.apache.geode.test.junit.categories.IntegrationTest;
 import org.apache.geode.test.junit.categories.SecurityTest;
@@ -53,6 +52,8 @@ public class CacheFactoryWithSecurityObjectTest {
         
.setSecurityManager(this.simpleSecurityManager).setPostProcessor(null).create();
     SecurityService securityService = this.cache.getSecurityService();
     assertTrue(securityService.isIntegratedSecurity());
+    assertTrue(securityService.isClientSecurityRequired());
+    assertTrue(securityService.isPeerSecurityRequired());
     assertFalse(securityService.needPostProcess());
     assertNotNull(securityService.getSecurityManager());
   }
@@ -63,10 +64,29 @@ public class CacheFactoryWithSecurityObjectTest {
         .setPostProcessor(new 
TestPostProcessor()).setSecurityManager(null).create();
     SecurityService securityService = this.cache.getSecurityService();
     assertFalse(securityService.isIntegratedSecurity());
+    assertFalse(securityService.isClientSecurityRequired());
+    assertFalse(securityService.isPeerSecurityRequired());
     assertFalse(securityService.needPostProcess());
+    assertNull(securityService.getPostProcessor());
+  }
+
+  @Test
+  public void testCreateCacheWithSecurityManagerAndPostProcessor() throws 
Exception {
+    this.cache = (InternalCache) new CacheFactory(this.properties)
+        .setSecurityManager(this.simpleSecurityManager).setPostProcessor(new 
TestPostProcessor()).create();
+    SecurityService securityService = this.cache.getSecurityService();
+    assertTrue(securityService.isIntegratedSecurity());
+    assertTrue(securityService.isClientSecurityRequired());
+    assertTrue(securityService.isPeerSecurityRequired());
+    assertTrue(securityService.needPostProcess());
+    assertNotNull(securityService.getSecurityManager());
     assertNotNull(securityService.getPostProcessor());
   }
 
+  /**
+   * This test seems to be misleading. Nothing is overridden here. 
SecurityManager
+   * is preferred over SECURITY_CLIENT_AUTHENTICATOR.
+   */
   @Test
   public void testOverride() throws Exception {
     
this.properties.setProperty(ConfigurationProperties.SECURITY_CLIENT_AUTHENTICATOR,
@@ -80,8 +100,10 @@ public class CacheFactoryWithSecurityObjectTest {
 
     assertTrue(securityService.isIntegratedSecurity());
     assertTrue(securityService.isClientSecurityRequired());
+    assertTrue(securityService.isPeerSecurityRequired());
     assertTrue(securityService.needPostProcess());
     assertNotNull(securityService.getSecurityManager());
+    assertNotNull(securityService.getPostProcessor());
   }
 
   @After

http://git-wip-us.apache.org/repos/asf/geode/blob/6f7f51cc/geode-core/src/test/java/org/apache/geode/test/fake/Fakes.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/fake/Fakes.java 
b/geode-core/src/test/java/org/apache/geode/test/fake/Fakes.java
index 6a1e26f..af38a1c 100644
--- a/geode-core/src/test/java/org/apache/geode/test/fake/Fakes.java
+++ b/geode-core/src/test/java/org/apache/geode/test/fake/Fakes.java
@@ -34,6 +34,7 @@ import 
org.apache.geode.distributed.internal.InternalDistributedSystem;
 import 
org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.internal.cache.CachePerfStats;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
+import org.apache.geode.internal.security.SecurityService;
 
 /**
  * Factory methods for fake objects for use in test.
@@ -79,6 +80,7 @@ public class Fakes {
     when(cache.getDistributionManager()).thenReturn(distributionManager);
     when(cache.getCancelCriterion()).thenReturn(systemCancelCriterion);
     when(cache.getCachePerfStats()).thenReturn(mock(CachePerfStats.class));
+    when(cache.getSecurityService()).thenReturn(mock(SecurityService.class));
 
     when(system.getDistributedMember()).thenReturn(member);
     when(system.getConfig()).thenReturn(config);
@@ -86,6 +88,7 @@ public class Fakes {
     when(system.getCancelCriterion()).thenReturn(systemCancelCriterion);
     when(system.getClock()).thenReturn(clock);
     when(system.getLogWriter()).thenReturn(logger);
+    when(system.getSecurityService()).thenReturn(mock(SecurityService.class));
     when(system.createAtomicStatistics(any(), any(), 
anyLong())).thenReturn(stats);
     when(system.createAtomicStatistics(any(), any())).thenReturn(stats);
 

Reply via email to