From ca84abd2a227eb09d483c66b8a3dcf7211484ee7 Mon Sep 17 00:00:00 2001 From: Alex Rudyy Date: Wed, 20 Mar 2013 17:07:58 +0000 Subject: 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 --- .../rest/AuthenticationProviderRestTest.java | 13 ++- .../apache/qpid/systest/rest/BrokerRestTest.java | 106 +++++++++++++++++++++ .../apache/qpid/systest/rest/QpidRestTestCase.java | 12 +++ .../qpid/systest/rest/StructureRestTest.java | 2 +- 4 files changed, 129 insertions(+), 4 deletions(-) (limited to 'qpid/java/systests/src') 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> 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 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 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(port2Protocols)); } + public void testPutToUpdateWithValidAttributeValues() throws Exception + { + Map brokerAttributes = getValidBrokerAttributes(); + + int response = getRestTestHelper().submitRequest("/rest/broker", "PUT", brokerAttributes); + assertEquals("Unexpected update response", 200, response); + + restartBroker(); + Map brokerDetails = getRestTestHelper().getJsonAsSingletonList("/rest/broker"); + assertBrokerAttributes(brokerAttributes, brokerDetails); + } + + public void testPutToUpdateWithInvalidAttributeValues() throws Exception + { + Map invalidAttributes = new HashMap(); + 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 entry : invalidAttributes.entrySet()) + { + Map 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 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 getValidBrokerAttributes() + { + Map brokerAttributes = new HashMap(); + 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 expectedAttributes, Map actualAttributes) + { + for (Map.Entry 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 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 anonymousProviderAttributes = new HashMap(); + 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> providers = (List>) 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) { -- cgit v1.2.1