From 49c2561fe332a2094c0f837d618b2f9c875b45c6 Mon Sep 17 00:00:00 2001 From: Keith Wall Date: Wed, 14 Jan 2015 19:45:42 +0000 Subject: QPID-6292: [Java Broker Tests] Add model mechanism test testing the behaviour of secure attributes git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1651786 13f79535-47bb-0310-9956-ffa450edef68 --- .../singleton/AbstractConfiguredObjectTest.java | 34 ++++++++++++++++++++++ .../model/testmodels/singleton/TestSingleton.java | 4 +++ .../testmodels/singleton/TestSingletonImpl.java | 13 +++++++-- 3 files changed, 49 insertions(+), 2 deletions(-) (limited to 'qpid/java') diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java index 325e2843fa..46f205116a 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java @@ -18,12 +18,16 @@ */ package org.apache.qpid.server.model.testmodels.singleton; +import java.security.PrivilegedAction; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Map; +import javax.security.auth.Subject; + import org.apache.qpid.server.configuration.IllegalConfigurationException; +import org.apache.qpid.server.model.AbstractConfiguredObject; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.Model; import org.apache.qpid.server.store.ConfiguredObjectRecord; @@ -442,4 +446,34 @@ public class AbstractConfiguredObjectTest extends QpidTestCase assertEquals(TestSingletonImpl.DERIVED_VALUE, object.getDerivedValue()); } + + public void testSecureValueRetrieval() + { + final String objectName = "myName"; + final String secret = "secret"; + + Map attributes = new HashMap<>(); + attributes.put(ConfiguredObject.NAME, objectName); + attributes.put(TestSingleton.SECURE_VALUE, secret); + + final TestSingleton object = _model.getObjectFactory().create(TestSingleton.class, attributes); + + assertEquals(AbstractConfiguredObject.SECURED_STRING_VALUE, object.getAttribute(TestSingleton.SECURE_VALUE)); + assertEquals(secret, object.getSecureValue()); + + //verify we can retrieve the actual secure value using system rights + Subject.doAs(org.apache.qpid.server.security.SecurityManager.getSubjectWithAddedSystemRights(), + new PrivilegedAction() + { + @Override + public Object run() + { + assertEquals(secret, object.getAttribute(TestSingleton.SECURE_VALUE)); + assertEquals(secret, object.getSecureValue()); + return null; + } + }); + + + } } diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingleton.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingleton.java index e36097655b..f19dc5eeb9 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingleton.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingleton.java @@ -39,6 +39,7 @@ public interface TestSingleton> extends ConfiguredObj String ENUM_VALUE = "enumValue"; String INT_VALUE = "intValue"; String VALID_VALUE = "validValue"; + String SECURE_VALUE = "secureValue"; String ENUMSET_VALUES = "enumSetValues"; String TEST_CONTEXT_DEFAULT = "TEST_CONTEXT_DEFAULT"; @@ -80,4 +81,7 @@ public interface TestSingleton> extends ConfiguredObj @DerivedAttribute long getDerivedValue(); + @ManagedAttribute(secure = true) + String getSecureValue(); + } diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingletonImpl.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingletonImpl.java index 47c30030b2..c4dc0fa39d 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingletonImpl.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/TestSingletonImpl.java @@ -58,10 +58,13 @@ public class TestSingletonImpl extends AbstractConfiguredObject _enumSetValues; + private Set _enumSetValues; + + @ManagedAttributeField + private String _secureValue; @ManagedObjectFactoryConstructor @@ -143,4 +146,10 @@ public class TestSingletonImpl extends AbstractConfiguredObject