diff options
| author | Alex Rudyy <orudyy@apache.org> | 2013-03-20 17:07:58 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2013-03-20 17:07:58 +0000 |
| commit | ca84abd2a227eb09d483c66b8a3dcf7211484ee7 (patch) | |
| tree | bcf165fde7045da2e3d94ddfc17a82c891a6b779 /qpid/java/systests/src | |
| parent | f0858c211bcf8c9666ba2a0bbbf6d28b8a90d885 (diff) | |
| download | qpid-python-ca84abd2a227eb09d483c66b8a3dcf7211484ee7.tar.gz | |
QPID-4661: Add UI into java broker web management console to edit broker attributes
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1458956 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/systests/src')
4 files changed, 129 insertions, 4 deletions
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java index 078a1bb483..4ba2069dfd 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java @@ -41,14 +41,21 @@ public class AuthenticationProviderRestTest extends QpidRestTestCase { List<Map<String, Object>> providerDetails = getRestTestHelper().getJsonAsList("/rest/authenticationprovider"); assertNotNull("Providers details cannot be null", providerDetails); - assertEquals("Unexpected number of providers", 1, providerDetails.size()); + assertEquals("Unexpected number of providers", 2, providerDetails.size()); for (Map<String, Object> provider : providerDetails) { - assertProvider(true, PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE, provider); + boolean managesPrincipals = true; + String type = PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE; + if (ANONYMOUS_AUTHENTICATION_PROVIDER.equals(provider.get(AuthenticationProvider.NAME))) + { + type = AnonymousAuthenticationManagerFactory.PROVIDER_TYPE; + managesPrincipals = false; + } + assertProvider(managesPrincipals, type , provider); Map<String, Object> data = getRestTestHelper().getJsonAsSingletonList("/rest/authenticationprovider/" + provider.get(AuthenticationProvider.NAME)); assertNotNull("Cannot load data for " + provider.get(AuthenticationProvider.NAME), data); - assertProvider(true, PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE, data); + assertProvider(managesPrincipals, type, data); } } diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java index 63691e9915..fe4115b4c0 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java @@ -20,8 +20,10 @@ */ package org.apache.qpid.systest.rest; +import java.io.File; import java.util.Arrays; import java.util.Collection; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -32,7 +34,10 @@ import org.apache.qpid.server.model.LifetimePolicy; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.VirtualHost; +import org.apache.qpid.server.model.adapter.BrokerAdapter; +import org.apache.qpid.test.utils.QpidTestCase; import org.apache.qpid.test.utils.TestBrokerConfiguration; +import org.apache.qpid.test.utils.TestSSLConstants; public class BrokerRestTest extends QpidRestTestCase { @@ -86,6 +91,107 @@ public class BrokerRestTest extends QpidRestTestCase new HashSet<String>(port2Protocols)); } + public void testPutToUpdateWithValidAttributeValues() throws Exception + { + Map<String, Object> brokerAttributes = getValidBrokerAttributes(); + + int response = getRestTestHelper().submitRequest("/rest/broker", "PUT", brokerAttributes); + assertEquals("Unexpected update response", 200, response); + + restartBroker(); + Map<String, Object> brokerDetails = getRestTestHelper().getJsonAsSingletonList("/rest/broker"); + assertBrokerAttributes(brokerAttributes, brokerDetails); + } + + public void testPutToUpdateWithInvalidAttributeValues() throws Exception + { + Map<String, Object> invalidAttributes = new HashMap<String, Object>(); + invalidAttributes.put(Broker.DEFAULT_AUTHENTICATION_PROVIDER, "non-existing-provider"); + invalidAttributes.put(Broker.DEFAULT_VIRTUAL_HOST, "non-existing-host"); + invalidAttributes.put(Broker.ALERT_THRESHOLD_MESSAGE_AGE, -1000); + invalidAttributes.put(Broker.ALERT_THRESHOLD_MESSAGE_COUNT, -2000); + invalidAttributes.put(Broker.ALERT_THRESHOLD_QUEUE_DEPTH, -3000); + invalidAttributes.put(Broker.ALERT_THRESHOLD_MESSAGE_SIZE, -4000); + invalidAttributes.put(Broker.ALERT_REPEAT_GAP, -5000); + invalidAttributes.put(Broker.FLOW_CONTROL_SIZE_BYTES, -7000); + invalidAttributes.put(Broker.FLOW_CONTROL_RESUME_SIZE_BYTES, -16000); + invalidAttributes.put(Broker.MAXIMUM_DELIVERY_ATTEMPTS, -8); + invalidAttributes.put(Broker.HOUSEKEEPING_CHECK_PERIOD, -90000); + invalidAttributes.put(Broker.SESSION_COUNT_LIMIT, -10); + invalidAttributes.put(Broker.HEART_BEAT_DELAY, -11000); + invalidAttributes.put(Broker.STATISTICS_REPORTING_PERIOD, -12000); + invalidAttributes.put(Broker.ACL_FILE, QpidTestCase.QPID_HOME + File.separator + "etc" + File.separator + "non-existing-acl.acl"); + invalidAttributes.put(Broker.KEY_STORE_PATH, QpidTestCase.QPID_HOME + File.separator + "etc" + File.separator + "non-existing-keystore.jks"); + invalidAttributes.put(Broker.KEY_STORE_PASSWORD, "password1"); + invalidAttributes.put(Broker.KEY_STORE_CERT_ALIAS, "java-broker1"); + invalidAttributes.put(Broker.TRUST_STORE_PATH, QpidTestCase.QPID_HOME + File.separator + "etc" + File.separator + "non-existing-truststore.jks"); + invalidAttributes.put(Broker.TRUST_STORE_PASSWORD, "password2"); + invalidAttributes.put(Broker.PEER_STORE_PATH, QpidTestCase.QPID_HOME + File.separator + "etc" + File.separator + "non-existing-peerstore.jks"); + invalidAttributes.put(Broker.PEER_STORE_PASSWORD, "password3"); + invalidAttributes.put(Broker.GROUP_FILE, QpidTestCase.QPID_HOME + File.separator + "etc" + File.separator + "groups-non-existing"); + + for (Map.Entry<String, Object> entry : invalidAttributes.entrySet()) + { + Map<String, Object> brokerAttributes = getValidBrokerAttributes(); + brokerAttributes.put(entry.getKey(), entry.getValue()); + int response = getRestTestHelper().submitRequest("/rest/broker", "PUT", brokerAttributes); + assertEquals("Unexpected update response for invalid attribute " + entry.getKey() + "=" + entry.getValue(), 409, response); + } + + // a special case when FLOW_CONTROL_RESUME_SIZE_BYTES > FLOW_CONTROL_SIZE_BYTES + Map<String, Object> brokerAttributes = getValidBrokerAttributes(); + brokerAttributes.put(Broker.FLOW_CONTROL_SIZE_BYTES, 1000); + brokerAttributes.put(Broker.FLOW_CONTROL_RESUME_SIZE_BYTES, 2000); + int response = getRestTestHelper().submitRequest("/rest/broker", "PUT", brokerAttributes); + assertEquals("Unexpected update response for flow resume size > flow size", 409, response); + } + + private Map<String, Object> getValidBrokerAttributes() + { + Map<String, Object> brokerAttributes = new HashMap<String, Object>(); + brokerAttributes.put(Broker.DEFAULT_AUTHENTICATION_PROVIDER, ANONYMOUS_AUTHENTICATION_PROVIDER); + brokerAttributes.put(Broker.DEFAULT_VIRTUAL_HOST, TEST3_VIRTUALHOST); + brokerAttributes.put(Broker.ALERT_THRESHOLD_MESSAGE_AGE, 1000); + brokerAttributes.put(Broker.ALERT_THRESHOLD_MESSAGE_COUNT, 2000); + brokerAttributes.put(Broker.ALERT_THRESHOLD_QUEUE_DEPTH, 3000); + brokerAttributes.put(Broker.ALERT_THRESHOLD_MESSAGE_SIZE, 4000); + brokerAttributes.put(Broker.ALERT_REPEAT_GAP, 5000); + brokerAttributes.put(Broker.FLOW_CONTROL_SIZE_BYTES, 7000); + brokerAttributes.put(Broker.FLOW_CONTROL_RESUME_SIZE_BYTES, 6000); + brokerAttributes.put(Broker.MAXIMUM_DELIVERY_ATTEMPTS, 8); + brokerAttributes.put(Broker.DEAD_LETTER_QUEUE_ENABLED, true); + brokerAttributes.put(Broker.HOUSEKEEPING_CHECK_PERIOD, 90000); + brokerAttributes.put(Broker.SESSION_COUNT_LIMIT, 10); + brokerAttributes.put(Broker.HEART_BEAT_DELAY, 11000); + brokerAttributes.put(Broker.STATISTICS_REPORTING_PERIOD, 12000); + brokerAttributes.put(Broker.STATISTICS_REPORTING_RESET_ENABLED, true); + brokerAttributes.put(Broker.ACL_FILE, QpidTestCase.QPID_HOME + File.separator + "etc" + File.separator + "broker_example.acl"); + brokerAttributes.put(Broker.KEY_STORE_PATH, TestSSLConstants.BROKER_KEYSTORE); + brokerAttributes.put(Broker.KEY_STORE_PASSWORD, TestSSLConstants.BROKER_KEYSTORE_PASSWORD); + brokerAttributes.put(Broker.KEY_STORE_CERT_ALIAS, "java-broker"); + brokerAttributes.put(Broker.TRUST_STORE_PATH, TestSSLConstants.TRUSTSTORE); + brokerAttributes.put(Broker.TRUST_STORE_PASSWORD, TestSSLConstants.TRUSTSTORE_PASSWORD); + brokerAttributes.put(Broker.PEER_STORE_PATH, TestSSLConstants.TRUSTSTORE); + brokerAttributes.put(Broker.PEER_STORE_PASSWORD, TestSSLConstants.TRUSTSTORE_PASSWORD); + brokerAttributes.put(Broker.GROUP_FILE, QpidTestCase.QPID_HOME + File.separator + "etc" + File.separator + "groups"); + return brokerAttributes; + } + + private void assertBrokerAttributes(Map<String, Object> expectedAttributes, Map<String, Object> actualAttributes) + { + for (Map.Entry<String, Object> entry : expectedAttributes.entrySet()) + { + String attributeName = entry.getKey(); + Object attributeValue = entry.getValue(); + if (attributeName.equals(Broker.KEY_STORE_PASSWORD) || attributeName.equals(Broker.TRUST_STORE_PASSWORD) || attributeName.equals(Broker.PEER_STORE_PASSWORD)) + { + attributeValue = "********"; + } + Object currentValue = actualAttributes.get(attributeName); + assertEquals("Unexpected attribute " + attributeName + " value:", attributeValue, currentValue); + } + } + protected void assertBrokerAttributes(Map<String, Object> brokerDetails) { Asserts.assertAttributesPresent(brokerDetails, Broker.AVAILABLE_ATTRIBUTES, diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QpidRestTestCase.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QpidRestTestCase.java index e2b73aa2b5..30d5b195f1 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QpidRestTestCase.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QpidRestTestCase.java @@ -21,14 +21,21 @@ package org.apache.qpid.systest.rest; import java.io.IOException; +import java.util.HashMap; +import java.util.Map; import org.apache.commons.configuration.ConfigurationException; +import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Port; +import org.apache.qpid.server.plugin.AuthenticationManagerFactory; +import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManagerFactory; +import org.apache.qpid.server.security.auth.manager.ExternalAuthenticationManagerFactory; import org.apache.qpid.test.utils.TestBrokerConfiguration; import org.apache.qpid.test.utils.QpidBrokerTestCase; public class QpidRestTestCase extends QpidBrokerTestCase { + public static final String ANONYMOUS_AUTHENTICATION_PROVIDER = "testAnonymous"; public static final String TEST1_VIRTUALHOST = "test"; public static final String TEST2_VIRTUALHOST = "test2"; public static final String TEST3_VIRTUALHOST = "test3"; @@ -77,6 +84,11 @@ public class QpidRestTestCase extends QpidBrokerTestCase config.setObjectAttribute(TestBrokerConfiguration.ENTRY_NAME_HTTP_PORT, Port.PORT, _restTestHelper.getHttpPort()); config.removeObjectConfiguration(TestBrokerConfiguration.ENTRY_NAME_JMX_PORT); config.removeObjectConfiguration(TestBrokerConfiguration.ENTRY_NAME_RMI_PORT); + + Map<String, Object> anonymousProviderAttributes = new HashMap<String, Object>(); + anonymousProviderAttributes.put(AuthenticationProvider.TYPE, AnonymousAuthenticationManagerFactory.PROVIDER_TYPE); + anonymousProviderAttributes.put(AuthenticationProvider.NAME, ANONYMOUS_AUTHENTICATION_PROVIDER); + config.addAuthenticationProviderConfiguration(anonymousProviderAttributes); } public RestTestHelper getRestTestHelper() diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/StructureRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/StructureRestTest.java index f5e326f90b..5593ad0b42 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/StructureRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/StructureRestTest.java @@ -45,7 +45,7 @@ public class StructureRestTest extends QpidRestTestCase @SuppressWarnings("unchecked") List<Map<String, Object>> providers = (List<Map<String, Object>>) structure.get("authenticationproviders"); - assertEquals("Unexpected number of authentication providers", 1, providers.size()); + assertEquals("Unexpected number of authentication providers", 2, providers.size()); for (String hostName : EXPECTED_VIRTUALHOSTS) { |
