summaryrefslogtreecommitdiff
path: root/qpid/java/broker-plugins/management-http
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/broker-plugins/management-http')
-rw-r--r--qpid/java/broker-plugins/management-http/MANIFEST.MF72
-rw-r--r--qpid/java/broker-plugins/management-http/build.xml47
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java (renamed from qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/Management.java)69
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementFactory.java54
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/ManagementActivator.java73
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/ManagementConfiguration.java77
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LogoutServlet.java4
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.ManagementFactory1
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementFactoryTest.java83
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/Asserts.java249
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/AuthenticationProviderRestTest.java73
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BasicAuthRestTest.java115
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingRestTest.java129
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BrokerRestHttpsTest.java60
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BrokerRestTest.java118
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConnectionRestTest.java213
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeRestTest.java87
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupProviderRestTest.java160
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupRestTest.java109
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/LogRecordsRestTest.java42
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/MessagesRestTest.java354
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/PortRestTest.java61
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QpidRestTestCase.java83
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueRestTest.java225
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/RestTestHelper.java417
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslRestTest.java42
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/StructureRestTest.java115
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/UserRestTest.java97
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostRestTest.java434
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/systest/rest/acl/GroupRestACLTest.java190
-rw-r--r--qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/systest/rest/acl/UserRestACLTest.java192
31 files changed, 199 insertions, 3846 deletions
diff --git a/qpid/java/broker-plugins/management-http/MANIFEST.MF b/qpid/java/broker-plugins/management-http/MANIFEST.MF
deleted file mode 100644
index c6c5c65277..0000000000
--- a/qpid/java/broker-plugins/management-http/MANIFEST.MF
+++ /dev/null
@@ -1,72 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Qpid Broker-Plugins Management HTTP
-Bundle-SymbolicName: broker-plugins-management-http
-Bundle-Description: HTTP management plugin for Qpid.
-Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Bundle-DocURL: http://www.apache.org/
-Bundle-Version: 1.0.0
-Bundle-Activator: org.apache.qpid.server.management.plugin.ManagementActivator
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Bundle-ClassPath: .
-Bundle-ActivationPolicy: lazy
-Import-Package: org.apache.qpid,
- org.apache.qpid.framing,
- org.apache.qpid.protocol,
- org.apache.qpid.common,
- org.apache.qpid.server.security.auth,
- org.apache.qpid.server.security.auth.manager,
- org.apache.qpid.server.security.auth.sasl,
- org.apache.qpid.server.binding,
- org.apache.qpid.server.exchange,
- org.apache.qpid.server.logging,
- org.apache.qpid.server.logging.actors,
- org.apache.qpid.server.logging.messages,
- org.apache.qpid.server.message,
- org.apache.qpid.server.model,
- org.apache.qpid.server.model.adapter,
- org.apache.qpid.server.model.impl,
- org.apache.qpid.server.configuration,
- org.apache.qpid.server.configuration.plugins,
- org.apache.qpid.server.connection,
- org.apache.qpid.server.plugins,
- org.apache.qpid.server.protocol,
- org.apache.qpid.server.queue,
- org.apache.qpid.server.subscription,
- org.apache.qpid.server.registry,
- org.apache.qpid.server.security,
- org.apache.qpid.server.security.access,
- org.apache.qpid.server.stats,
- org.apache.qpid.server.virtualhost,
- org.apache.qpid.util,
- org.eclipse.jetty.server;version=7.6.3,
- org.eclipse.jetty.server.session;version=7.6.3,
- org.eclipse.jetty.server.ssl;version=7.6.3,
- org.eclipse.jetty.server.nio;version=7.6.3,
- org.eclipse.jetty.security;version=7.6.3,
- org.eclipse.jetty.http;version=7.6.3,
- org.eclipse.jetty.io;version=7.6.3,
- org.eclipse.jetty.io.nio;version=7.6.3,
- org.eclipse.jetty.servlet;version=7.6.3,
- org.eclipse.jetty.util.ssl;version=7.6.3,
- org.apache.commons.codec;version=1.3.0,
- org.apache.commons.codec.binary;version=1.3.0,
- org.apache.commons.configuration;version=1.0.0,
- org.apache.commons.lang;version=1.0.0,
- org.apache.commons.lang.builder;version=1.0.0,
- org.apache.log4j;version=1.0.0,
- org.codehaus.jackson;version=1.9.0,
- org.codehaus.jackson.map;version=1.9.0,
- javax.crypto,
- javax.crypto.spec,
- javax.security.auth,
- javax.security.auth.callback,
- javax.security.sasl,
- javax.servlet,
- javax.servlet.http,
- javax.management;version=1.0.0,
- javax.management.openmbean;version=1.0.0,
- org.osgi.util.tracker;version=1.0.0,
- org.osgi.framework;version=1.3
-Private-Package: org.apache.qpid.server.management.plugin.impl
-Export-Package: org.apache.qpid.server.management.plugin;uses:="org.osgi.framework"
diff --git a/qpid/java/broker-plugins/management-http/build.xml b/qpid/java/broker-plugins/management-http/build.xml
index 1eab0b7083..73fc3eb53a 100644
--- a/qpid/java/broker-plugins/management-http/build.xml
+++ b/qpid/java/broker-plugins/management-http/build.xml
@@ -18,49 +18,32 @@
-->
<project name="Qpid Broker-Plugins Management HTTP" default="build">
- <condition property="systests.optional.depends" value="bdbstore" else="">
- <or>
- <and>
- <contains string="${modules.opt}" substring="bdbstore"/>
- <contains string="${profile}" substring="bdb"/>
- </and>
- <and>
- <istrue value="${optional}"/>
- <contains string="${profile}" substring="bdb"/>
- </and>
- </or>
- </condition>
-
<property name="module.depends" value="common broker" />
- <property name="module.test.depends" value="systests test broker/test common/test management/common client ${systests.optional.depends}" />
+ <property name="module.test.depends" value="broker/tests common/tests management/common client" />
- <property name="module.manifest" value="MANIFEST.MF" />
- <property name="module.plugin" value="true" />
- <property name="module.genpom" value="true"/>
- <property name="module.genpom.args" value="-Sqpid-common=provided -Sqpid-broker=provided"/>
+ <property name="module.genpom" value="true" />
+ <property name="module.genpom.args" value="-Sqpid-common=provided -Sqpid-broker=provided" />
- <property name="broker-plugins-management-http.libs" value=""/>
+ <property name="broker-plugins-management-http.libs" value="" />
<import file="../../module.xml" />
<!-- Flagfile used to determine if uwar needs to be done. ._ is part of Ant's defaultexcludes so wont appear bundles -->
- <property name="dojo.uptodate.flagfile" value="${module.classes}/resources/dojo/._dojouptodate.timestamp"/>
+ <property name="dojo.uptodate.flagfile" value="${module.classes}/resources/dojo/._dojouptodate.timestamp" />
- <uptodate property="unwardojo.done"
- targetfile="${dojo.uptodate.flagfile}"
- srcfile="${project.root}/${dojo}"/>
+ <uptodate property="unwardojo.done" targetfile="${dojo.uptodate.flagfile}" srcfile="${project.root}/${dojo}" />
- <target name="precompile" depends="unwardojo"/>
+ <target name="precompile" depends="unwardojo" />
<target name="unwardojo" unless="unwardojo.done">
- <unwar src="${project.root}/${dojo}" dest="${module.classes}/resources/dojo">
- <patternset>
- <exclude name="META-INF/**"/>
- <exclude name="WEB-INF/**"/>
- <exclude name="**/*.uncompressed.js"/>
- </patternset>
- </unwar>
- <touch file="${dojo.uptodate.flagfile}"/>
+ <unwar src="${project.root}/${dojo}" dest="${module.classes}/resources/dojo">
+ <patternset>
+ <exclude name="META-INF/**" />
+ <exclude name="WEB-INF/**" />
+ <exclude name="**/*.uncompressed.js" />
+ </patternset>
+ </unwar>
+ <touch file="${dojo.uptodate.flagfile}" />
</target>
<target name="bundle" depends="bundle-tasks" />
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/Management.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
index dfacf24928..f10b308e24 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/Management.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
@@ -21,8 +21,6 @@
package org.apache.qpid.server.management.plugin;
import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
@@ -55,8 +53,6 @@ import org.apache.qpid.server.model.Session;
import org.apache.qpid.server.model.Transport;
import org.apache.qpid.server.model.User;
import org.apache.qpid.server.model.VirtualHost;
-import org.apache.qpid.server.registry.ApplicationRegistry;
-import org.apache.qpid.server.registry.IApplicationRegistry;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.SessionManager;
@@ -66,9 +62,9 @@ import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.util.ssl.SslContextFactory;
-public class Management
+public class HttpManagement implements ManagementPlugin
{
- private final Logger _logger = Logger.getLogger(Management.class);
+ private final Logger _logger = Logger.getLogger(HttpManagement.class);
public static final String ENTRY_POINT_PATH = "/management";
@@ -78,11 +74,18 @@ public class Management
private final Collection<Server> _servers = new ArrayList<Server>();
- public Management() throws ConfigurationException, IOException
+ private final String _keyStorePassword;
+ private final String _keyStorePath;
+ private final int _sessionTimeout;
+
+ public HttpManagement(Broker broker, String keyStorePath, String keyStorePassword, int sessionTimeout) throws ConfigurationException
{
- _broker = ApplicationRegistry.getInstance().getBroker();
+ _broker = broker;
+ _keyStorePassword = keyStorePassword;
+ _keyStorePath = keyStorePath;
+ _sessionTimeout = sessionTimeout;
- Collection<Port> ports = _broker.getPorts();
+ Collection<Port> ports = broker.getPorts();
int httpPort = -1, httpsPort = -1;
for (Port port : ports)
{
@@ -120,7 +123,7 @@ public class Management
}
@SuppressWarnings("unchecked")
- private Server createServer(int port, int sslPort) throws IOException, ConfigurationException
+ private Server createServer(int port, int sslPort) throws ConfigurationException
{
if (_logger.isInfoEnabled())
{
@@ -128,7 +131,6 @@ public class Management
+ (sslPort == -1 ? "" : " HTTPS port " + sslPort));
}
- IApplicationRegistry appRegistry = ApplicationRegistry.getInstance();
Server server = new Server();
if (port != -1)
@@ -144,11 +146,11 @@ public class Management
if (sslPort != -1)
{
- String keyStorePath = getKeyStorePath(appRegistry);
+ checkKeyStorePath(_keyStorePath);
SslContextFactory factory = new SslContextFactory();
- factory.setKeyStorePath(keyStorePath);
- factory.setKeyStorePassword(appRegistry.getConfiguration().getManagementKeyStorePassword());
+ factory.setKeyStorePath(_keyStorePath);
+ factory.setKeyStorePassword(_keyStorePassword);
SslSocketConnector connector = new SslSocketConnector(factory);
connector.setPort(sslPort);
@@ -197,7 +199,7 @@ public class Management
final SessionManager sessionManager = root.getSessionHandler().getSessionManager();
- sessionManager.setMaxInactiveInterval(appRegistry.getConfiguration().getHTTPManagementSessionTimeout());
+ sessionManager.setMaxInactiveInterval(_sessionTimeout);
return server;
}
@@ -207,6 +209,7 @@ public class Management
root.addServlet(new ServletHolder(new RestServlet(_broker, hierarchy)), "/rest/" + name + "/*");
}
+ @Override
public void start() throws Exception
{
CurrentActor.get().message(ManagementConsoleMessages.STARTUP(OPERATIONAL_LOGGING_NAME));
@@ -221,6 +224,7 @@ public class Management
CurrentActor.get().message(ManagementConsoleMessages.READY(OPERATIONAL_LOGGING_NAME));
}
+ @Override
public void stop() throws Exception
{
for (Server server : _servers)
@@ -233,14 +237,8 @@ public class Management
CurrentActor.get().message(ManagementConsoleMessages.STOPPED(OPERATIONAL_LOGGING_NAME));
}
- private String getKeyStorePath(IApplicationRegistry appRegistry) throws ConfigurationException, FileNotFoundException
+ private void checkKeyStorePath(String keyStorePath) throws ConfigurationException
{
- String keyStorePath = System.getProperty("javax.net.ssl.keyStore");
- if (keyStorePath == null)
- {
- keyStorePath = appRegistry.getConfiguration().getManagementKeyStorePath();
- }
-
if (keyStorePath == null)
{
throw new ConfigurationException("Management SSL keystore path not defined, unable to start SSL protected HTTP connector");
@@ -250,14 +248,13 @@ public class Management
File ksf = new File(keyStorePath);
if (!ksf.exists())
{
- throw new FileNotFoundException("Cannot find management SSL keystore file: " + ksf);
+ throw new ConfigurationException("Cannot find management SSL keystore file: " + ksf);
}
if (!ksf.canRead())
{
- throw new FileNotFoundException("Cannot read management SSL keystore file: " + ksf + ". Check permissions.");
+ throw new ConfigurationException("Cannot read management SSL keystore file: " + ksf + ". Check permissions.");
}
}
- return keyStorePath;
}
private void logOperationalListenMessages(Server server)
@@ -291,5 +288,27 @@ public class Management
return connector instanceof SslSocketConnector ? "HTTPS" : "HTTP";
}
+ /** Added for testing purposes */
+ Broker getBroker()
+ {
+ return _broker;
+ }
+ /** Added for testing purposes */
+ String getKeyStorePassword()
+ {
+ return _keyStorePassword;
+ }
+
+ /** Added for testing purposes */
+ String getKeyStorePath()
+ {
+ return _keyStorePath;
+ }
+
+ /** Added for testing purposes */
+ int getSessionTimeout()
+ {
+ return _sessionTimeout;
+ }
}
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementFactory.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementFactory.java
new file mode 100644
index 0000000000..452d52d598
--- /dev/null
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementFactory.java
@@ -0,0 +1,54 @@
+/*
+ * 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.qpid.server.management.plugin;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.log4j.Logger;
+import org.apache.qpid.server.configuration.ServerConfiguration;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.plugin.ManagementFactory;
+
+public class HttpManagementFactory implements ManagementFactory
+{
+ private static final Logger LOGGER = Logger.getLogger(HttpManagementFactory.class);
+
+ @Override
+ public HttpManagement createInstance(ServerConfiguration configuration, Broker broker)
+ {
+
+ if (!configuration.getHTTPManagementEnabled() && !configuration.getHTTPSManagementEnabled())
+ {
+ LOGGER.info("HttpManagement is disabled");
+ return null;
+ }
+
+ try
+ {
+ return new HttpManagement(
+ broker,
+ configuration.getManagementKeyStorePath(),
+ configuration.getManagementKeyStorePassword(),
+ configuration.getHTTPManagementSessionTimeout());
+ }
+ catch (ConfigurationException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/ManagementActivator.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/ManagementActivator.java
deleted file mode 100644
index 09b7e08bfb..0000000000
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/ManagementActivator.java
+++ /dev/null
@@ -1,73 +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.qpid.server.management.plugin;
-
-import org.apache.log4j.Logger;
-import org.apache.qpid.server.configuration.plugins.ConfigurationPluginFactory;
-import org.apache.qpid.server.registry.ApplicationRegistry;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class ManagementActivator implements BundleActivator
-{
- private static final Logger _logger = Logger.getLogger(ManagementActivator.class);
-
-
- private BundleContext _ctx;
- private String _bundleName;
- private Management _managementService;
-
-
- public void start(final BundleContext ctx) throws Exception
- {
- _ctx = ctx;
- if (!ApplicationRegistry.getInstance().getConfiguration().getHTTPManagementEnabled()
- && !ApplicationRegistry.getInstance().getConfiguration().getHTTPSManagementEnabled())
- {
- _logger.info("Management plugin is disabled!");
- ctx.getBundle().uninstall();
- return;
- }
- _managementService = new Management();
- _managementService.start();
- _bundleName = ctx.getBundle().getSymbolicName();
-
- // register the service
- _logger.info("Registering management plugin: " + _bundleName);
- _ctx.registerService(Management.class.getName(), _managementService, null);
- _ctx.registerService(ConfigurationPluginFactory.class.getName(), ManagementConfiguration.FACTORY, null);
- }
-
- public void stop(final BundleContext bundleContext) throws Exception
- {
- if (_managementService != null)
- {
- _logger.info("Stopping management plugin: " + _bundleName);
-
- _managementService.stop();
-
- // null object references
- _managementService = null;
- }
- _ctx = null;
- }
-
-}
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/ManagementConfiguration.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/ManagementConfiguration.java
deleted file mode 100644
index 3866da8f89..0000000000
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/ManagementConfiguration.java
+++ /dev/null
@@ -1,77 +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.qpid.server.management.plugin;
-
-import org.apache.commons.configuration.CompositeConfiguration;
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.XMLConfiguration;
-
-import org.apache.qpid.server.configuration.plugins.ConfigurationPlugin;
-import org.apache.qpid.server.configuration.plugins.ConfigurationPluginFactory;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class ManagementConfiguration extends ConfigurationPlugin
-{
- CompositeConfiguration _finalConfig;
-
- public static final ConfigurationPluginFactory FACTORY = new ConfigurationPluginFactory()
- {
- public ConfigurationPlugin newInstance(String path, Configuration config) throws ConfigurationException
- {
- ConfigurationPlugin instance = new ManagementConfiguration();
- instance.setConfiguration(path, config);
- return instance;
- }
-
- public List<String> getParentPaths()
- {
- return Arrays.asList("management");
- }
- };
-
- public String[] getElementsProcessed()
- {
- return new String[] { "" };
- }
-
- public Configuration getConfiguration()
- {
- return _finalConfig;
- }
-
-
- @Override
- public void validateConfiguration() throws ConfigurationException
- {
- // Valid Configuration either has xml links to new files
- _finalConfig = new CompositeConfiguration(getConfig());
- List subFiles = getConfig().getList("xml[@fileName]");
- for (Object subFile : subFiles)
- {
- _finalConfig.addConfiguration(new XMLConfiguration((String) subFile));
- }
-
- }
-
-}
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LogoutServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LogoutServlet.java
index a5c858e5fe..4188e7d60d 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LogoutServlet.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LogoutServlet.java
@@ -29,13 +29,13 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
-import org.apache.qpid.server.management.plugin.Management;
+import org.apache.qpid.server.management.plugin.HttpManagement;
@SuppressWarnings("serial")
public class LogoutServlet extends HttpServlet
{
public static final String RETURN_URL_INIT_PARAM = "qpid.webui_logout_redirect";
- private String _returnUrl = Management.ENTRY_POINT_PATH;
+ private String _returnUrl = HttpManagement.ENTRY_POINT_PATH;
@Override
public void init(ServletConfig config) throws ServletException
diff --git a/qpid/java/broker-plugins/management-http/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.ManagementFactory b/qpid/java/broker-plugins/management-http/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.ManagementFactory
new file mode 100644
index 0000000000..0565b60e64
--- /dev/null
+++ b/qpid/java/broker-plugins/management-http/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.ManagementFactory
@@ -0,0 +1 @@
+org.apache.qpid.server.management.plugin.HttpManagementFactory
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementFactoryTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementFactoryTest.java
new file mode 100644
index 0000000000..fedd9b88d8
--- /dev/null
+++ b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementFactoryTest.java
@@ -0,0 +1,83 @@
+/*
+ * 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.qpid.server.management.plugin;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.apache.qpid.server.configuration.ServerConfiguration;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.test.utils.QpidTestCase;
+
+public class HttpManagementFactoryTest extends QpidTestCase
+{
+ private static final String KEY_STORE_PASSWORD = "keyStorePassword";
+ private static final String KEY_STORE_PATH = "keyStorePath";
+ private static final int SESSION_TIMEOUT = 3600;
+
+ private HttpManagementFactory _managementFactory = new HttpManagementFactory();
+ private ServerConfiguration _configuration = mock(ServerConfiguration.class);
+ private Broker _broker = mock(Broker.class);
+
+ public void testNoHttpManagementConfigured() throws Exception
+ {
+ ManagementPlugin management = _managementFactory.createInstance(_configuration, _broker);
+ assertNull(management);
+ }
+
+ public void testHttpTransportConfigured() throws Exception
+ {
+ when(_configuration.getHTTPManagementEnabled()).thenReturn(true);
+ when(_configuration.getHTTPSManagementEnabled()).thenReturn(false);
+
+ when(_configuration.getManagementKeyStorePassword()).thenReturn(null);
+ when(_configuration.getManagementKeyStorePath()).thenReturn(null);
+
+ when(_configuration.getHTTPManagementSessionTimeout()).thenReturn(SESSION_TIMEOUT);
+
+ HttpManagement management = _managementFactory.createInstance(_configuration, _broker);
+
+ assertNotNull(management);
+ assertEquals(_broker, management.getBroker());
+ assertNull(management.getKeyStorePassword());
+ assertNull(management.getKeyStorePath());
+ assertEquals(SESSION_TIMEOUT, management.getSessionTimeout());
+
+ }
+
+ public void testHttpsTransportConfigured() throws Exception
+ {
+ when(_configuration.getHTTPManagementEnabled()).thenReturn(false);
+ when(_configuration.getHTTPSManagementEnabled()).thenReturn(true);
+
+ when(_configuration.getManagementKeyStorePassword()).thenReturn(KEY_STORE_PASSWORD);
+ when(_configuration.getManagementKeyStorePath()).thenReturn(KEY_STORE_PATH);
+
+ when(_configuration.getHTTPManagementSessionTimeout()).thenReturn(SESSION_TIMEOUT);
+
+ HttpManagement management = _managementFactory.createInstance(_configuration, _broker);
+
+ assertNotNull(management);
+ assertEquals(_broker, management.getBroker());
+ assertEquals(KEY_STORE_PASSWORD, management.getKeyStorePassword());
+ assertEquals(KEY_STORE_PATH, management.getKeyStorePath());
+ assertEquals(SESSION_TIMEOUT, management.getSessionTimeout());
+ }
+
+}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/Asserts.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/Asserts.java
deleted file mode 100644
index d5df067178..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/Asserts.java
+++ /dev/null
@@ -1,249 +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.qpid.server.management.plugin.servlet.rest;
-
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertNotNull;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Map;
-
-import javax.jms.JMSException;
-
-import org.apache.qpid.client.AMQConnection;
-import org.apache.qpid.server.model.Binding;
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.model.Connection;
-import org.apache.qpid.server.model.Exchange;
-import org.apache.qpid.server.model.LifetimePolicy;
-import org.apache.qpid.server.model.Port;
-import org.apache.qpid.server.model.Queue;
-import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.VirtualHost;
-
-public class Asserts
-{
- public static final String STATISTICS_ATTRIBUTE = "statistics";
-
- public static void assertVirtualHost(String virtualHostName, Map<String, Object> virtualHost)
- {
- assertNotNull("Virtualhost " + virtualHostName + " data are not found", virtualHost);
- assertAttributesPresent(virtualHost, VirtualHost.AVAILABLE_ATTRIBUTES, VirtualHost.TIME_TO_LIVE,
- VirtualHost.CREATED, VirtualHost.UPDATED, VirtualHost.SUPPORTED_QUEUE_TYPES, VirtualHost.STORE_CONFIGURATION);
-
- assertEquals("Unexpected value of attribute " + VirtualHost.NAME, virtualHostName, virtualHost.get(VirtualHost.NAME));
- assertNotNull("Unexpected value of attribute " + VirtualHost.ID, virtualHost.get(VirtualHost.ID));
- assertEquals("Unexpected value of attribute " + VirtualHost.STATE, State.ACTIVE.name(),
- virtualHost.get(VirtualHost.STATE));
- assertEquals("Unexpected value of attribute " + VirtualHost.DURABLE, Boolean.TRUE,
- virtualHost.get(VirtualHost.DURABLE));
- assertEquals("Unexpected value of attribute " + VirtualHost.LIFETIME_POLICY, LifetimePolicy.PERMANENT.name(),
- virtualHost.get(VirtualHost.LIFETIME_POLICY));
- assertEquals("Unexpected value of attribute " + VirtualHost.DEAD_LETTER_QUEUE_ENABLED, Boolean.FALSE,
- virtualHost.get(VirtualHost.DEAD_LETTER_QUEUE_ENABLED));
-
- @SuppressWarnings("unchecked")
- Collection<String> exchangeTypes = (Collection<String>) virtualHost.get(VirtualHost.SUPPORTED_EXCHANGE_TYPES);
- assertEquals("Unexpected value of attribute " + VirtualHost.SUPPORTED_EXCHANGE_TYPES,
- new HashSet<String>(Arrays.asList("headers", "topic", "direct", "fanout")),
- new HashSet<String>(exchangeTypes));
-
- @SuppressWarnings("unchecked")
- Map<String, Object> statistics = (Map<String, Object>) virtualHost.get(STATISTICS_ATTRIBUTE);
- Asserts.assertAttributesPresent(statistics, VirtualHost.AVAILABLE_STATISTICS, VirtualHost.BYTES_RETAINED,
- VirtualHost.LOCAL_TRANSACTION_BEGINS, VirtualHost.LOCAL_TRANSACTION_ROLLBACKS,
- VirtualHost.MESSAGES_RETAINED, VirtualHost.STATE_CHANGED, VirtualHost.XA_TRANSACTION_BRANCH_ENDS,
- VirtualHost.XA_TRANSACTION_BRANCH_STARTS, VirtualHost.XA_TRANSACTION_BRANCH_SUSPENDS);
-
- }
-
- public static void assertQueue(String queueName, String queueType, Map<String, Object> queueData)
- {
- assertQueue(queueName, queueType, queueData, null);
- }
-
- public static void assertQueue(String queueName, String queueType, Map<String, Object> queueData, Map<String, Object> expectedAttributes)
- {
- assertNotNull("Queue " + queueName + " is not found!", queueData);
- Asserts.assertAttributesPresent(queueData, Queue.AVAILABLE_ATTRIBUTES, Queue.CREATED, Queue.UPDATED,
- Queue.DESCRIPTION, Queue.TIME_TO_LIVE, Queue.ALTERNATE_EXCHANGE, Queue.OWNER, Queue.NO_LOCAL, Queue.LVQ_KEY,
- Queue.SORT_KEY, Queue.MESSAGE_GROUP_KEY, Queue.MESSAGE_GROUP_DEFAULT_GROUP,
- Queue.MESSAGE_GROUP_SHARED_GROUPS, Queue.PRIORITIES);
-
- assertEquals("Unexpected value of queue attribute " + Queue.NAME, queueName, queueData.get(Queue.NAME));
- assertNotNull("Unexpected value of queue attribute " + Queue.ID, queueData.get(Queue.ID));
- assertEquals("Unexpected value of queue attribute " + Queue.STATE, State.ACTIVE.name(), queueData.get(Queue.STATE));
- assertEquals("Unexpected value of queue attribute " + Queue.LIFETIME_POLICY, LifetimePolicy.PERMANENT.name(),
- queueData.get(Queue.LIFETIME_POLICY));
- assertEquals("Unexpected value of queue attribute " + Queue.TYPE, queueType, queueData.get(Queue.TYPE));
- if (expectedAttributes == null)
- {
- assertEquals("Unexpected value of queue attribute " + Queue.EXCLUSIVE, Boolean.FALSE, queueData.get(Queue.EXCLUSIVE));
- assertEquals("Unexpected value of queue attribute " + Queue.MAXIMUM_DELIVERY_ATTEMPTS, 0,
- queueData.get(Queue.MAXIMUM_DELIVERY_ATTEMPTS));
- assertEquals("Unexpected value of queue attribute " + Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, 0,
- queueData.get(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES));
- assertEquals("Unexpected value of queue attribute " + Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, 0,
- queueData.get(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES));
- assertEquals("Unexpected value of queue attribute " + Queue.QUEUE_FLOW_STOPPED, Boolean.FALSE,
- queueData.get(Queue.QUEUE_FLOW_STOPPED));
- }
- else
- {
- for (Map.Entry<String, Object> attribute : expectedAttributes.entrySet())
- {
- assertEquals("Unexpected value of " + queueName + " queue attribute " + attribute.getKey(),
- attribute.getValue(), queueData.get(attribute.getKey()));
- }
- }
-
- assertNotNull("Unexpected value of queue attribute statistics", queueData.get(Asserts.STATISTICS_ATTRIBUTE));
- @SuppressWarnings("unchecked")
- Map<String, Object> statistics = (Map<String, Object>) queueData.get(Asserts.STATISTICS_ATTRIBUTE);
- Asserts.assertAttributesPresent(statistics, Queue.AVAILABLE_STATISTICS, Queue.DISCARDS_TTL_BYTES,
- Queue.DISCARDS_TTL_MESSAGES, Queue.STATE_CHANGED);
- }
-
- public static void assertAttributesPresent(Map<String, Object> data, String[] attributes)
- {
- for (String name : attributes)
- {
- assertNotNull("Attribute " + name + " is not present", data.get(name));
- }
- }
-
- public static void assertAttributesPresent(Map<String, Object> data, Collection<String> attributes,
- String... unsupportedAttributes)
- {
- for (String name : attributes)
- {
- boolean unsupported = false;
- for (String unsupportedAttribute : unsupportedAttributes)
- {
- if (unsupportedAttribute.equals(name))
- {
- unsupported = true;
- break;
- }
- }
- if (unsupported)
- {
- continue;
- }
- assertNotNull("Attribute " + name + " is not present", data.get(name));
- }
- }
-
- public static void assertConnection(Map<String, Object> connectionData, AMQConnection connection) throws JMSException
- {
- assertNotNull("Unexpected connection data", connectionData);
- assertAttributesPresent(connectionData, Connection.AVAILABLE_ATTRIBUTES, Connection.STATE, Connection.DURABLE,
- Connection.LIFETIME_POLICY, Connection.TIME_TO_LIVE, Connection.CREATED, Connection.UPDATED,
- Connection.INCOMING, Connection.REMOTE_PROCESS_NAME, Connection.REMOTE_PROCESS_PID,
- Connection.LOCAL_ADDRESS, Connection.PROPERTIES);
-
- assertEquals("Unexpected value of connection attribute " + Connection.SESSION_COUNT_LIMIT,
- (int) connection.getMaximumChannelCount(), connectionData.get(Connection.SESSION_COUNT_LIMIT));
- assertEquals("Unexpected value of connection attribute " + Connection.CLIENT_ID, "clientid",
- connectionData.get(Connection.CLIENT_ID));
- assertEquals("Unexpected value of connection attribute " + Connection.PRINCIPAL, "guest",
- connectionData.get(Connection.PRINCIPAL));
-
- @SuppressWarnings("unchecked")
- Map<String, Object> statistics = (Map<String, Object>) connectionData.get(STATISTICS_ATTRIBUTE);
- assertAttributesPresent(statistics, Connection.AVAILABLE_STATISTICS, Connection.LOCAL_TRANSACTION_BEGINS,
- Connection.LOCAL_TRANSACTION_ROLLBACKS, Connection.STATE_CHANGED, Connection.XA_TRANSACTION_BRANCH_ENDS,
- Connection.XA_TRANSACTION_BRANCH_STARTS, Connection.XA_TRANSACTION_BRANCH_SUSPENDS);
- assertEquals("Unexpected value of connection statistics attribute " + Connection.SESSION_COUNT, 1,
- statistics.get(Connection.SESSION_COUNT));
- }
-
- public static void assertPortAttributes(Map<String, Object> port)
- {
- assertAttributesPresent(port, Port.AVAILABLE_ATTRIBUTES, Port.CREATED, Port.UPDATED);
-
- assertNotNull("Unexpected value of attribute " + Port.ID, port.get(Port.ID));
- assertEquals("Unexpected value of attribute " + Port.DURABLE, Boolean.FALSE, port.get(Port.DURABLE));
- assertEquals("Unexpected value of attribute " + Port.LIFETIME_POLICY, LifetimePolicy.PERMANENT.name(),
- port.get(Broker.LIFETIME_POLICY));
- assertEquals("Unexpected value of attribute " + Port.STATE, State.ACTIVE.name(), port.get(Port.STATE));
- assertEquals("Unexpected value of attribute " + Port.TIME_TO_LIVE, 0, port.get(Port.TIME_TO_LIVE));
- assertNotNull("Unexpected value of attribute " + Port.BINDING_ADDRESS, port.get(Port.BINDING_ADDRESS));
- assertNotNull("Unexpected value of attribute " + Port.PROTOCOLS, port.get(Port.PROTOCOLS));
- assertNotNull("Unexpected value of attribute " + Port.NAME, port.get(Port.NAME));
-
- @SuppressWarnings("unchecked")
- Collection<String> transports = (Collection<String>) port.get(Port.TRANSPORTS);
- assertEquals("Unexpected value of attribute " + Port.TRANSPORTS, new HashSet<String>(Arrays.asList("TCP")),
- new HashSet<String>(transports));
- }
-
- public static void assertDurableExchange(String exchangeName, String type, Map<String, Object> exchangeData)
- {
- assertExchange(exchangeName, type, exchangeData);
-
- assertEquals("Unexpected value of exchange attribute " + Exchange.DURABLE, Boolean.TRUE,
- exchangeData.get(Exchange.DURABLE));
- }
-
- public static void assertExchange(String exchangeName, String type, Map<String, Object> exchangeData)
- {
- assertNotNull("Exchange " + exchangeName + " is not found!", exchangeData);
- assertAttributesPresent(exchangeData, Exchange.AVAILABLE_ATTRIBUTES, Exchange.CREATED, Exchange.UPDATED,
- Exchange.ALTERNATE_EXCHANGE, Exchange.TIME_TO_LIVE);
-
- assertEquals("Unexpected value of exchange attribute " + Exchange.NAME, exchangeName,
- exchangeData.get(Exchange.NAME));
- assertNotNull("Unexpected value of exchange attribute " + Exchange.ID, exchangeData.get(VirtualHost.ID));
- assertEquals("Unexpected value of exchange attribute " + Exchange.STATE, State.ACTIVE.name(),
- exchangeData.get(Exchange.STATE));
-
- assertEquals("Unexpected value of exchange attribute " + Exchange.LIFETIME_POLICY, LifetimePolicy.PERMANENT.name(),
- exchangeData.get(Exchange.LIFETIME_POLICY));
- assertEquals("Unexpected value of exchange attribute " + Exchange.TYPE, type, exchangeData.get(Exchange.TYPE));
- assertNotNull("Unexpected value of exchange attribute statistics", exchangeData.get(STATISTICS_ATTRIBUTE));
-
- @SuppressWarnings("unchecked")
- Map<String, Object> statistics = (Map<String, Object>) exchangeData.get(STATISTICS_ATTRIBUTE);
- assertAttributesPresent(statistics, Exchange.AVAILABLE_STATISTICS, Exchange.STATE_CHANGED, Exchange.PRODUCER_COUNT);
- }
-
- public static void assertBinding(String bindingName, String queueName, String exchange, Map<String, Object> binding)
- {
- assertNotNull("Binding map should not be null", binding);
- assertAttributesPresent(binding, Binding.AVAILABLE_ATTRIBUTES, Binding.STATE, Binding.TIME_TO_LIVE,
- Binding.CREATED, Binding.UPDATED);
-
- assertEquals("Unexpected binding attribute " + Binding.NAME, bindingName, binding.get(Binding.NAME));
- assertEquals("Unexpected binding attribute " + Binding.QUEUE, queueName, binding.get(Binding.QUEUE));
- assertEquals("Unexpected binding attribute " + Binding.EXCHANGE, exchange, binding.get(Binding.EXCHANGE));
- assertEquals("Unexpected binding attribute " + Binding.LIFETIME_POLICY, LifetimePolicy.PERMANENT.name(),
- binding.get(Binding.LIFETIME_POLICY));
- }
-
- public static void assertBinding(String queueName, String exchange, Map<String, Object> binding)
- {
- assertBinding(queueName, queueName, exchange, binding);
- }
-
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/AuthenticationProviderRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/AuthenticationProviderRestTest.java
deleted file mode 100644
index 86533b76b4..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/AuthenticationProviderRestTest.java
+++ /dev/null
@@ -1,73 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.qpid.server.model.AuthenticationProvider;
-import org.apache.qpid.server.model.LifetimePolicy;
-import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.User;
-
-public class AuthenticationProviderRestTest extends QpidRestTestCase
-{
-
- public void testGet() throws Exception
- {
- List<Map<String, Object>> providerDetails = getRestTestHelper().getJsonAsList("/rest/authenticationprovider");
- assertNotNull("Providers details cannot be null", providerDetails);
- assertEquals("Unexpected number of providers", 1, providerDetails.size());
- for (Map<String, Object> provider : providerDetails)
- {
- assertProvider("PrincipalDatabaseAuthenticationManager", provider);
- Map<String, Object> data = getRestTestHelper().getJsonAsSingletonList("/rest/authenticationprovider/"
- + provider.get(AuthenticationProvider.NAME));
- assertNotNull("Cannot load data for " + provider.get(AuthenticationProvider.NAME), data);
- assertProvider("PrincipalDatabaseAuthenticationManager", data);
- }
- }
-
- private void assertProvider(String type, Map<String, Object> provider)
- {
- Asserts.assertAttributesPresent(provider, AuthenticationProvider.AVAILABLE_ATTRIBUTES,
- AuthenticationProvider.CREATED, AuthenticationProvider.UPDATED, AuthenticationProvider.DESCRIPTION,
- AuthenticationProvider.TIME_TO_LIVE);
- assertEquals("Unexpected value of provider attribute " + AuthenticationProvider.STATE, State.ACTIVE.name(),
- provider.get(AuthenticationProvider.STATE));
- assertEquals("Unexpected value of provider attribute " + AuthenticationProvider.LIFETIME_POLICY,
- LifetimePolicy.PERMANENT.name(), provider.get(AuthenticationProvider.LIFETIME_POLICY));
- assertEquals("Unexpected value of provider attribute " + AuthenticationProvider.DURABLE, Boolean.TRUE,
- provider.get(AuthenticationProvider.DURABLE));
- assertEquals("Unexpected value of provider attribute " + AuthenticationProvider.TYPE, type,
- provider.get(AuthenticationProvider.TYPE));
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> users = (List<Map<String, Object>>) provider.get("users");
- assertNotNull("Users are not found", users);
- assertTrue("Unexpected number of users", users.size() > 1);
- for (Map<String, Object> user : users)
- {
- assertNotNull("Attribute " + User.ID, user.get(User.ID));
- assertNotNull("Attribute " + User.NAME, user.get(User.NAME));
- }
- }
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BasicAuthRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BasicAuthRestTest.java
deleted file mode 100644
index f372fd4f3a..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BasicAuthRestTest.java
+++ /dev/null
@@ -1,115 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.io.IOException;
-import java.net.HttpURLConnection;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.configuration.ConfigurationException;
-
-public class BasicAuthRestTest extends QpidRestTestCase
-{
- private static final String TRUSTSTORE = "test-profiles/test_resources/ssl/java_client_truststore.jks";
- private static final String TRUSTSTORE_PASSWORD = "password";
- private static final String USERNAME = "admin";
-
- @Override
- public void setUp() throws Exception
- {
- setSystemProperty("javax.net.debug", "ssl");
-
- //don't call super method, we will configure the broker in the test before doing so
- }
-
- @Override
- protected void customizeConfiguration() throws ConfigurationException, IOException
- {
- //do nothing, we will configure this locally
- }
-
- private void configure(boolean useSsl) throws ConfigurationException, IOException
- {
- getRestTestHelper().setUseSsl(useSsl);
- setConfigurationProperty("management.http.enabled", String.valueOf(!useSsl));
- setConfigurationProperty("management.http.port", Integer.toString(getRestTestHelper().getHttpPort()));
- setConfigurationProperty("management.https.enabled", String.valueOf(useSsl));
- setConfigurationProperty("management.https.port", Integer.toString(getRestTestHelper().getHttpPort()));
- setConfigurationProperty("management.enabled", "false"); //JMX
- }
-
- private void verifyGetBrokerAttempt(int responseCode) throws IOException
- {
- HttpURLConnection conn = getRestTestHelper().openManagementConnection("/rest/broker", "GET");
- assertEquals(responseCode, conn.getResponseCode());
- }
-
- public void testDefaultEnabledWithHttps() throws Exception
- {
- configure(true);
- super.setUp();
- setSystemProperty("javax.net.ssl.trustStore", TRUSTSTORE);
- setSystemProperty("javax.net.ssl.trustStorePassword", TRUSTSTORE_PASSWORD);
-
- // Try the attempt with authentication, it should succeed because
- // BASIC auth is enabled by default on secure connections.
- getRestTestHelper().setUsernameAndPassword(USERNAME, USERNAME);
- verifyGetBrokerAttempt(HttpServletResponse.SC_OK);
- }
-
- public void testDefaultDisabledWithHttp() throws Exception
- {
- configure(false);
- super.setUp();
-
- // Try the attempt with authentication, it should fail because
- // BASIC auth is disabled by default on non-secure connections.
- getRestTestHelper().setUsernameAndPassword(USERNAME, USERNAME);
- verifyGetBrokerAttempt(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- }
-
- public void testEnablingForHttp() throws Exception
- {
- configure(false);
- setConfigurationProperty("management.http.basic-auth", "true");
- super.setUp();
-
- // Try the attempt with authentication, it should succeed because
- // BASIC auth is now enabled on non-secure connections.
- getRestTestHelper().setUsernameAndPassword(USERNAME, USERNAME);
- verifyGetBrokerAttempt(HttpServletResponse.SC_OK);
- }
-
- public void testDisablingForHttps() throws Exception
- {
- configure(true);
- setConfigurationProperty("management.https.basic-auth", "false");
- super.setUp();
- setSystemProperty("javax.net.ssl.trustStore", TRUSTSTORE);
- setSystemProperty("javax.net.ssl.trustStorePassword", TRUSTSTORE_PASSWORD);
-
- // Try the attempt with authentication, it should fail because
- // BASIC auth is now disabled on secure connections.
- getRestTestHelper().setUsernameAndPassword(USERNAME, USERNAME);
- verifyGetBrokerAttempt(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- }
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingRestTest.java
deleted file mode 100644
index 207c62ae72..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingRestTest.java
+++ /dev/null
@@ -1,129 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.net.HttpURLConnection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.qpid.server.model.Binding;
-
-public class BindingRestTest extends QpidRestTestCase
-{
-
- public void testGetAllBindings() throws Exception
- {
- List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding");
- assertNotNull("Bindings cannot be null", bindings);
- assertTrue("Unexpected number of bindings", bindings.size() >= EXPECTED_VIRTUALHOSTS.length * EXPECTED_QUEUES.length);
- for (Map<String, Object> binding : bindings)
- {
- Asserts.assertBinding((String) binding.get(Binding.NAME), (String) binding.get(Binding.EXCHANGE), binding);
- }
- }
-
- public void testGetVirtualHostBindings() throws Exception
- {
- List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test");
- assertNotNull("Bindings cannot be null", bindings);
- assertEquals("Unexpected number of bindings", EXPECTED_QUEUES.length * 2, bindings.size());
- for (String queueName : EXPECTED_QUEUES)
- {
- Map<String, Object> searchAttributes = new HashMap<String, Object>();
- searchAttributes.put(Binding.NAME, queueName);
- searchAttributes.put(Binding.EXCHANGE, "amq.direct");
-
- Map<String, Object> binding = getRestTestHelper().find(searchAttributes, bindings);
- Asserts.assertBinding(queueName, "amq.direct", binding);
-
- searchAttributes.put(Binding.EXCHANGE, "<<default>>");
-
- binding = getRestTestHelper().find(searchAttributes, bindings);
- Asserts.assertBinding(queueName, "<<default>>", binding);
- }
- }
-
- public void testGetVirtualHostExchangeBindings() throws Exception
- {
- List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/amq.direct");
- assertNotNull("Bindings cannot be null", bindings);
- assertEquals("Unexpected number of bindings", EXPECTED_QUEUES.length, bindings.size());
- for (String queueName : EXPECTED_QUEUES)
- {
- Map<String, Object> binding = getRestTestHelper().find(Binding.NAME, queueName, bindings);
- Asserts.assertBinding(queueName, "amq.direct", binding);
- }
- }
-
- public void testGetVirtualHostExchangeQueueBindings() throws Exception
- {
- List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/amq.direct/queue");
- assertNotNull("Bindings cannot be null", bindings);
- assertEquals("Unexpected number of bindings", 1, bindings.size());
- Asserts.assertBinding("queue", "amq.direct", bindings.get(0));
- }
-
-
- public void testDeleteBinding() throws Exception
- {
- List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/amq.direct/queue/queue");
- assertEquals("Unexpected number of bindings", 1, bindings.size());
- Asserts.assertBinding("queue", "amq.direct", bindings.get(0));
-
- HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/binding/test/amq.direct/queue/queue", "DELETE");
- connection.connect();
- assertEquals("Unexpected response code", 200, connection.getResponseCode());
-
- bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/amq.direct/queue/queue");
- assertEquals("Binding should be deleted", 0, bindings.size());
- }
-
- public void testDeleteBindingById() throws Exception
- {
- Map<String, Object> binding = getRestTestHelper().getJsonAsSingletonList("/rest/binding/test/amq.direct/queue");
- HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/binding/test/amq.direct?id=" + binding.get(Binding.ID), "DELETE");
- connection.connect();
- assertEquals("Unexpected response code", 200, connection.getResponseCode());
- List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/amq.direct/queue");
- assertEquals("Binding should be deleted", 0, bindings.size());
- }
-
- public void testCreateBinding() throws Exception
- {
- String bindingName = getTestName();
- Map<String, Object> bindingData = new HashMap<String, Object>();
- bindingData.put(Binding.NAME, bindingName);
- bindingData.put(Binding.QUEUE, "queue");
- bindingData.put(Binding.EXCHANGE, "amq.direct");
-
- HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/binding/test/amq.direct/queue/" + bindingName, "PUT");
- connection.connect();
- getRestTestHelper().writeJsonRequest(connection, bindingData);
- int responseCode = connection.getResponseCode();
- connection.disconnect();
- assertEquals("Unexpected response code", 201, responseCode);
- Map<String, Object> binding = getRestTestHelper().getJsonAsSingletonList("/rest/binding/test/amq.direct/queue/" + bindingName);
-
- Asserts.assertBinding(bindingName, "queue", "amq.direct", binding);
- }
-
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BrokerRestHttpsTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BrokerRestHttpsTest.java
deleted file mode 100644
index 08b5863004..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BrokerRestHttpsTest.java
+++ /dev/null
@@ -1,60 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.qpid.server.model.Broker;
-
-public class BrokerRestHttpsTest extends QpidRestTestCase
-{
- private static final String TRUSTSTORE = "test-profiles/test_resources/ssl/java_client_truststore.jks";
- private static final String TRUSTSTORE_PASSWORD = "password";
-
- @Override
- public void setUp() throws Exception
- {
- setSystemProperty("javax.net.debug", "ssl");
- super.setUp();
- setSystemProperty("javax.net.ssl.trustStore", TRUSTSTORE);
- setSystemProperty("javax.net.ssl.trustStorePassword", TRUSTSTORE_PASSWORD);
- }
-
- @Override
- protected void customizeConfiguration() throws ConfigurationException, IOException
- {
- getRestTestHelper().setUseSsl(true);
- setConfigurationProperty("management.enabled", "true");
- setConfigurationProperty("management.http.enabled", "false");
- setConfigurationProperty("management.https.enabled", "true");
- setConfigurationProperty("management.https.port", Integer.toString(getRestTestHelper().getHttpPort()));
- }
-
- public void testGetWithHttps() throws Exception
- {
- Map<String, Object> brokerDetails = getRestTestHelper().getJsonAsSingletonList("/rest/broker");
-
- Asserts.assertAttributesPresent(brokerDetails, Broker.AVAILABLE_ATTRIBUTES, Broker.BYTES_RETAINED,
- Broker.PROCESS_PID, Broker.SUPPORTED_STORE_TYPES, Broker.CREATED, Broker.TIME_TO_LIVE, Broker.UPDATED);
- }
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BrokerRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BrokerRestTest.java
deleted file mode 100644
index 4cabe7ef2c..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BrokerRestTest.java
+++ /dev/null
@@ -1,118 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.qpid.common.QpidProperties;
-import org.apache.qpid.server.model.Broker;
-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;
-
-public class BrokerRestTest extends QpidRestTestCase
-{
-
- private static final String BROKER_AUTHENTICATIONPROVIDERS_ATTRIBUTE = "authenticationproviders";
- private static final String BROKER_PORTS_ATTRIBUTE = "ports";
- private static final String BROKER_VIRTUALHOSTS_ATTRIBUTE = "virtualhosts";
- private static final String BROKER_STATISTICS_ATTRIBUTE = "statistics";
-
- public void testGet() throws Exception
- {
- Map<String, Object> brokerDetails = getRestTestHelper().getJsonAsSingletonList("/rest/broker");
-
- assertBrokerAttributes(brokerDetails);
-
- @SuppressWarnings("unchecked")
- Map<String, Object> statistics = (Map<String, Object>) brokerDetails.get(BROKER_STATISTICS_ATTRIBUTE);
- Asserts.assertAttributesPresent(statistics, new String[]{ "bytesIn", "messagesOut", "bytesOut", "messagesIn" });
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> virtualhosts = (List<Map<String, Object>>) brokerDetails.get(BROKER_VIRTUALHOSTS_ATTRIBUTE);
- assertEquals("Unexpected number of virtual hosts", 3, virtualhosts.size());
-
- Asserts.assertVirtualHost(TEST3_VIRTUALHOST, getRestTestHelper().find(VirtualHost.NAME, TEST3_VIRTUALHOST, virtualhosts));
- Asserts.assertVirtualHost(TEST2_VIRTUALHOST, getRestTestHelper().find(VirtualHost.NAME, TEST2_VIRTUALHOST, virtualhosts));
- Asserts.assertVirtualHost(TEST1_VIRTUALHOST, getRestTestHelper().find(VirtualHost.NAME, TEST1_VIRTUALHOST, virtualhosts));
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> ports = (List<Map<String, Object>>) brokerDetails.get(BROKER_PORTS_ATTRIBUTE);
- assertEquals("Unexpected number of ports", 2, ports.size());
-
- for (Map<String, Object> port : ports)
- {
- Asserts.assertPortAttributes(port);
- }
-
- String bindingAddress = (String)ports.get(0).get(Port.BINDING_ADDRESS);
-
- Map<String, Object> amqpPort = getRestTestHelper().find(Port.NAME, bindingAddress + ":" + getPort(), ports);
- Map<String, Object> httpPort = getRestTestHelper().find(Port.NAME, bindingAddress + ":" + getRestTestHelper().getHttpPort(), ports);
-
- assertNotNull("Cannot find AMQP port", amqpPort);
- assertNotNull("Cannot find HTTP port", httpPort);
-
- @SuppressWarnings("unchecked")
- Collection<String> port1Protocols = (Collection<String>) amqpPort.get(Port.PROTOCOLS);
- assertFalse("AMQP protocol list cannot contain HTTP", port1Protocols.contains("HTTP"));
-
- @SuppressWarnings("unchecked")
- Collection<String> port2Protocols = (Collection<String>) httpPort.get(Port.PROTOCOLS);
- assertEquals("Unexpected value of attribute " + Port.PROTOCOLS, new HashSet<String>(Arrays.asList("HTTP")),
- new HashSet<String>(port2Protocols));
- }
-
- protected void assertBrokerAttributes(Map<String, Object> brokerDetails)
- {
- Asserts.assertAttributesPresent(brokerDetails, Broker.AVAILABLE_ATTRIBUTES,
- Broker.BYTES_RETAINED, Broker.PROCESS_PID, Broker.SUPPORTED_STORE_TYPES,
- Broker.CREATED, Broker.TIME_TO_LIVE, Broker.UPDATED);
-
- assertEquals("Unexpected value of attribute " + Broker.BUILD_VERSION, QpidProperties.getBuildVersion(),
- brokerDetails.get(Broker.BUILD_VERSION));
- assertEquals("Unexpected value of attribute " + Broker.OPERATING_SYSTEM, System.getProperty("os.name") + " "
- + System.getProperty("os.version") + " " + System.getProperty("os.arch"),
- brokerDetails.get(Broker.OPERATING_SYSTEM));
- assertEquals(
- "Unexpected value of attribute " + Broker.PLATFORM,
- System.getProperty("java.vendor") + " "
- + System.getProperty("java.runtime.version", System.getProperty("java.version")),
- brokerDetails.get(Broker.PLATFORM));
- assertEquals("Unexpected value of attribute " + Broker.DURABLE, Boolean.TRUE, brokerDetails.get(Broker.DURABLE));
- assertEquals("Unexpected value of attribute " + Broker.LIFETIME_POLICY, LifetimePolicy.PERMANENT.name(),
- brokerDetails.get(Broker.LIFETIME_POLICY));
- assertEquals("Unexpected value of attribute " + Broker.NAME, "Broker", brokerDetails.get(Broker.NAME));
- assertEquals("Unexpected value of attribute " + Broker.STATE, State.ACTIVE.name(), brokerDetails.get(Broker.STATE));
-
- assertNotNull("Unexpected value of attribute " + Broker.ID, brokerDetails.get(Broker.ID));
- assertNotNull("Unexpected value of attribute statistics", brokerDetails.get(BROKER_STATISTICS_ATTRIBUTE));
- assertNotNull("Unexpected value of attribute virtualhosts", brokerDetails.get(BROKER_VIRTUALHOSTS_ATTRIBUTE));
- assertNotNull("Unexpected value of attribute ports", brokerDetails.get(BROKER_PORTS_ATTRIBUTE));
- assertNotNull("Unexpected value of attribute authenticationproviders", brokerDetails.get(BROKER_AUTHENTICATIONPROVIDERS_ATTRIBUTE));
- }
-
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConnectionRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConnectionRestTest.java
deleted file mode 100644
index 500a5770fb..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConnectionRestTest.java
+++ /dev/null
@@ -1,213 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.io.IOException;
-import java.net.URLDecoder;
-import java.util.List;
-import java.util.Map;
-
-import javax.jms.Destination;
-import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-
-import org.apache.qpid.client.AMQConnection;
-import org.apache.qpid.client.AMQSession;
-import org.apache.qpid.server.model.Connection;
-import org.apache.qpid.server.model.Session;
-
-public class ConnectionRestTest extends QpidRestTestCase
-{
- /**
- * Message number to publish into queue
- */
- private static final int MESSAGE_NUMBER = 5;
- private static final int MESSAGE_SIZE = 6;
-
- private static final String SESSIONS_ATTRIBUTE = "sessions";
-
- private javax.jms.Connection _connection;
- private javax.jms.Session _session;
-
- public void setUp() throws Exception
- {
- super.setUp();
-
- _connection = getConnection();
- _session = _connection.createSession(true, javax.jms.Session.SESSION_TRANSACTED);
- String queueName = getTestQueueName();
- Destination queue = _session.createQueue(queueName);
- MessageConsumer consumer = _session.createConsumer(queue);
- MessageProducer producer = _session.createProducer(queue);
- _connection.start();
-
- // send messages
- for (int i = 0; i < MESSAGE_NUMBER; i++)
- {
- producer.send(_session.createTextMessage("Test-" + i));
- }
- _session.commit();
-
- Message m = consumer.receive(1000l);
- assertNotNull("Message was not received", m);
- _session.commit();
-
- // receive the rest of messages for rollback
- for (int i = 0; i < MESSAGE_NUMBER - 1; i++)
- {
- m = consumer.receive(1000l);
- assertNotNull("Message was not received", m);
- }
- _session.rollback();
-
- // receive them again
- for (int i = 0; i < MESSAGE_NUMBER - 1; i++)
- {
- m = consumer.receive(1000l);
- assertNotNull("Message was not received", m);
- }
- }
-
- public void testGetAllConnections() throws Exception
- {
- List<Map<String, Object>> connections = getRestTestHelper().getJsonAsList("/rest/connection");
- assertEquals("Unexpected number of connections", 1, connections.size());
- Asserts.assertConnection(connections.get(0), (AMQConnection) _connection);
- }
-
- public void testGetVirtualHostConnections() throws Exception
- {
- List<Map<String, Object>> connections = getRestTestHelper().getJsonAsList("/rest/connection/test");
- assertEquals("Unexpected number of connections", 1, connections.size());
- Asserts.assertConnection(connections.get(0), (AMQConnection) _connection);
- }
-
- public void testGetConnectionByName() throws Exception
- {
- // get connection name
- String connectionName = getConnectionName();
-
- Map<String, Object> connectionDetails = getRestTestHelper().getJsonAsSingletonList("/rest/connection/test/"
- + URLDecoder.decode(connectionName, "UTF-8"));
- assertConnection(connectionDetails);
- }
-
- public void testGetAllSessions() throws Exception
- {
- List<Map<String, Object>> sessions = getRestTestHelper().getJsonAsList("/rest/session");
- assertEquals("Unexpected number of sessions", 1, sessions.size());
- assertSession(sessions.get(0), (AMQSession<?, ?>) _session);
- }
-
- public void testGetVirtualHostSessions() throws Exception
- {
- List<Map<String, Object>> sessions = getRestTestHelper().getJsonAsList("/rest/session/test");
- assertEquals("Unexpected number of sessions", 1, sessions.size());
- assertSession(sessions.get(0), (AMQSession<?, ?>) _session);
- }
-
- public void testGetConnectionSessions() throws Exception
- {
- // get connection name
- String connectionName = getConnectionName();
-
- List<Map<String, Object>> sessions = getRestTestHelper().getJsonAsList("/rest/session/test/"
- + URLDecoder.decode(connectionName, "UTF-8"));
- assertEquals("Unexpected number of sessions", 1, sessions.size());
- assertSession(sessions.get(0), (AMQSession<?, ?>) _session);
- }
-
- public void testGetSessionByName() throws Exception
- {
- // get connection name
- String connectionName = getConnectionName();
-
- List<Map<String, Object>> sessions = getRestTestHelper().getJsonAsList("/rest/session/test/"
- + URLDecoder.decode(connectionName, "UTF-8") + "/" + ((AMQSession<?, ?>) _session).getChannelId());
- assertEquals("Unexpected number of sessions", 1, sessions.size());
- assertSession(sessions.get(0), (AMQSession<?, ?>) _session);
- }
-
- private void assertConnection(Map<String, Object> connectionDetails) throws JMSException
- {
- Asserts.assertConnection(connectionDetails, (AMQConnection) _connection);
-
- @SuppressWarnings("unchecked")
- Map<String, Object> statistics = (Map<String, Object>) connectionDetails.get(Asserts.STATISTICS_ATTRIBUTE);
- assertEquals("Unexpected value of connection statistics attribute " + Connection.BYTES_IN, MESSAGE_NUMBER
- * MESSAGE_SIZE, statistics.get(Connection.BYTES_IN));
- assertEquals("Unexpected value of connection statistics attribute " + Connection.BYTES_OUT, MESSAGE_SIZE
- + ((MESSAGE_NUMBER - 1) * MESSAGE_SIZE) * 2, statistics.get(Connection.BYTES_OUT));
- assertEquals("Unexpected value of connection statistics attribute " + Connection.MESSAGES_IN, MESSAGE_NUMBER,
- statistics.get(Connection.MESSAGES_IN));
- assertEquals("Unexpected value of connection statistics attribute " + Connection.MESSAGES_OUT,
- MESSAGE_NUMBER * 2 - 1, statistics.get(Connection.MESSAGES_OUT));
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> sessions = (List<Map<String, Object>>) connectionDetails.get(SESSIONS_ATTRIBUTE);
- assertNotNull("Sessions cannot be found", sessions);
- assertEquals("Unexpected number of sessions", 1, sessions.size());
- assertSession(sessions.get(0), (AMQSession<?, ?>) _session);
- }
-
- private void assertSession(Map<String, Object> sessionData, AMQSession<?, ?> session)
- {
- assertNotNull("Session map cannot be null", sessionData);
- Asserts.assertAttributesPresent(sessionData, Session.AVAILABLE_ATTRIBUTES, Session.STATE, Session.DURABLE,
- Session.LIFETIME_POLICY, Session.TIME_TO_LIVE, Session.CREATED, Session.UPDATED);
- assertEquals("Unexpecte value of attribute " + Session.NAME, session.getChannelId() + "",
- sessionData.get(Session.NAME));
- assertEquals("Unexpecte value of attribute " + Session.PRODUCER_FLOW_BLOCKED, Boolean.FALSE,
- sessionData.get(Session.PRODUCER_FLOW_BLOCKED));
- assertEquals("Unexpecte value of attribute " + Session.CHANNEL_ID, session.getChannelId(),
- sessionData.get(Session.CHANNEL_ID));
-
- @SuppressWarnings("unchecked")
- Map<String, Object> statistics = (Map<String, Object>) sessionData.get(Asserts.STATISTICS_ATTRIBUTE);
- Asserts.assertAttributesPresent(statistics, Session.AVAILABLE_STATISTICS, Session.BYTES_IN, Session.BYTES_OUT,
- Session.STATE_CHANGED, Session.UNACKNOWLEDGED_BYTES, Session.LOCAL_TRANSACTION_OPEN,
- Session.XA_TRANSACTION_BRANCH_ENDS, Session.XA_TRANSACTION_BRANCH_STARTS,
- Session.XA_TRANSACTION_BRANCH_SUSPENDS);
-
- assertEquals("Unexpecte value of statistic attribute " + Session.UNACKNOWLEDGED_MESSAGES, MESSAGE_NUMBER - 1,
- statistics.get(Session.UNACKNOWLEDGED_MESSAGES));
- assertEquals("Unexpecte value of statistic attribute " + Session.LOCAL_TRANSACTION_BEGINS, 4,
- statistics.get(Session.LOCAL_TRANSACTION_BEGINS));
- assertEquals("Unexpecte value of statistic attribute " + Session.LOCAL_TRANSACTION_ROLLBACKS, 1,
- statistics.get(Session.LOCAL_TRANSACTION_ROLLBACKS));
- assertEquals("Unexpecte value of statistic attribute " + Session.CONSUMER_COUNT, 1,
- statistics.get(Session.CONSUMER_COUNT));
- }
-
- private String getConnectionName() throws IOException
- {
- Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/test");
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> connections = (List<Map<String, Object>>) hostDetails
- .get(VirtualHostRestTest.VIRTUALHOST_CONNECTIONS_ATTRIBUTE);
- assertEquals("Unexpected number of connections", 1, connections.size());
- Map<String, Object> connection = connections.get(0);
- String connectionName = (String) connection.get(Connection.NAME);
- return connectionName;
- }
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeRestTest.java
deleted file mode 100644
index 317cb17b86..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeRestTest.java
+++ /dev/null
@@ -1,87 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.net.URLDecoder;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.qpid.server.model.Binding;
-import org.apache.qpid.server.model.Exchange;
-
-public class ExchangeRestTest extends QpidRestTestCase
-{
- public void testGet() throws Exception
- {
- List<Map<String, Object>> exchanges = getRestTestHelper().getJsonAsList("/rest/exchange");
- assertNotNull("Exchanges cannot be null", exchanges);
- assertTrue("Unexpected number of exchanges", exchanges.size() >= EXPECTED_VIRTUALHOSTS.length * EXPECTED_EXCHANGES.length);
- for (Map<String, Object> exchange : exchanges)
- {
- Asserts.assertExchange((String) exchange.get(Exchange.NAME), (String) exchange.get(Exchange.TYPE), exchange);
- }
- }
-
- public void testGetHostExchanges() throws Exception
- {
- List<Map<String, Object>> exchanges = getRestTestHelper().getJsonAsList("/rest/exchange/test");
- assertNotNull("Users cannot be null", exchanges);
- assertEquals("Unexpected number of exchanges", exchanges.size(), EXPECTED_EXCHANGES.length);
- for (String exchangeName : EXPECTED_EXCHANGES)
- {
- Map<String, Object> exchange = getRestTestHelper().find(Exchange.NAME, exchangeName, exchanges);
- assertExchange(exchangeName, exchange);
- }
- }
-
- public void testGetHostExchangeByName() throws Exception
- {
- for (String exchangeName : EXPECTED_EXCHANGES)
- {
- Map<String, Object> exchange = getRestTestHelper().getJsonAsSingletonList("/rest/exchange/test/"
- + URLDecoder.decode(exchangeName, "UTF-8"));
- assertExchange(exchangeName, exchange);
- }
- }
-
- private void assertExchange(String exchangeName, Map<String, Object> exchange)
- {
- assertNotNull("Exchange with name " + exchangeName + " is not found", exchange);
- String type = (String) exchange.get(Exchange.TYPE);
- Asserts.assertExchange(exchangeName, type, exchange);
- if ("direct".equals(type))
- {
- assertBindings(exchange);
- }
- }
-
- private void assertBindings(Map<String, Object> exchange)
- {
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> bindings = (List<Map<String, Object>>) exchange.get("bindings");
- for (String queueName : EXPECTED_QUEUES)
- {
- Map<String, Object> binding = getRestTestHelper().find(Binding.NAME, queueName, bindings);
- Asserts.assertBinding(queueName, (String) exchange.get(Exchange.NAME), binding);
- }
- }
-
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupProviderRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupProviderRestTest.java
deleted file mode 100644
index c2eefec395..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupProviderRestTest.java
+++ /dev/null
@@ -1,160 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.qpid.server.model.Group;
-import org.apache.qpid.server.model.GroupProvider;
-import org.apache.qpid.server.model.LifetimePolicy;
-import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.UUIDGenerator;
-
-public class GroupProviderRestTest extends QpidRestTestCase
-{
- private static final String FILE_GROUP_MANAGER = "FileGroupManager";
- private File _groupFile;
-
- @Override
- public void setUp() throws Exception
- {
- _groupFile = createTemporaryGroupFile();
-
- setConfigurationProperty("security.file-group-manager.attributes.attribute.name", "groupFile");
- setConfigurationProperty("security.file-group-manager.attributes.attribute.value", _groupFile.getAbsolutePath());
-
- super.setUp();
- }
-
- @Override
- public void tearDown() throws Exception
- {
- super.tearDown();
-
- if (_groupFile != null)
- {
- if (_groupFile.exists())
- {
- _groupFile.delete();
- }
- }
- }
-
- public void testGet() throws Exception
- {
- List<Map<String, Object>> providerDetails = getRestTestHelper().getJsonAsList("/rest/groupprovider");
- assertNotNull("Providers details cannot be null", providerDetails);
- assertEquals("Unexpected number of providers", 1, providerDetails.size());
- for (Map<String, Object> provider : providerDetails)
- {
- assertProvider(FILE_GROUP_MANAGER, provider);
- Map<String, Object> data = getRestTestHelper().getJsonAsSingletonList("/rest/groupprovider/"
- + provider.get(GroupProvider.NAME));
- assertNotNull("Cannot load data for " + provider.get(GroupProvider.NAME), data);
- assertProvider(FILE_GROUP_MANAGER, data);
- }
- }
-
- public void testCreateNewGroup() throws Exception
- {
- String groupName = "newGroup";
-
- Map<String, Object> data = getRestTestHelper().getJsonAsSingletonList("/rest/groupprovider/" + FILE_GROUP_MANAGER);
- assertNotNull("Cannot load data for provider", data);
-
- getRestTestHelper().assertNumberOfGroups(data, 1);
-
- getRestTestHelper().createGroup(groupName, FILE_GROUP_MANAGER);
-
- data = getRestTestHelper().getJsonAsSingletonList("/rest/groupprovider/" + FILE_GROUP_MANAGER);
- assertNotNull("Cannot load data for provider", data);
-
- getRestTestHelper().assertNumberOfGroups(data, 2);
- }
-
- public void testRemoveGroup() throws Exception
- {
- String groupName = "myGroup";
-
- Map<String, Object> data = getRestTestHelper().getJsonAsSingletonList("/rest/groupprovider/" + FILE_GROUP_MANAGER);
- assertNotNull("Cannot load data for provider", data);
-
- getRestTestHelper().assertNumberOfGroups(data, 1);
-
- getRestTestHelper().removeGroup(groupName, FILE_GROUP_MANAGER);
-
- data = getRestTestHelper().getJsonAsSingletonList("/rest/groupprovider/" + FILE_GROUP_MANAGER);
- assertNotNull("Cannot load data for provider", data);
-
- getRestTestHelper().assertNumberOfGroups(data, 0);
- }
-
-
- private void assertProvider(String type, Map<String, Object> provider)
- {
- Asserts.assertAttributesPresent(provider, GroupProvider.AVAILABLE_ATTRIBUTES,
- GroupProvider.CREATED, GroupProvider.UPDATED, GroupProvider.DESCRIPTION,
- GroupProvider.TIME_TO_LIVE);
- assertEquals("Unexpected value of provider attribute " + GroupProvider.STATE, State.ACTIVE.name(),
- provider.get(GroupProvider.STATE));
- assertEquals("Unexpected value of provider attribute " + GroupProvider.LIFETIME_POLICY,
- LifetimePolicy.PERMANENT.name(), provider.get(GroupProvider.LIFETIME_POLICY));
- assertEquals("Unexpected value of provider attribute " + GroupProvider.DURABLE, Boolean.TRUE,
- provider.get(GroupProvider.DURABLE));
- assertEquals("Unexpected value of provider attribute " + GroupProvider.TYPE, type,
- provider.get(GroupProvider.TYPE));
-
- final String name = (String) provider.get(GroupProvider.NAME);
- assertEquals("Unexpected value of provider attribute " + GroupProvider.NAME, type,
- name);
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> groups = (List<Map<String, Object>>) provider.get("groups");
- assertNotNull("Groups were not found", groups);
- assertEquals("Unexpected number of groups", 1, groups.size());
- for (Map<String, Object> group : groups)
- {
-
- final String groupName = (String) group.get(Group.NAME);
- assertNotNull("Attribute " + Group.NAME, groupName);
-
- assertNotNull("Attribute " + Group.ID, group.get(Group.ID));
- assertEquals("Attribute " + Group.ID, UUIDGenerator.generateGroupUUID(name, groupName).toString(), group.get(Group.ID));
- }
- }
-
- private File createTemporaryGroupFile() throws Exception
- {
- File groupFile = File.createTempFile("group", "grp");
- groupFile.deleteOnExit();
-
- Properties props = new Properties();
- props.put("myGroup.users", "guest");
-
- props.store(new FileOutputStream(groupFile), "test group file");
-
- return groupFile;
- }
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupRestTest.java
deleted file mode 100644
index 5430cce6dc..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupRestTest.java
+++ /dev/null
@@ -1,109 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.qpid.server.model.GroupMember;
-
-public class GroupRestTest extends QpidRestTestCase
-{
- private static final String GROUP_NAME = "myGroup";
- private static final String FILE_GROUP_MANAGER = "FileGroupManager";
- private static final String EXISTING_MEMBER = "user1";
- private static final String NEW_MEMBER = "user2";
-
- private File _groupFile;
-
- @Override
- public void setUp() throws Exception
- {
- _groupFile = createTemporaryGroupFile();
-
- setConfigurationProperty("security.file-group-manager.attributes.attribute.name", "groupFile");
- setConfigurationProperty("security.file-group-manager.attributes.attribute.value", _groupFile.getAbsolutePath());
-
- super.setUp();
- }
-
- @Override
- public void tearDown() throws Exception
- {
- super.tearDown();
-
- if (_groupFile != null)
- {
- if (_groupFile.exists())
- {
- _groupFile.delete();
- }
- }
- }
-
- public void testGet() throws Exception
- {
- Map<String, Object> group = getRestTestHelper().getJsonAsSingletonList("/rest/group/FileGroupManager/myGroup");
- List<Map<String, Object>> groupmembers = (List<Map<String, Object>>) group.get("groupmembers");
- assertEquals(1, groupmembers.size());
-
- Map<String, Object> member1 = groupmembers.get(0);
- assertEquals(EXISTING_MEMBER, (String)member1.get(GroupMember.NAME));
- }
-
- public void testCreateNewMemberOfGroup() throws Exception
- {
- Map<String, Object> group = getRestTestHelper().getJsonAsSingletonList("/rest/group/FileGroupManager/myGroup");
- getRestTestHelper().assertNumberOfGroupMembers(group, 1);
-
- getRestTestHelper().createNewGroupMember(FILE_GROUP_MANAGER, GROUP_NAME, NEW_MEMBER);
-
- group = getRestTestHelper().getJsonAsSingletonList("/rest/group/FileGroupManager/myGroup");
- getRestTestHelper().assertNumberOfGroupMembers(group, 2);
- }
-
- public void testRemoveMemberFromGroup() throws Exception
- {
- Map<String, Object> group = getRestTestHelper().getJsonAsSingletonList("/rest/group/FileGroupManager/myGroup");
- getRestTestHelper().assertNumberOfGroupMembers(group, 1);
-
- getRestTestHelper().removeMemberFromGroup(FILE_GROUP_MANAGER, GROUP_NAME, EXISTING_MEMBER);
-
- group = getRestTestHelper().getJsonAsSingletonList("/rest/group/FileGroupManager/myGroup");
- getRestTestHelper().assertNumberOfGroupMembers(group, 0);
- }
-
- private File createTemporaryGroupFile() throws Exception
- {
- File groupFile = File.createTempFile("group", "grp");
- groupFile.deleteOnExit();
-
- Properties props = new Properties();
- props.put(GROUP_NAME + ".users", EXISTING_MEMBER);
-
- props.store(new FileOutputStream(groupFile), "test group file");
-
- return groupFile;
- }
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/LogRecordsRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/LogRecordsRestTest.java
deleted file mode 100644
index 34b25e2e40..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/LogRecordsRestTest.java
+++ /dev/null
@@ -1,42 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.util.List;
-import java.util.Map;
-
-public class LogRecordsRestTest extends QpidRestTestCase
-{
- public void testGet() throws Exception
- {
- List<Map<String, Object>> logs = getRestTestHelper().getJsonAsList("/rest/logrecords");
- assertNotNull("Logs data cannot be null", logs);
- assertTrue("Logs are not found", logs.size() > 0);
- Map<String, Object> record = getRestTestHelper().find("message", "[Broker] BRK-1004 : Qpid Broker Ready", logs);
-
- assertNotNull("BRK-1004 message is not found", record);
- assertNotNull("Message id cannot be null", record.get("id"));
- assertNotNull("Message timestamp cannot be null", record.get("timestamp"));
- assertEquals("Unexpected log level", "INFO", record.get("level"));
- assertEquals("Unexpected thread", "main", record.get("thread"));
- assertEquals("Unexpected logger", "qpid.message.broker.ready", record.get("logger"));
- }
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/MessagesRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/MessagesRestTest.java
deleted file mode 100644
index a4efcc9456..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/MessagesRestTest.java
+++ /dev/null
@@ -1,354 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import javax.jms.BytesMessage;
-import javax.jms.Connection;
-import javax.jms.DeliveryMode;
-import javax.jms.Destination;
-import javax.jms.Message;
-import javax.jms.MessageProducer;
-import javax.jms.Session;
-
-import org.codehaus.jackson.JsonParseException;
-import org.codehaus.jackson.map.JsonMappingException;
-
-public class MessagesRestTest extends QpidRestTestCase
-{
-
- /**
- * Message number to publish into queue
- */
- private static final int MESSAGE_NUMBER = 12;
-
- private Connection _connection;
- private Session _session;
- private MessageProducer _producer;
- private long _startTime;
- private long _ttl;
-
- public void setUp() throws Exception
- {
- super.setUp();
- _startTime = System.currentTimeMillis();
- _connection = getConnection();
- _session = _connection.createSession(true, Session.SESSION_TRANSACTED);
- String queueName = getTestQueueName();
- Destination queue = _session.createQueue(queueName);
- _session.createConsumer(queue);
- _producer = _session.createProducer(queue);
-
- _ttl = TimeUnit.DAYS.toMillis(1);
- for (int i = 0; i < MESSAGE_NUMBER; i++)
- {
- Message m = _session.createTextMessage("Test-" + i);
- m.setIntProperty("index", i);
- if (i % 2 == 0)
- {
- _producer.send(m);
- }
- else
- {
- _producer.send(m, DeliveryMode.NON_PERSISTENT, 5, _ttl);
- }
- }
- _session.commit();
- }
-
- public void testGet() throws Exception
- {
- String queueName = getTestQueueName();
- List<Map<String, Object>> messages = getRestTestHelper().getJsonAsList("/rest/message/test/" + queueName);
- assertNotNull("Messages are not found", messages);
- assertEquals("Unexpected number of messages", MESSAGE_NUMBER, messages.size());
- int position = 0;
- for (Map<String, Object> message : messages)
- {
- assertMessage(position, message);
- position++;
- }
- }
-
- public void testGetMessageContent() throws Exception
- {
- String queueName = getTestQueueName();
-
- // add bytes message
- BytesMessage byteMessage = _session.createBytesMessage();
- byte[] messageBytes = "Test".getBytes();
- byteMessage.writeBytes(messageBytes);
- byteMessage.setStringProperty("test", "value");
- _producer.send(byteMessage);
- _session.commit();
-
- // get message IDs
- List<Long> ids = getMesssageIds(queueName);
-
- Map<String, Object> message = getRestTestHelper().getJsonAsMap("/rest/message/test/" + queueName + "/" + ids.get(0));
- assertMessageAttributes(message);
- assertMessageAttributeValues(message, true);
-
- @SuppressWarnings("unchecked")
- Map<String, Object> headers = (Map<String, Object>) message.get("headers");
- assertNotNull("Message headers are not found", headers);
- assertEquals("Unexpected message header", 0, headers.get("index"));
-
- Long lastMessageId = ids.get(ids.size() - 1);
- message = getRestTestHelper().getJsonAsMap("/rest/message/test/" + queueName + "/" + lastMessageId);
- assertMessageAttributes(message);
- assertEquals("Unexpected message attribute mimeType", "application/octet-stream", message.get("mimeType"));
- assertEquals("Unexpected message attribute size", 4, message.get("size"));
-
- @SuppressWarnings("unchecked")
- Map<String, Object> bytesMessageHeader = (Map<String, Object>) message.get("headers");
- assertNotNull("Message headers are not found", bytesMessageHeader);
- assertEquals("Unexpected message header", "value", bytesMessageHeader.get("test"));
-
- // get content
- HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/message-content/test/" + queueName + "/"
- + lastMessageId, "GET");
- connection.connect();
- byte[] data = getRestTestHelper().readConnectionInputStream(connection);
- assertTrue("Unexpected message", Arrays.equals(messageBytes, data));
-
- }
-
- public void testPostMoveMessages() throws Exception
- {
- String queueName = getTestQueueName();
- String queueName2 = queueName + "_2";
- Destination queue2 = _session.createQueue(queueName2);
- _session.createConsumer(queue2);
-
- // get message IDs
- List<Long> ids = getMesssageIds(queueName);
-
- // move half of the messages
- int movedNumber = ids.size() / 2;
- List<Long> movedMessageIds = new ArrayList<Long>();
- for (int i = 0; i < movedNumber; i++)
- {
- movedMessageIds.add(ids.remove(i));
- }
-
- // move messages
- HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/message/test/" + queueName, "POST");
-
- Map<String, Object> messagesData = new HashMap<String, Object>();
- messagesData.put("messages", movedMessageIds);
- messagesData.put("destinationQueue", queueName2);
- messagesData.put("move", Boolean.TRUE);
-
- getRestTestHelper().writeJsonRequest(connection, messagesData);
- assertEquals("Unexpected response code", 200, connection.getResponseCode());
-
- // check messages on target queue
- List<Map<String, Object>> messages = getRestTestHelper().getJsonAsList("/rest/message/test/" + queueName2);
- assertNotNull("Messages are not found", messages);
- assertEquals("Unexpected number of messages", movedMessageIds.size(), messages.size());
- for (Long id : movedMessageIds)
- {
- Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
- assertMessageAttributes(message);
- }
-
- // check messages on original queue
- messages = getRestTestHelper().getJsonAsList("/rest/message/test/" + queueName);
- assertNotNull("Messages are not found", messages);
- assertEquals("Unexpected number of messages", ids.size(), messages.size());
- for (Long id : ids)
- {
- Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
- assertMessageAttributes(message);
- }
- for (Long id : movedMessageIds)
- {
- Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
- assertNull("Moved message " + id + " is found on original queue", message);
- }
- }
-
- public void testPostCopyMessages() throws Exception
- {
- String queueName = getTestQueueName();
- String queueName2 = queueName + "_2";
- Destination queue2 = _session.createQueue(queueName2);
- _session.createConsumer(queue2);
-
- // get message IDs
- List<Long> ids = getMesssageIds(queueName);
-
- // copy half of the messages
- int copyNumber = ids.size() / 2;
- List<Long> copyMessageIds = new ArrayList<Long>();
- for (int i = 0; i < copyNumber; i++)
- {
- copyMessageIds.add(ids.remove(i));
- }
-
- // copy messages
- HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/message/test/" + queueName, "POST");
-
- Map<String, Object> messagesData = new HashMap<String, Object>();
- messagesData.put("messages", copyMessageIds);
- messagesData.put("destinationQueue", queueName2);
-
- getRestTestHelper().writeJsonRequest(connection, messagesData);
- assertEquals("Unexpected response code", 200, connection.getResponseCode());
-
- // check messages on target queue
- List<Map<String, Object>> messages = getRestTestHelper().getJsonAsList("/rest/message/test/" + queueName2);
- assertNotNull("Messages are not found", messages);
- assertEquals("Unexpected number of messages", copyMessageIds.size(), messages.size());
- for (Long id : copyMessageIds)
- {
- Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
- assertMessageAttributes(message);
- }
-
- // check messages on original queue
- messages = getRestTestHelper().getJsonAsList("/rest/message/test/" + queueName);
- assertNotNull("Messages are not found", messages);
- assertEquals("Unexpected number of messages", MESSAGE_NUMBER, messages.size());
- for (Long id : ids)
- {
- Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
- assertMessageAttributes(message);
- }
- for (Long id : copyMessageIds)
- {
- Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
- assertMessageAttributes(message);
- }
- }
-
- public void testDeleteMessages() throws Exception
- {
- String queueName = getTestQueueName();
-
- // get message IDs
- List<Long> ids = getMesssageIds(queueName);
-
- // delete half of the messages
- int deleteNumber = ids.size() / 2;
- StringBuilder queryString = new StringBuilder();
- List<Long> deleteMessageIds = new ArrayList<Long>();
- for (int i = 0; i < deleteNumber; i++)
- {
- Long id = ids.remove(i);
- deleteMessageIds.add(id);
- if (queryString.length() > 0)
- {
- queryString.append("&");
- }
- queryString.append("id=").append(id);
- }
-
- // delete messages
- HttpURLConnection connection = getRestTestHelper().openManagementConnection(
- "/rest/message/test/" + queueName + "?" + queryString.toString(), "DELETE");
- connection.connect();
- assertEquals("Unexpected response code", 200, connection.getResponseCode());
-
- // check messages on queue
- List<Map<String, Object>> messages = getRestTestHelper().getJsonAsList("/rest/message/test/" + queueName);
- assertNotNull("Messages are not found", messages);
- assertEquals("Unexpected number of messages", ids.size(), messages.size());
- for (Long id : ids)
- {
- Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
- assertMessageAttributes(message);
- }
- for (Long id : deleteMessageIds)
- {
- Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
- assertNull("Message with id " + id + " was not deleted", message);
- }
- }
-
- private List<Long> getMesssageIds(String queueName) throws IOException, JsonParseException, JsonMappingException
- {
- List<Map<String, Object>> messages = getRestTestHelper().getJsonAsList("/rest/message/test/" + queueName);
- List<Long> ids = new ArrayList<Long>();
- for (Map<String, Object> message : messages)
- {
- ids.add(((Number) message.get("id")).longValue());
- }
- return ids;
- }
-
- private void assertMessage(int position, Map<String, Object> message)
- {
- assertMessageAttributes(message);
-
- assertEquals("Unexpected message attribute position", position, message.get("position"));
- assertEquals("Unexpected message attribute size", position < 10 ? 6 : 7, message.get("size"));
- boolean even = position % 2 == 0;
- assertMessageAttributeValues(message, even);
- }
-
- private void assertMessageAttributeValues(Map<String, Object> message, boolean even)
- {
- if (even)
- {
- assertEquals("Unexpected message attribute expirationTime", 0, message.get("expirationTime"));
- assertEquals("Unexpected message attribute priority", 4, message.get("priority"));
- assertEquals("Unexpected message attribute persistent", Boolean.TRUE, message.get("persistent"));
- }
- else
- {
- assertEquals("Unexpected message attribute expirationTime", ((Number) message.get("timestamp")).longValue()
- + _ttl, message.get("expirationTime"));
- assertEquals("Unexpected message attribute priority", 5, message.get("priority"));
- assertEquals("Unexpected message attribute persistent", Boolean.FALSE, message.get("persistent"));
- }
- assertEquals("Unexpected message attribute mimeType", "text/plain", message.get("mimeType"));
- assertEquals("Unexpected message attribute userId", "guest", message.get("userId"));
- assertEquals("Unexpected message attribute deliveryCount", 0, message.get("deliveryCount"));
- assertEquals("Unexpected message attribute state", "Available", message.get("state"));
- }
-
- private void assertMessageAttributes(Map<String, Object> message)
- {
- assertNotNull("Message map cannot be null", message);
- assertNotNull("Unexpected message attribute deliveryCount", message.get("deliveryCount"));
- assertNotNull("Unexpected message attribute state", message.get("state"));
- assertNotNull("Unexpected message attribute id", message.get("id"));
- assertNotNull("Message arrivalTime cannot be null", message.get("arrivalTime"));
- assertNotNull("Message timestamp cannot be null", message.get("timestamp"));
- assertTrue("Message arrivalTime cannot be null", ((Number) message.get("arrivalTime")).longValue() > _startTime);
- assertNotNull("Message messageId cannot be null", message.get("messageId"));
- assertNotNull("Unexpected message attribute mimeType", message.get("mimeType"));
- assertNotNull("Unexpected message attribute userId", message.get("userId"));
- assertNotNull("Message priority cannot be null", message.get("priority"));
- assertNotNull("Message expirationTime cannot be null", message.get("expirationTime"));
- assertNotNull("Message persistent cannot be null", message.get("persistent"));
- }
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/PortRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/PortRestTest.java
deleted file mode 100644
index ea897881a9..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/PortRestTest.java
+++ /dev/null
@@ -1,61 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.net.URLDecoder;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.qpid.server.model.Port;
-
-public class PortRestTest extends QpidRestTestCase
-{
- public void testGet() throws Exception
- {
- List<Map<String, Object>> ports = getRestTestHelper().getJsonAsList("/rest/port/");
- assertNotNull("Port data cannot be null", ports);
- assertEquals("Unexpected number of ports", 2, ports.size());
- int[] expectedPorts = { getPort(), getRestTestHelper().getHttpPort() };
- for (int port : expectedPorts)
- {
- String portName = "0.0.0.0:" + port;
- Map<String, Object> portData = getRestTestHelper().find(Port.NAME, portName, ports);
- assertNotNull("Port " + portName + " is not found", portData);
- Asserts.assertPortAttributes(portData);
- }
- }
-
- public void testGetPort() throws Exception
- {
- List<Map<String, Object>> ports = getRestTestHelper().getJsonAsList("/rest/port/");
- assertNotNull("Ports data cannot be null", ports);
- assertEquals("Unexpected number of ports", 2, ports.size());
- for (Map<String, Object> portMap : ports)
- {
- String portName = (String) portMap.get(Port.NAME);
- assertNotNull("Port name attribute is not found", portName);
- Map<String, Object> portData = getRestTestHelper().getJsonAsSingletonList("/rest/port/" + URLDecoder.decode(portName, "UTF-8"));
- assertNotNull("Port " + portName + " is not found", portData);
- Asserts.assertPortAttributes(portData);
- }
- }
-
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QpidRestTestCase.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QpidRestTestCase.java
deleted file mode 100644
index bb90f52739..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QpidRestTestCase.java
+++ /dev/null
@@ -1,83 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.io.IOException;
-
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.qpid.test.utils.QpidBrokerTestCase;
-
-public class QpidRestTestCase extends QpidBrokerTestCase
-{
- public static final String TEST1_VIRTUALHOST = "test";
- public static final String TEST2_VIRTUALHOST = "test2";
- public static final String TEST3_VIRTUALHOST = "test3";
-
- public static final String[] EXPECTED_VIRTUALHOSTS = { TEST1_VIRTUALHOST, TEST2_VIRTUALHOST, TEST3_VIRTUALHOST};
- public static final String[] EXPECTED_QUEUES = { "queue", "ping" };
- public static final String[] EXPECTED_EXCHANGES = { "amq.fanout", "amq.match", "amq.direct","amq.topic","<<default>>" };
-
- private RestTestHelper _restTestHelper = new RestTestHelper(findFreePort());
-
- @Override
- public void setUp() throws Exception
- {
- // Set up virtualhost config with queues and bindings to the amq.direct
- for (String virtualhost : EXPECTED_VIRTUALHOSTS)
- {
- createTestVirtualHost(virtualhost);
- for (String queue : EXPECTED_QUEUES)
- {
- setConfigurationProperty("virtualhosts.virtualhost." + virtualhost + ".queues.exchange", "amq.direct");
- setConfigurationProperty("virtualhosts.virtualhost." + virtualhost + ".queues.queue(-1).name", queue);
- }
- }
-
- customizeConfiguration();
- super.setUp();
- }
-
- @Override
- protected void tearDown() throws Exception
- {
- try
- {
- super.tearDown();
- }
- finally
- {
- getRestTestHelper().tearDown();
- }
- }
-
- protected void customizeConfiguration() throws ConfigurationException, IOException
- {
- setConfigurationProperty("management.enabled", "false");
- setConfigurationProperty("management.http.enabled", "true");
- setConfigurationProperty("management.https.enabled", "false");
- setConfigurationProperty("management.http.port", Integer.toString(_restTestHelper.getHttpPort()));
- }
-
- public RestTestHelper getRestTestHelper()
- {
- return _restTestHelper;
- }
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueRestTest.java
deleted file mode 100644
index bf57a2664f..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueRestTest.java
+++ /dev/null
@@ -1,225 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.URLDecoder;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.jms.Connection;
-import javax.jms.Destination;
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Session;
-
-import org.apache.qpid.server.model.Binding;
-import org.apache.qpid.server.model.Consumer;
-import org.apache.qpid.server.model.LifetimePolicy;
-import org.apache.qpid.server.model.Queue;
-
-public class QueueRestTest extends QpidRestTestCase
-{
- private static final String QUEUE_ATTRIBUTE_CONSUMERS = "consumers";
- private static final String QUEUE_ATTRIBUTE_BINDINGS = "bindings";
-
- /**
- * Message number to publish into queue
- */
- private static final int MESSAGE_NUMBER = 2;
- private static final int MESSAGE_PAYLOAD_SIZE = 6;
- private static final int ENQUEUED_MESSAGES = 1;
- private static final int DEQUEUED_MESSAGES = 1;
- private static final int ENQUEUED_BYTES = MESSAGE_PAYLOAD_SIZE;
- private static final int DEQUEUED_BYTES = MESSAGE_PAYLOAD_SIZE;
-
- private Connection _connection;
-
- public void setUp() throws Exception
- {
- super.setUp();
- _connection = getConnection();
- Session session = _connection.createSession(true, Session.SESSION_TRANSACTED);
- String queueName = getTestQueueName();
- Destination queue = session.createQueue(queueName);
- MessageConsumer consumer = session.createConsumer(queue);
- MessageProducer producer = session.createProducer(queue);
-
- for (int i = 0; i < MESSAGE_NUMBER; i++)
- {
- producer.send(session.createTextMessage("Test-" + i));
- }
- session.commit();
- _connection.start();
- Message m = consumer.receive(1000l);
- assertNotNull("Message is not received", m);
- session.commit();
- }
-
- public void testGetVirtualHostQueues() throws Exception
- {
- String queueName = getTestQueueName();
- List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList("/rest/queue/test");
- assertEquals("Unexpected number of queues", EXPECTED_QUEUES.length + 1, queues.size());
- String[] expectedQueues = new String[EXPECTED_QUEUES.length + 1];
- System.arraycopy(EXPECTED_QUEUES, 0, expectedQueues, 0, EXPECTED_QUEUES.length);
- expectedQueues[EXPECTED_QUEUES.length] = queueName;
-
- for (String name : expectedQueues)
- {
- Map<String, Object> queueDetails = getRestTestHelper().find(Queue.NAME, name, queues);
- Asserts.assertQueue(name, "standard", queueDetails);
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> bindings = (List<Map<String, Object>>) queueDetails.get(QUEUE_ATTRIBUTE_BINDINGS);
- assertNotNull("Queue bindings are not found", bindings);
- assertEquals("Unexpected number of bindings", 2, bindings.size());
-
- Map<String, Object> defaultExchangeBinding = getRestTestHelper().find(Binding.EXCHANGE, "<<default>>", bindings);
- Map<String, Object> directExchangeBinding = getRestTestHelper().find(Binding.EXCHANGE, "amq.direct", bindings);
- Asserts.assertBinding(name, "<<default>>", defaultExchangeBinding);
- Asserts.assertBinding(name, "amq.direct", directExchangeBinding);
- }
- }
-
- public void testGetByName() throws Exception
- {
- String queueName = getTestQueueName();
- Map<String, Object> queueDetails = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName);
- Asserts.assertQueue(queueName, "standard", queueDetails);
- assertStatistics(queueDetails);
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> bindings = (List<Map<String, Object>>) queueDetails.get(QUEUE_ATTRIBUTE_BINDINGS);
- assertNotNull("Queue bindings are not found", bindings);
- assertEquals("Unexpected number of bindings", 2, bindings.size());
-
- Map<String, Object> defaultExchangeBinding = getRestTestHelper().find(Binding.EXCHANGE, "<<default>>", bindings);
- Map<String, Object> directExchangeBinding = getRestTestHelper().find(Binding.EXCHANGE, "amq.direct", bindings);
- Asserts.assertBinding(queueName, "<<default>>", defaultExchangeBinding);
- Asserts.assertBinding(queueName, "amq.direct", directExchangeBinding);
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> consumers = (List<Map<String, Object>>) queueDetails.get(QUEUE_ATTRIBUTE_CONSUMERS);
- assertNotNull("Queue consumers are not found", consumers);
- assertEquals("Unexpected number of consumers", 1, consumers.size());
- assertConsumer(consumers.get(0));
- }
-
- public void testPutCreateBinding() throws Exception
- {
- String queueName = getTestQueueName();
- String bindingName = queueName + 2;
- String[] exchanges = { "amq.direct", "amq.fanout", "amq.topic", "amq.match", "<<default>>" };
-
- for (int i = 0; i < exchanges.length; i++)
- {
- createBinding(bindingName, exchanges[i], queueName);
- }
-
- Map<String, Object> queueDetails = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName);
- Asserts.assertQueue(queueName, "standard", queueDetails);
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> bindings = (List<Map<String, Object>>) queueDetails.get(QUEUE_ATTRIBUTE_BINDINGS);
- assertNotNull("Queue bindings are not found", bindings);
- assertEquals("Unexpected number of bindings", exchanges.length + 2, bindings.size());
-
- Map<String, Object> searchAttributes = new HashMap<String, Object>();
- searchAttributes.put(Binding.NAME, bindingName);
-
- for (int i = 0; i < exchanges.length; i++)
- {
- searchAttributes.put(Binding.EXCHANGE, exchanges[i]);
- Map<String, Object> binding = getRestTestHelper().find(searchAttributes, bindings);
- Asserts.assertBinding(bindingName, queueName, exchanges[i], binding);
- }
- }
-
- private void createBinding(String bindingName, String exchangeName, String queueName) throws IOException
- {
- HttpURLConnection connection = getRestTestHelper().openManagementConnection(
- "/rest/binding/test/" + URLDecoder.decode(exchangeName, "UTF-8") + "/" + queueName + "/" + bindingName,
- "PUT");
-
- Map<String, Object> bindingData = new HashMap<String, Object>();
- bindingData.put(Binding.NAME, bindingName);
- bindingData.put(Binding.EXCHANGE, exchangeName);
- bindingData.put(Binding.QUEUE, queueName);
-
- getRestTestHelper().writeJsonRequest(connection, bindingData);
- assertEquals("Unexpected response code", 201, connection.getResponseCode());
-
- connection.disconnect();
- }
-
- private void assertConsumer(Map<String, Object> consumer)
- {
- assertNotNull("Consumer map should not be null", consumer);
- Asserts.assertAttributesPresent(consumer, Consumer.AVAILABLE_ATTRIBUTES, Consumer.STATE, Consumer.TIME_TO_LIVE,
- Consumer.CREATED, Consumer.UPDATED, Consumer.SETTLEMENT_MODE, Consumer.EXCLUSIVE, Consumer.SELECTOR,
- Consumer.NO_LOCAL);
-
- assertEquals("Unexpected binding attribute " + Consumer.NAME, "1", consumer.get(Consumer.NAME));
- assertEquals("Unexpected binding attribute " + Consumer.DURABLE, Boolean.FALSE, consumer.get(Consumer.DURABLE));
- assertEquals("Unexpected binding attribute " + Consumer.LIFETIME_POLICY, LifetimePolicy.AUTO_DELETE.name(),
- consumer.get(Consumer.LIFETIME_POLICY));
- assertEquals("Unexpected binding attribute " + Consumer.DISTRIBUTION_MODE, "MOVE",
- consumer.get(Consumer.DISTRIBUTION_MODE));
-
- @SuppressWarnings("unchecked")
- Map<String, Object> statistics = (Map<String, Object>) consumer.get(Asserts.STATISTICS_ATTRIBUTE);
- assertNotNull("Consumer statistics is not present", statistics);
- Asserts.assertAttributesPresent(statistics, Consumer.AVAILABLE_STATISTICS, Consumer.STATE_CHANGED);
- }
-
- private void assertStatistics(Map<String, Object> queueDetails)
- {
- @SuppressWarnings("unchecked")
- Map<String, Object> statistics = (Map<String, Object>) queueDetails.get(Asserts.STATISTICS_ATTRIBUTE);
- assertEquals("Unexpected queue statistics attribute " + Queue.PERSISTENT_DEQUEUED_MESSAGES, DEQUEUED_MESSAGES,
- statistics.get(Queue.PERSISTENT_DEQUEUED_MESSAGES));
- assertEquals("Unexpected queue statistics attribute " + Queue.QUEUE_DEPTH_MESSAGES, ENQUEUED_MESSAGES,
- statistics.get(Queue.QUEUE_DEPTH_MESSAGES));
- assertEquals("Unexpected queue statistics attribute " + Queue.CONSUMER_COUNT, 1,
- statistics.get(Queue.CONSUMER_COUNT));
- assertEquals("Unexpected queue statistics attribute " + Queue.CONSUMER_COUNT_WITH_CREDIT, 1,
- statistics.get(Queue.CONSUMER_COUNT_WITH_CREDIT));
- assertEquals("Unexpected queue statistics attribute " + Queue.BINDING_COUNT, 2, statistics.get(Queue.BINDING_COUNT));
- assertEquals("Unexpected queue statistics attribute " + Queue.PERSISTENT_DEQUEUED_MESSAGES, DEQUEUED_MESSAGES,
- statistics.get(Queue.PERSISTENT_DEQUEUED_MESSAGES));
- assertEquals("Unexpected queue statistics attribute " + Queue.TOTAL_DEQUEUED_MESSAGES, DEQUEUED_MESSAGES,
- statistics.get(Queue.TOTAL_DEQUEUED_MESSAGES));
- assertEquals("Unexpected queue statistics attribute " + Queue.TOTAL_DEQUEUED_BYTES, DEQUEUED_BYTES,
- statistics.get(Queue.TOTAL_DEQUEUED_BYTES));
- assertEquals("Unexpected queue statistics attribute " + Queue.PERSISTENT_DEQUEUED_BYTES, DEQUEUED_BYTES,
- statistics.get(Queue.TOTAL_DEQUEUED_BYTES));
- assertEquals("Unexpected queue statistics attribute " + Queue.PERSISTENT_ENQUEUED_BYTES, ENQUEUED_BYTES
- + DEQUEUED_BYTES, statistics.get(Queue.PERSISTENT_ENQUEUED_BYTES));
- assertEquals("Unexpected queue statistics attribute " + Queue.TOTAL_ENQUEUED_BYTES, ENQUEUED_BYTES + DEQUEUED_BYTES,
- statistics.get(Queue.TOTAL_ENQUEUED_BYTES));
- assertEquals("Unexpected queue statistics attribute " + Queue.QUEUE_DEPTH_BYTES, ENQUEUED_BYTES,
- statistics.get(Queue.QUEUE_DEPTH_BYTES));
- }
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/RestTestHelper.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/RestTestHelper.java
deleted file mode 100644
index 8a323c0639..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/RestTestHelper.java
+++ /dev/null
@@ -1,417 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.io.BufferedWriter;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLSocketFactory;
-import javax.servlet.http.HttpServletResponse;
-
-import junit.framework.Assert;
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.log4j.Logger;
-import org.apache.qpid.test.utils.QpidBrokerTestCase;
-import org.codehaus.jackson.JsonGenerationException;
-import org.codehaus.jackson.JsonParseException;
-import org.codehaus.jackson.map.JsonMappingException;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.type.TypeReference;
-
-public class RestTestHelper
-{
- private static final Logger LOGGER = Logger.getLogger(RestTestHelper.class);
-
- private int _httpPort;
-
- private boolean _useSsl;
-
- private String _username;
-
- private String _password;
-
- private File _passwdFile;
-
- public RestTestHelper(int httpPort)
- {
- _httpPort = httpPort;
- }
-
- public int getHttpPort()
- {
- return _httpPort;
- }
-
- private String getHostName()
- {
- return "localhost";
- }
-
- private String getProtocol()
- {
- return _useSsl ? "https" : "http";
- }
-
- public String getManagementURL()
- {
- return getProtocol() + "://" + getHostName() + ":" + getHttpPort();
- }
-
- public URL getManagementURL(String path) throws MalformedURLException
- {
- return new URL(getManagementURL() + path);
- }
-
- public HttpURLConnection openManagementConnection(String path, String method) throws IOException
- {
- URL url = getManagementURL(path);
- HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
- if(_useSsl)
- {
- ((HttpsURLConnection) httpCon).setSSLSocketFactory((SSLSocketFactory) SSLSocketFactory.getDefault());
- }
- if(_username != null)
- {
- String encoded = new String(new Base64().encode((_username + ":" + _password).getBytes()));
- httpCon.setRequestProperty("Authorization", "Basic " + encoded);
- }
- httpCon.setDoOutput(true);
- httpCon.setRequestMethod(method);
- return httpCon;
- }
-
- public List<Map<String, Object>> readJsonResponseAsList(HttpURLConnection connection) throws IOException,
- JsonParseException, JsonMappingException
- {
- byte[] data = readConnectionInputStream(connection);
-
- ObjectMapper mapper = new ObjectMapper();
-
- TypeReference<List<LinkedHashMap<String, Object>>> typeReference = new TypeReference<List<LinkedHashMap<String, Object>>>()
- {
- };
- List<Map<String, Object>> providedObject = mapper.readValue(new ByteArrayInputStream(data), typeReference);
- return providedObject;
- }
-
- public Map<String, Object> readJsonResponseAsMap(HttpURLConnection connection) throws IOException,
- JsonParseException, JsonMappingException
- {
- byte[] data = readConnectionInputStream(connection);
-
- ObjectMapper mapper = new ObjectMapper();
-
- TypeReference<LinkedHashMap<String, Object>> typeReference = new TypeReference<LinkedHashMap<String, Object>>()
- {
- };
- Map<String, Object> providedObject = mapper.readValue(new ByteArrayInputStream(data), typeReference);
- return providedObject;
- }
-
- public byte[] readConnectionInputStream(HttpURLConnection connection) throws IOException
- {
- InputStream is = connection.getInputStream();
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- byte[] buffer = new byte[1024];
- int len = -1;
- while ((len = is.read(buffer)) != -1)
- {
- baos.write(buffer, 0, len);
- }
- if (LOGGER.isTraceEnabled())
- {
- LOGGER.trace("RESPONSE:" + new String(baos.toByteArray()));
- }
- return baos.toByteArray();
- }
-
- public void writeJsonRequest(HttpURLConnection connection, Map<String, Object> data) throws JsonGenerationException,
- JsonMappingException, IOException
- {
- ObjectMapper mapper = new ObjectMapper();
- mapper.writeValue(connection.getOutputStream(), data);
- }
-
- public Map<String, Object> find(String name, Object value, List<Map<String, Object>> data)
- {
- for (Map<String, Object> map : data)
- {
- Object mapValue = map.get(name);
- if (value.equals(mapValue))
- {
- return map;
- }
- }
- return null;
- }
-
- public Map<String, Object> find(Map<String, Object> searchAttributes, List<Map<String, Object>> data)
- {
- for (Map<String, Object> map : data)
- {
- boolean equals = true;
- for (Map.Entry<String, Object> entry : searchAttributes.entrySet())
- {
- Object mapValue = map.get(entry.getKey());
- if (!entry.getValue().equals(mapValue))
- {
- equals = false;
- break;
- }
- }
- if (equals)
- {
- return map;
- }
- }
- return null;
- }
-
- public Map<String, Object> getJsonAsSingletonList(String path) throws IOException
- {
- List<Map<String, Object>> response = getJsonAsList(path);
-
- Assert.assertNotNull("Response cannot be null", response);
- Assert.assertEquals("Unexpected response", 1, response.size());
- return response.get(0);
- }
-
- public List<Map<String, Object>> getJsonAsList(String path) throws IOException, JsonParseException,
- JsonMappingException
- {
- HttpURLConnection connection = openManagementConnection(path, "GET");
- connection.connect();
- List<Map<String, Object>> response = readJsonResponseAsList(connection);
- return response;
- }
-
- public Map<String, Object> getJsonAsMap(String path) throws IOException
- {
- HttpURLConnection connection = openManagementConnection(path, "GET");
- connection.connect();
- Map<String, Object> response = readJsonResponseAsMap(connection);
- return response;
- }
-
- public void createNewGroupMember(String groupProviderName, String groupName, String memberName, int responseCode) throws IOException
- {
- HttpURLConnection connection = openManagementConnection(
- "/rest/groupmember/" + URLDecoder.decode(groupProviderName, "UTF-8") + "/"+ URLDecoder.decode(groupName, "UTF-8") + "/" + URLDecoder.decode(memberName, "UTF-8"),
- "PUT");
-
- Map<String, Object> groupMemberData = new HashMap<String, Object>();
- // TODO add type
- writeJsonRequest(connection, groupMemberData);
-
- Assert.assertEquals("Unexpected response code", responseCode, connection.getResponseCode());
-
- connection.disconnect();
- }
-
- public void createNewGroupMember(String groupProviderName, String groupName, String memberName) throws IOException
- {
- createNewGroupMember(groupProviderName, groupName, memberName, HttpServletResponse.SC_CREATED);
- }
-
- public void removeMemberFromGroup(String groupProviderName, String groupName, String memberName, int responseCode) throws IOException
- {
- HttpURLConnection connection = openManagementConnection(
- "/rest/groupmember/" + URLDecoder.decode(groupProviderName, "UTF-8") + "/"+ URLDecoder.decode(groupName, "UTF-8") + "/" + URLDecoder.decode(memberName, "UTF-8"),
- "DELETE");
-
- Assert.assertEquals("Unexpected response code", responseCode, connection.getResponseCode());
-
- connection.disconnect();
- }
-
- public void removeMemberFromGroup(String groupProviderName, String groupName, String memberName) throws IOException
- {
- removeMemberFromGroup(groupProviderName, groupName, memberName, HttpServletResponse.SC_OK);
- }
-
- public void assertNumberOfGroupMembers(Map<String, Object> data, int expectedNumberOfGroupMembers)
- {
- List<Map<String, Object>> groups = (List<Map<String, Object>>) data.get("groupmembers");
- if (groups == null)
- {
- groups = Collections.emptyList();
- }
-
- Assert.assertEquals("Unexpected number of group members", expectedNumberOfGroupMembers, groups.size());
- }
-
- public void createGroup(String groupName, String groupProviderName) throws IOException
- {
- createGroup(groupName, groupProviderName, HttpServletResponse.SC_CREATED);
- }
-
- public void createGroup(String groupName, String groupProviderName, int responseCode) throws IOException
- {
- HttpURLConnection connection = openManagementConnection(
- "/rest/group/" + URLDecoder.decode(groupProviderName, "UTF-8") + "/"+ URLDecoder.decode(groupName, "UTF-8"),
- "PUT");
-
- Map<String, Object> groupData = new HashMap<String, Object>();
- writeJsonRequest(connection, groupData);
-
- Assert.assertEquals("Unexpected response code", responseCode, connection.getResponseCode());
-
- connection.disconnect();
- }
-
- public void createOrUpdateUser(String username, String password) throws IOException
- {
- createOrUpdateUser(username, password, HttpServletResponse.SC_CREATED);
- }
-
- public void createOrUpdateUser(String username, String password, int responseCode) throws IOException
- {
- HttpURLConnection connection = openManagementConnection("/rest/user/PrincipalDatabaseAuthenticationManager/" + username, "PUT");
-
- Map<String, Object> data = new HashMap<String, Object>();
- data.put("password", password);
- writeJsonRequest(connection, data);
-
- Assert.assertEquals("Unexpected response code", responseCode, connection.getResponseCode());
-
- connection.disconnect();
- }
-
- public void removeGroup(String groupName, String groupProviderName, int responseCode) throws IOException
- {
- HttpURLConnection connection = openManagementConnection(
- "/rest/group/" + URLDecoder.decode(groupProviderName, "UTF-8") + "/"+ URLDecoder.decode(groupName, "UTF-8"),
- "DELETE");
-
- Assert.assertEquals("Unexpected response code", responseCode, connection.getResponseCode());
- connection.disconnect();
- }
-
- public void removeGroup(String groupName, String groupProviderName) throws IOException
- {
- removeGroup(groupName, groupProviderName, HttpServletResponse.SC_OK);
- }
-
- public void removeUserById(String id) throws IOException
- {
- HttpURLConnection connection = openManagementConnection("/rest/user/PrincipalDatabaseAuthenticationManager?id=" + id, "DELETE");
- Assert.assertEquals("Unexpected response code", HttpServletResponse.SC_OK, connection.getResponseCode());
- connection.disconnect();
- }
-
- public void removeUser(String username, int responseCode) throws IOException
- {
- HttpURLConnection connection = openManagementConnection("/rest/user/PrincipalDatabaseAuthenticationManager/" + username, "DELETE");
- Assert.assertEquals("Unexpected response code", responseCode, connection.getResponseCode());
- connection.disconnect();
- }
-
- public void removeUser(String username) throws IOException
- {
- removeUser(username, HttpServletResponse.SC_OK);
- }
-
- public void assertNumberOfGroups(Map<String, Object> data, int expectedNumberOfGroups)
- {
- List<Map<String, Object>> groups = (List<Map<String, Object>>) data.get("groups");
- if (groups == null)
- {
- groups = Collections.emptyList();
- }
- Assert.assertEquals("Unexpected number of groups", expectedNumberOfGroups, groups.size());
- }
-
- public void setUseSsl(boolean useSsl)
- {
- _useSsl = useSsl;
- }
-
- public void setUsernameAndPassword(String username, String password)
- {
- _username = username;
- _password = password;
- }
-
- /**
- * Create password file that follows the convention username=password, which is deleted by {@link #tearDown()}
- */
- public void configureTemporaryPasswordFile(QpidBrokerTestCase testCase, String... users) throws ConfigurationException, IOException
- {
- _passwdFile = createTemporaryPasswdFile(users);
-
- testCase.setConfigurationProperty("security.pd-auth-manager.principal-database.attributes.attribute.name", "passwordFile");
- testCase.setConfigurationProperty("security.pd-auth-manager.principal-database.attributes.attribute.value", _passwdFile.getAbsolutePath());
- }
-
- public void tearDown()
- {
- if (_passwdFile != null)
- {
- if (_passwdFile.exists())
- {
- _passwdFile.delete();
- }
- }
- }
-
- private File createTemporaryPasswdFile(String[] users) throws IOException
- {
- BufferedWriter writer = null;
- try
- {
- File testFile = File.createTempFile(this.getClass().getName(),"tmp");
- testFile.deleteOnExit();
-
- writer = new BufferedWriter(new FileWriter(testFile));
- for (int i = 0; i < users.length; i++)
- {
- String username = users[i];
- writer.write(username + ":" + username);
- writer.newLine();
- }
-
- return testFile;
-
- }
- finally
- {
- if (writer != null)
- {
- writer.close();
- }
- }
- }
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslRestTest.java
deleted file mode 100644
index d65b06e6a6..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslRestTest.java
+++ /dev/null
@@ -1,42 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.util.List;
-import java.util.Map;
-
-public class SaslRestTest extends QpidRestTestCase
-{
- public void testGet() throws Exception
- {
- Map<String, Object> saslData = getRestTestHelper().getJsonAsMap("/rest/sasl");
- assertNotNull("mechanisms attribute is not found", saslData.get("mechanisms"));
-
- @SuppressWarnings("unchecked")
- List<String> mechanisms = (List<String>) saslData.get("mechanisms");
- String[] expectedMechanisms = { "AMQPLAIN", "PLAIN", "CRAM-MD5" };
- for (String mechanism : expectedMechanisms)
- {
- assertTrue("Mechanism " + mechanism + " is not found", mechanisms.contains(mechanism));
- }
- }
-
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/StructureRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/StructureRestTest.java
deleted file mode 100644
index 31f5551a45..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/StructureRestTest.java
+++ /dev/null
@@ -1,115 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.util.List;
-import java.util.Map;
-
-public class StructureRestTest extends QpidRestTestCase
-{
-
- public void testGet() throws Exception
- {
- Map<String, Object> structure = getRestTestHelper().getJsonAsMap("/rest/structure");
- assertNotNull("Structure data cannot be null", structure);
- assertNode(structure, "Broker");
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> virtualhosts = (List<Map<String, Object>>) structure.get("virtualhosts");
- assertEquals("Unexpected number of virtual hosts", 3, virtualhosts.size());
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> ports = (List<Map<String, Object>>) structure.get("ports");
- assertEquals("Unexpected number of ports", 2, ports.size());
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> providers = (List<Map<String, Object>>) structure.get("authenticationproviders");
- assertEquals("Unexpected number of authentication providers", 1, providers.size());
-
- for (String hostName : EXPECTED_VIRTUALHOSTS)
- {
- Map<String, Object> host = getRestTestHelper().find("name", hostName, virtualhosts);
- assertNotNull("Host " + hostName + " is not found ", host);
- assertNode(host, hostName);
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> queues = (List<Map<String, Object>>) host.get("queues");
- assertNotNull("Host " + hostName + " queues are not found ", queues);
- for (String queueName : EXPECTED_QUEUES)
- {
- Map<String, Object> queue = getRestTestHelper().find("name", queueName, queues);
- assertNotNull(hostName + " queue " + queueName + " is not found ", queue);
- assertNode(queue, queueName);
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> bindings = (List<Map<String, Object>>) queue.get("bindings");
- assertNotNull(hostName + " queue " + queueName + " bindings are not found ", queues);
- for (Map<String, Object> binding : bindings)
- {
- assertNode(binding, queueName);
- }
- }
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> exchanges = (List<Map<String, Object>>) host.get("exchanges");
- assertNotNull("Host " + hostName + " exchanges are not found ", exchanges);
- for (String exchangeName : EXPECTED_EXCHANGES)
- {
- Map<String, Object> exchange = getRestTestHelper().find("name", exchangeName, exchanges);
- assertNotNull("Exchange " + exchangeName + " is not found ", exchange);
- assertNode(exchange, exchangeName);
- if ("amq.direct".equalsIgnoreCase(exchangeName) || "<<default>>".equalsIgnoreCase(exchangeName))
- {
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> bindings = (List<Map<String, Object>>) exchange.get("bindings");
- assertNotNull(hostName + " exchange " + exchangeName + " bindings are not found ", bindings);
- for (String queueName : EXPECTED_QUEUES)
- {
- Map<String, Object> binding = getRestTestHelper().find("name", queueName, bindings);
- assertNotNull(hostName + " exchange " + exchangeName + " binding " + queueName + " is not found", binding);
- assertNode(binding, queueName);
- }
- }
- }
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> aliases = (List<Map<String, Object>>) host.get("virtualhostaliases");
- assertNotNull("Host " + hostName + " aliaces are not found ", aliases);
- assertEquals("Unexpected aliaces size", 1, aliases.size());
- assertNode(aliases.get(0), hostName);
- }
-
- int[] expectedPorts = { getPort(), getRestTestHelper().getHttpPort() };
- for (int port : expectedPorts)
- {
- String portName = "0.0.0.0:" + port;
- Map<String, Object> portData = getRestTestHelper().find("name", portName, ports);
- assertNotNull("Port " + portName + " is not found ", portData);
- assertNode(portData, portName);
- }
- }
-
- private void assertNode(Map<String, Object> node, String name)
- {
- assertEquals("Unexpected name", name, node.get("name"));
- assertNotNull("Unexpected id", node.get("id"));
- }
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/UserRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/UserRestTest.java
deleted file mode 100644
index 037d26a7bd..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/UserRestTest.java
+++ /dev/null
@@ -1,97 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.qpid.server.model.User;
-
-public class UserRestTest extends QpidRestTestCase
-{
- @Override
- public void setUp() throws Exception
- {
- getRestTestHelper().configureTemporaryPasswordFile(this, "user1", "user2");
-
- super.setUp(); // do this last because it starts the broker, using the modified config
- }
-
- public void testGet() throws Exception
- {
- List<Map<String, Object>> users = getRestTestHelper().getJsonAsList("/rest/user");
- assertNotNull("Users cannot be null", users);
- assertTrue("Unexpected number of users", users.size() > 1);
- for (Map<String, Object> user : users)
- {
- assertUser(user);
- }
- }
-
- public void testGetUserByName() throws Exception
- {
- List<Map<String, Object>> users = getRestTestHelper().getJsonAsList("/rest/user");
- assertNotNull("Users cannot be null", users);
- assertTrue("Unexpected number of users", users.size() > 1);
- for (Map<String, Object> user : users)
- {
- assertNotNull("Attribute " + User.ID, user.get(User.ID));
- String userName = (String) user.get(User.NAME);
- assertNotNull("Attribute " + User.NAME, userName);
- Map<String, Object> userDetails = getRestTestHelper().getJsonAsSingletonList("/rest/user/PrincipalDatabaseAuthenticationManager/"
- + userName);
- assertUser(userDetails);
- assertEquals("Unexpected user name", userName, userDetails.get(User.NAME));
- }
- }
-
- public void testPut() throws Exception
- {
- String userName = getTestName();
- getRestTestHelper().createOrUpdateUser(userName, "newPassword");
-
- Map<String, Object> userDetails = getRestTestHelper().getJsonAsSingletonList("/rest/user/PrincipalDatabaseAuthenticationManager/"
- + userName);
- assertUser(userDetails);
- assertEquals("Unexpected user name", userName, userDetails.get(User.NAME));
- }
-
- public void testDelete() throws Exception
- {
- String userName = getTestName();
- getRestTestHelper().createOrUpdateUser(userName, "newPassword");
-
- Map<String, Object> userDetails = getRestTestHelper().getJsonAsSingletonList("/rest/user/PrincipalDatabaseAuthenticationManager/"
- + userName);
- String id = (String) userDetails.get(User.ID);
-
- getRestTestHelper().removeUserById(id);
-
- List<Map<String, Object>> users = getRestTestHelper().getJsonAsList("/rest/user/PrincipalDatabaseAuthenticationManager/" + userName);
- assertEquals("User should be deleted", 0, users.size());
- }
-
- private void assertUser(Map<String, Object> user)
- {
- assertNotNull("Attribute " + User.ID, user.get(User.ID));
- assertNotNull("Attribute " + User.NAME, user.get(User.NAME));
- }
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostRestTest.java
deleted file mode 100644
index c7f9b81d58..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostRestTest.java
+++ /dev/null
@@ -1,434 +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.qpid.server.management.plugin.servlet.rest;
-
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.jms.Session;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.qpid.client.AMQConnection;
-import org.apache.qpid.server.model.Exchange;
-import org.apache.qpid.server.model.Queue;
-import org.apache.qpid.server.model.VirtualHost;
-import org.apache.qpid.server.queue.AMQQueueFactory;
-import org.codehaus.jackson.JsonGenerationException;
-import org.codehaus.jackson.map.JsonMappingException;
-
-public class VirtualHostRestTest extends QpidRestTestCase
-{
- private static final String VIRTUALHOST_EXCHANGES_ATTRIBUTE = "exchanges";
- public static final String VIRTUALHOST_QUEUES_ATTRIBUTE = "queues";
- public static final String VIRTUALHOST_CONNECTIONS_ATTRIBUTE = "connections";
-
- private AMQConnection _connection;
-
- public void testGet() throws Exception
- {
- List<Map<String, Object>> hosts = getRestTestHelper().getJsonAsList("/rest/virtualhost/");
- assertNotNull("Hosts data cannot be null", hosts);
- assertEquals("Unexpected number of hosts", EXPECTED_VIRTUALHOSTS.length, hosts.size());
- for (String hostName : EXPECTED_VIRTUALHOSTS)
- {
- Map<String, Object> host = getRestTestHelper().find("name", hostName, hosts);
- Asserts.assertVirtualHost(hostName, host);
- }
- }
-
- public void testGetHost() throws Exception
- {
- // create AMQP connection to get connection JSON details
- _connection = (AMQConnection) getConnection();
- _connection.createSession(true, Session.SESSION_TRANSACTED);
-
- Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/test");
- Asserts.assertVirtualHost("test", hostDetails);
-
- @SuppressWarnings("unchecked")
- Map<String, Object> statistics = (Map<String, Object>) hostDetails.get(Asserts.STATISTICS_ATTRIBUTE);
- assertEquals("Unexpected number of exchanges in statistics", EXPECTED_EXCHANGES.length, statistics.get(VirtualHost.EXCHANGE_COUNT));
- assertEquals("Unexpected number of queues in statistics", EXPECTED_QUEUES.length, statistics.get(VirtualHost.QUEUE_COUNT));
- assertEquals("Unexpected number of connections in statistics", 1, statistics.get(VirtualHost.CONNECTION_COUNT));
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> exchanges = (List<Map<String, Object>>) hostDetails.get(VIRTUALHOST_EXCHANGES_ATTRIBUTE);
- assertEquals("Unexpected number of exchanges", EXPECTED_EXCHANGES.length, exchanges.size());
- Asserts.assertDurableExchange("amq.fanout", "fanout", getRestTestHelper().find(Exchange.NAME, "amq.fanout", exchanges));
- Asserts.assertDurableExchange("amq.topic", "topic", getRestTestHelper().find(Exchange.NAME, "amq.topic", exchanges));
- Asserts.assertDurableExchange("amq.direct", "direct", getRestTestHelper().find(Exchange.NAME, "amq.direct", exchanges));
- Asserts.assertDurableExchange("amq.match", "headers", getRestTestHelper().find(Exchange.NAME, "amq.match", exchanges));
- Asserts.assertDurableExchange("<<default>>", "direct", getRestTestHelper().find(Exchange.NAME, "<<default>>", exchanges));
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> queues = (List<Map<String, Object>>) hostDetails.get(VIRTUALHOST_QUEUES_ATTRIBUTE);
- assertEquals("Unexpected number of queues", EXPECTED_QUEUES.length, queues.size());
- Map<String, Object> queue = getRestTestHelper().find(Queue.NAME, "queue", queues);
- Map<String, Object> ping = getRestTestHelper().find(Queue.NAME, "ping", queues);
- Asserts.assertQueue("queue", "standard", queue);
- Asserts.assertQueue("ping", "standard", ping);
- assertEquals("Unexpected value of queue attribute " + Queue.DURABLE, Boolean.FALSE, queue.get(Queue.DURABLE));
- assertEquals("Unexpected value of queue attribute " + Queue.DURABLE, Boolean.FALSE, ping.get(Queue.DURABLE));
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> connections = (List<Map<String, Object>>) hostDetails
- .get(VIRTUALHOST_CONNECTIONS_ATTRIBUTE);
- assertEquals("Unexpected number of connections", 1, connections.size());
- Asserts.assertConnection(connections.get(0), _connection);
- }
-
- public void testPutCreateQueue() throws Exception
- {
- String queueName = getTestQueueName();
-
- createQueue(queueName + "-standard", "standard", null);
-
- Map<String, Object> sortedQueueAttributes = new HashMap<String, Object>();
- sortedQueueAttributes.put(Queue.SORT_KEY, "sortme");
- createQueue(queueName + "-sorted", "sorted", sortedQueueAttributes);
-
- Map<String, Object> priorityQueueAttributes = new HashMap<String, Object>();
- priorityQueueAttributes.put(Queue.PRIORITIES, 10);
- createQueue(queueName + "-priority", "priority", priorityQueueAttributes);
-
- Map<String, Object> lvqQueueAttributes = new HashMap<String, Object>();
- lvqQueueAttributes.put(Queue.LVQ_KEY, "LVQ");
- createQueue(queueName + "-lvq", "lvq", lvqQueueAttributes);
-
- Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/test");
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> queues = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_QUEUES_ATTRIBUTE);
- Map<String, Object> standardQueue = getRestTestHelper().find(Queue.NAME, queueName + "-standard" , queues);
- Map<String, Object> sortedQueue = getRestTestHelper().find(Queue.NAME, queueName + "-sorted" , queues);
- Map<String, Object> priorityQueue = getRestTestHelper().find(Queue.NAME, queueName + "-priority" , queues);
- Map<String, Object> lvqQueue = getRestTestHelper().find(Queue.NAME, queueName + "-lvq" , queues);
-
- Asserts.assertQueue(queueName + "-standard", "standard", standardQueue);
- Asserts.assertQueue(queueName + "-sorted", "sorted", sortedQueue);
- Asserts.assertQueue(queueName + "-priority", "priority", priorityQueue);
- Asserts.assertQueue(queueName + "-lvq", "lvq", lvqQueue);
-
- assertEquals("Unexpected value of queue attribute " + Queue.DURABLE, Boolean.TRUE, standardQueue.get(Queue.DURABLE));
- assertEquals("Unexpected value of queue attribute " + Queue.DURABLE, Boolean.TRUE, sortedQueue.get(Queue.DURABLE));
- assertEquals("Unexpected value of queue attribute " + Queue.DURABLE, Boolean.TRUE, priorityQueue.get(Queue.DURABLE));
- assertEquals("Unexpected value of queue attribute " + Queue.DURABLE, Boolean.TRUE, lvqQueue.get(Queue.DURABLE));
-
- assertEquals("Unexpected sorted key attribute", "sortme", sortedQueue.get(Queue.SORT_KEY));
- assertEquals("Unexpected lvq key attribute", "LVQ", lvqQueue.get(Queue.LVQ_KEY));
- assertEquals("Unexpected priorities key attribute", 10, priorityQueue.get(Queue.PRIORITIES));
- }
-
- public void testPutCreateExchange() throws Exception
- {
- String exchangeName = getTestName();
-
- createExchange(exchangeName + "-direct", "direct");
- createExchange(exchangeName + "-topic", "topic");
- createExchange(exchangeName + "-headers", "headers");
- createExchange(exchangeName + "-fanout", "fanout");
-
- Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/test");
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> exchanges = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_EXCHANGES_ATTRIBUTE);
- Map<String, Object> directExchange = getRestTestHelper().find(Queue.NAME, exchangeName + "-direct" , exchanges);
- Map<String, Object> topicExchange = getRestTestHelper().find(Queue.NAME, exchangeName + "-topic" , exchanges);
- Map<String, Object> headersExchange = getRestTestHelper().find(Queue.NAME, exchangeName + "-headers" , exchanges);
- Map<String, Object> fanoutExchange = getRestTestHelper().find(Queue.NAME, exchangeName + "-fanout" , exchanges);
-
- Asserts.assertDurableExchange(exchangeName + "-direct", "direct", directExchange);
- Asserts.assertDurableExchange(exchangeName + "-topic", "topic", topicExchange);
- Asserts.assertDurableExchange(exchangeName + "-headers", "headers", headersExchange);
- Asserts.assertDurableExchange(exchangeName + "-fanout", "fanout", fanoutExchange);
-
- assertEquals("Unexpected value of queue attribute " + Queue.DURABLE, Boolean.TRUE, directExchange.get(Queue.DURABLE));
- assertEquals("Unexpected value of queue attribute " + Queue.DURABLE, Boolean.TRUE, topicExchange.get(Queue.DURABLE));
- assertEquals("Unexpected value of queue attribute " + Queue.DURABLE, Boolean.TRUE, headersExchange.get(Queue.DURABLE));
- assertEquals("Unexpected value of queue attribute " + Queue.DURABLE, Boolean.TRUE, fanoutExchange.get(Queue.DURABLE));
-
- }
-
- public void testPutCreateLVQWithoutKey() throws Exception
- {
- String queueName = getTestQueueName()+ "-lvq";
- createQueue(queueName, "lvq", null);
-
- Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/test");
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> queues = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_QUEUES_ATTRIBUTE);
- Map<String, Object> lvqQueue = getRestTestHelper().find(Queue.NAME, queueName , queues);
-
- Asserts.assertQueue(queueName , "lvq", lvqQueue);
- assertEquals("Unexpected value of queue attribute " + Queue.DURABLE, Boolean.TRUE, lvqQueue.get(Queue.DURABLE));
- assertEquals("Unexpected lvq key attribute", AMQQueueFactory.QPID_LVQ_KEY, lvqQueue.get(Queue.LVQ_KEY));
- }
-
- public void testPutCreateSortedQueueWithoutKey() throws Exception
- {
- String queueName = getTestQueueName() + "-sorted";
- int responseCode = tryCreateQueue(queueName, "sorted", null);
- assertEquals("Unexpected response code", HttpServletResponse.SC_CONFLICT, responseCode);
-
- Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/test");
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> queues = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_QUEUES_ATTRIBUTE);
- Map<String, Object> testQueue = getRestTestHelper().find(Queue.NAME, queueName , queues);
-
- assertNull("Sorted queue without a key was created ", testQueue);
- }
-
- public void testPutCreatePriorityQueueWithoutKey() throws Exception
- {
- String queueName = getTestQueueName()+ "-priority";
- createQueue(queueName, "priority", null);
-
- Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/test");
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> queues = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_QUEUES_ATTRIBUTE);
- Map<String, Object> priorityQueue = getRestTestHelper().find(Queue.NAME, queueName , queues);
-
- Asserts.assertQueue(queueName , "priority", priorityQueue);
- assertEquals("Unexpected value of queue attribute " + Queue.DURABLE, Boolean.TRUE, priorityQueue.get(Queue.DURABLE));
- assertEquals("Unexpected number of priorities", 10, priorityQueue.get(Queue.PRIORITIES));
- }
-
- public void testPutCreateStandardQueueWithoutType() throws Exception
- {
- String queueName = getTestQueueName();
- createQueue(queueName, null, null);
-
- Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/test");
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> queues = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_QUEUES_ATTRIBUTE);
- Map<String, Object> queue = getRestTestHelper().find(Queue.NAME, queueName , queues);
-
- Asserts.assertQueue(queueName , "standard", queue);
- }
-
- public void testPutCreateQueueOfUnsupportedType() throws Exception
- {
- String queueName = getTestQueueName();
- int responseCode = tryCreateQueue(queueName, "unsupported", null);
- assertEquals("Unexpected response code", HttpServletResponse.SC_CONFLICT, responseCode);
-
- Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/test");
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> queues = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_QUEUES_ATTRIBUTE);
- Map<String, Object> queue = getRestTestHelper().find(Queue.NAME, queueName , queues);
-
- assertNull("Queue of unsupported type was created", queue);
- }
-
- public void testDeleteQueue() throws Exception
- {
- String queueName = getTestQueueName();
- createQueue(queueName, null, null);
-
- HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/queue/test/" + queueName, "DELETE");
- connection.connect();
- assertEquals("Unexpected response code", 200, connection.getResponseCode());
- List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList("/rest/queue/test/" + queueName);
- assertEquals("Queue should be deleted", 0, queues.size());
- }
-
- public void testDeleteQueueById() throws Exception
- {
- String queueName = getTestQueueName();
- createQueue(queueName, null, null);
- Map<String, Object> queueDetails = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName);
-
- HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/queue/test?id=" + queueDetails.get(Queue.ID), "DELETE");
- connection.connect();
- assertEquals("Unexpected response code", 200, connection.getResponseCode());
- List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList("/rest/queue/test/" + queueName);
- assertEquals("Queue should be deleted", 0, queues.size());
- }
-
- public void testDeleteExchange() throws Exception
- {
- String exchangeName = getTestName();
- createExchange(exchangeName, "direct");
-
- HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/exchange/test/" + exchangeName, "DELETE");
- connection.connect();
- assertEquals("Unexpected response code", 200, connection.getResponseCode());
- List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList("/rest/exchange/test/" + exchangeName);
- assertEquals("Exchange should be deleted", 0, queues.size());
- }
-
- public void testDeleteExchangeById() throws Exception
- {
- String exchangeName = getTestName();
- createExchange(exchangeName, "direct");
- Map<String, Object> echangeDetails = getRestTestHelper().getJsonAsSingletonList("/rest/exchange/test/" + exchangeName);
-
- HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/exchange/test?id=" + echangeDetails.get(Exchange.ID), "DELETE");
- connection.connect();
- assertEquals("Unexpected response code", 200, connection.getResponseCode());
- List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList("/rest/exchange/test/" + exchangeName);
- assertEquals("Exchange should be deleted", 0, queues.size());
- }
-
- public void testPutCreateQueueWithAttributes() throws Exception
- {
- String queueName = getTestQueueName();
-
- Map<String, Object> attributes = new HashMap<String, Object>();
- attributes.put(Queue.ALERT_REPEAT_GAP, 1000);
- attributes.put(Queue.ALERT_THRESHOLD_MESSAGE_AGE, 3600000);
- attributes.put(Queue.ALERT_THRESHOLD_MESSAGE_SIZE, 1000000000);
- attributes.put(Queue.ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, 800);
- attributes.put(Queue.MAXIMUM_DELIVERY_ATTEMPTS, 15);
- attributes.put(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, 2000000000);
- attributes.put(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, 1500000000);
-
- createQueue(queueName + "-standard", "standard", attributes);
-
- Map<String, Object> sortedQueueAttributes = new HashMap<String, Object>();
- sortedQueueAttributes.putAll(attributes);
- sortedQueueAttributes.put(Queue.SORT_KEY, "sortme");
- createQueue(queueName + "-sorted", "sorted", sortedQueueAttributes);
-
- Map<String, Object> priorityQueueAttributes = new HashMap<String, Object>();
- priorityQueueAttributes.putAll(attributes);
- priorityQueueAttributes.put(Queue.PRIORITIES, 10);
- createQueue(queueName + "-priority", "priority", priorityQueueAttributes);
-
- Map<String, Object> lvqQueueAttributes = new HashMap<String, Object>();
- lvqQueueAttributes.putAll(attributes);
- lvqQueueAttributes.put(Queue.LVQ_KEY, "LVQ");
- createQueue(queueName + "-lvq", "lvq", lvqQueueAttributes);
-
- Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/test");
-
- @SuppressWarnings("unchecked")
- List<Map<String, Object>> queues = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_QUEUES_ATTRIBUTE);
- Map<String, Object> standardQueue = getRestTestHelper().find(Queue.NAME, queueName + "-standard" , queues);
- Map<String, Object> sortedQueue = getRestTestHelper().find(Queue.NAME, queueName + "-sorted" , queues);
- Map<String, Object> priorityQueue = getRestTestHelper().find(Queue.NAME, queueName + "-priority" , queues);
- Map<String, Object> lvqQueue = getRestTestHelper().find(Queue.NAME, queueName + "-lvq" , queues);
-
- attributes.put(Queue.DURABLE, Boolean.TRUE);
- Asserts.assertQueue(queueName + "-standard", "standard", standardQueue, attributes);
- Asserts.assertQueue(queueName + "-sorted", "sorted", sortedQueue, attributes);
- Asserts.assertQueue(queueName + "-priority", "priority", priorityQueue, attributes);
- Asserts.assertQueue(queueName + "-lvq", "lvq", lvqQueue, attributes);
-
- assertEquals("Unexpected sorted key attribute", "sortme", sortedQueue.get(Queue.SORT_KEY));
- assertEquals("Unexpected lvq key attribute", "LVQ", lvqQueue.get(Queue.LVQ_KEY));
- assertEquals("Unexpected priorities key attribute", 10, priorityQueue.get(Queue.PRIORITIES));
- }
-
- @SuppressWarnings("unchecked")
- public void testCreateQueueWithDLQEnabled() throws Exception
- {
- String queueName = getTestQueueName();
-
- Map<String, Object> attributes = new HashMap<String, Object>();
- attributes.put(AMQQueueFactory.X_QPID_DLQ_ENABLED, true);
-
- //verify the starting state
- Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/test");
- List<Map<String, Object>> queues = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_QUEUES_ATTRIBUTE);
- List<Map<String, Object>> exchanges = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_EXCHANGES_ATTRIBUTE);
-
- assertNull("queue should not have already been present", getRestTestHelper().find(Queue.NAME, queueName , queues));
- assertNull("queue should not have already been present", getRestTestHelper().find(Queue.NAME, queueName + "_DLQ" , queues));
- assertNull("exchange should not have already been present", getRestTestHelper().find(Exchange.NAME, queueName + "_DLE" , exchanges));
-
- //create the queue
- createQueue(queueName, "standard", attributes);
-
- //verify the new queue, as well as the DLQueue and DLExchange have been created
- hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/test");
- queues = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_QUEUES_ATTRIBUTE);
- exchanges = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_EXCHANGES_ATTRIBUTE);
-
- Map<String, Object> queue = getRestTestHelper().find(Queue.NAME, queueName , queues);
- Map<String, Object> dlqQueue = getRestTestHelper().find(Queue.NAME, queueName + "_DLQ" , queues);
- Map<String, Object> dlExchange = getRestTestHelper().find(Exchange.NAME, queueName + "_DLE" , exchanges);
- assertNotNull("queue should not have been present", queue);
- assertNotNull("queue should not have been present", dlqQueue);
- assertNotNull("exchange should not have been present", dlExchange);
-
- //verify that the alternate exchange is set as expected on the new queue
- Map<String, Object> queueAttributes = new HashMap<String, Object>();
- queueAttributes.put(Queue.ALTERNATE_EXCHANGE, queueName + "_DLE");
-
- Asserts.assertQueue(queueName, "standard", queue, queueAttributes);
- Asserts.assertQueue(queueName, "standard", queue, null);
- }
-
- private void createExchange(String exchangeName, String exchangeType) throws IOException
- {
- HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/exchange/test/" + exchangeName, "PUT");
-
- Map<String, Object> queueData = new HashMap<String, Object>();
- queueData.put(Exchange.NAME, exchangeName);
- queueData.put(Exchange.DURABLE, Boolean.TRUE);
- queueData.put(Exchange.TYPE, exchangeType);
-
- getRestTestHelper().writeJsonRequest(connection, queueData);
- assertEquals("Unexpected response code", 201, connection.getResponseCode());
-
- connection.disconnect();
- }
-
- private void createQueue(String queueName, String queueType, Map<String, Object> attributes) throws IOException,
- JsonGenerationException, JsonMappingException
- {
- int responseCode = tryCreateQueue(queueName, queueType, attributes);
- assertEquals("Unexpected response code", 201, responseCode);
- }
-
- private int tryCreateQueue(String queueName, String queueType, Map<String, Object> attributes) throws IOException,
- JsonGenerationException, JsonMappingException
- {
- HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/queue/test/" + queueName, "PUT");
-
- Map<String, Object> queueData = new HashMap<String, Object>();
- queueData.put(Queue.NAME, queueName);
- queueData.put(Queue.DURABLE, Boolean.TRUE);
- if (queueType != null)
- {
- queueData.put(Queue.TYPE, queueType);
- }
- if (attributes != null)
- {
- queueData.putAll(attributes);
- }
-
- getRestTestHelper().writeJsonRequest(connection, queueData);
- int responseCode = connection.getResponseCode();
- connection.disconnect();
- return responseCode;
- }
-
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/systest/rest/acl/GroupRestACLTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/systest/rest/acl/GroupRestACLTest.java
deleted file mode 100644
index df93b905ab..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/systest/rest/acl/GroupRestACLTest.java
+++ /dev/null
@@ -1,190 +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.qpid.systest.rest.acl;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.qpid.server.management.plugin.servlet.rest.QpidRestTestCase;
-import org.apache.qpid.server.security.acl.AbstractACLTestCase;
-
-public class GroupRestACLTest extends QpidRestTestCase
-{
- private static final String FILE_GROUP_MANAGER = "FileGroupManager";
-
- private static final String ALLOWED_GROUP = "allowedGroup";
- private static final String DENIED_GROUP = "deniedGroup";
- private static final String OTHER_GROUP = "otherGroup";
-
- private static final String ALLOWED_USER = "webadmin";
- private static final String DENIED_USER = "admin";
- private static final String OTHER_USER = "admin";
-
- private File _groupFile;
-
- @Override
- public void setUp() throws Exception
- {
- _groupFile = createTemporaryGroupFile();
-
- setConfigurationProperty("management.http.basic-auth", "true");
- setConfigurationProperty("security.file-group-manager.attributes.attribute.name", "groupFile");
- setConfigurationProperty("security.file-group-manager.attributes.attribute.value", _groupFile.getAbsolutePath());
-
- //DONT call super.setUp(), the tests will start the broker after configuring it
- }
-
- @Override
- public void tearDown() throws Exception
- {
- super.tearDown();
-
- if (_groupFile != null)
- {
- if (_groupFile.exists())
- {
- _groupFile.delete();
- }
- }
- }
-
- private File createTemporaryGroupFile() throws Exception
- {
- File groupFile = File.createTempFile("group", "grp");
- groupFile.deleteOnExit();
-
- Properties props = new Properties();
- props.put(ALLOWED_GROUP + ".users", ALLOWED_USER);
- props.put(DENIED_GROUP + ".users", DENIED_USER);
- props.put(OTHER_GROUP + ".users", OTHER_USER);
-
- props.store(new FileOutputStream(groupFile), "test group file");
-
- return groupFile;
- }
-
- public void testCreateGroup() throws Exception
- {
- AbstractACLTestCase.writeACLFileUtil(this, null,
- "ACL ALLOW-LOG ALL ACCESS MANAGEMENT",
- "ACL ALLOW-LOG " + ALLOWED_GROUP + " CREATE GROUP",
- "ACL DENY-LOG " + DENIED_GROUP + " CREATE GROUP");
-
- //Start the broker with the custom config
- super.setUp();
- getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER);
-
- Map<String, Object> data = getRestTestHelper().getJsonAsSingletonList("/rest/groupprovider/" + FILE_GROUP_MANAGER);
- getRestTestHelper().assertNumberOfGroups(data, 3);
-
- getRestTestHelper().createGroup("newGroup", FILE_GROUP_MANAGER);
-
- data = getRestTestHelper().getJsonAsSingletonList("/rest/groupprovider/" + FILE_GROUP_MANAGER);
- getRestTestHelper().assertNumberOfGroups(data, 4);
-
- getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER);
-
- getRestTestHelper().createGroup("anotherNewGroup", FILE_GROUP_MANAGER, HttpServletResponse.SC_FORBIDDEN);
-
- data = getRestTestHelper().getJsonAsSingletonList("/rest/groupprovider/" + FILE_GROUP_MANAGER);
- getRestTestHelper().assertNumberOfGroups(data, 4);
- }
-
- public void testDeleteGroup() throws Exception
- {
- AbstractACLTestCase.writeACLFileUtil(this, null,
- "ACL ALLOW-LOG ALL ACCESS MANAGEMENT",
- "ACL ALLOW-LOG " + ALLOWED_GROUP + " DELETE GROUP",
- "ACL DENY-LOG " + DENIED_GROUP + " DELETE GROUP");
-
- //Start the broker with the custom config
- super.setUp();
- getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER);
-
- Map<String, Object> data = getRestTestHelper().getJsonAsSingletonList("/rest/groupprovider/" + FILE_GROUP_MANAGER);
- getRestTestHelper().assertNumberOfGroups(data, 3);
-
- getRestTestHelper().removeGroup(OTHER_GROUP, FILE_GROUP_MANAGER, HttpServletResponse.SC_FORBIDDEN);
-
- data = getRestTestHelper().getJsonAsSingletonList("/rest/groupprovider/" + FILE_GROUP_MANAGER);
- getRestTestHelper().assertNumberOfGroups(data, 3);
-
- getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER);
-
- getRestTestHelper().removeGroup(OTHER_GROUP, FILE_GROUP_MANAGER);
-
- data = getRestTestHelper().getJsonAsSingletonList("/rest/groupprovider/" + FILE_GROUP_MANAGER);
- getRestTestHelper().assertNumberOfGroups(data, 2);
- }
-
- public void testUpdateGroupAddMember() throws Exception
- {
- AbstractACLTestCase.writeACLFileUtil(this, null,
- "ACL ALLOW-LOG ALL ACCESS MANAGEMENT",
- "ACL ALLOW-LOG " + ALLOWED_GROUP + " UPDATE GROUP",
- "ACL DENY-LOG " + DENIED_GROUP + " UPDATE GROUP");
-
- //Start the broker with the custom config
- super.setUp();
- getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER);
-
- assertNumberOfGroupMembers(OTHER_GROUP, 1);
-
- getRestTestHelper().createNewGroupMember(FILE_GROUP_MANAGER, OTHER_GROUP, "newGroupMember", HttpServletResponse.SC_FORBIDDEN);
- assertNumberOfGroupMembers(OTHER_GROUP, 1);
-
- getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER);
- getRestTestHelper().createNewGroupMember(FILE_GROUP_MANAGER, OTHER_GROUP, "newGroupMember");
- assertNumberOfGroupMembers(OTHER_GROUP, 2);
- }
-
- public void testUpdateGroupDeleteMember() throws Exception
- {
- AbstractACLTestCase.writeACLFileUtil(this, null,
- "ACL ALLOW-LOG ALL ACCESS MANAGEMENT",
- "ACL ALLOW-LOG " + ALLOWED_GROUP + " UPDATE GROUP",
- "ACL DENY-LOG " + DENIED_GROUP + " UPDATE GROUP");
-
- //Start the broker with the custom config
- super.setUp();
- getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER);
-
- assertNumberOfGroupMembers(OTHER_GROUP, 1);
-
- getRestTestHelper().removeMemberFromGroup(FILE_GROUP_MANAGER, OTHER_GROUP, OTHER_USER, HttpServletResponse.SC_FORBIDDEN);
- assertNumberOfGroupMembers(OTHER_GROUP, 1);
-
- getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER);
- getRestTestHelper().removeMemberFromGroup(FILE_GROUP_MANAGER, OTHER_GROUP, OTHER_USER);
- assertNumberOfGroupMembers(OTHER_GROUP, 0);
- }
-
- private void assertNumberOfGroupMembers(String groupName, int expectedNumberOfMembers) throws IOException
- {
- Map<String, Object> group = getRestTestHelper().getJsonAsSingletonList("/rest/group/FileGroupManager/" + groupName);
- getRestTestHelper().assertNumberOfGroupMembers(group, expectedNumberOfMembers);
- }
-}
diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/systest/rest/acl/UserRestACLTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/systest/rest/acl/UserRestACLTest.java
deleted file mode 100644
index 88128e6a1c..0000000000
--- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/systest/rest/acl/UserRestACLTest.java
+++ /dev/null
@@ -1,192 +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.qpid.systest.rest.acl;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.qpid.server.management.plugin.servlet.rest.QpidRestTestCase;
-import org.apache.qpid.server.security.acl.AbstractACLTestCase;
-import org.codehaus.jackson.JsonParseException;
-import org.codehaus.jackson.map.JsonMappingException;
-
-public class UserRestACLTest extends QpidRestTestCase
-{
- private static final String ALLOWED_GROUP = "allowedGroup";
- private static final String DENIED_GROUP = "deniedGroup";
- private static final String OTHER_GROUP = "otherGroup";
-
- private static final String ALLOWED_USER = "webadmin";
- private static final String DENIED_USER = "admin";
- private static final String OTHER_USER = "other";
-
- private File _groupFile;
-
- @Override
- public void setUp() throws Exception
- {
- _groupFile = createTemporaryGroupFile();
-
- setConfigurationProperty("management.http.basic-auth", "true");
- setConfigurationProperty("security.file-group-manager.attributes.attribute.name", "groupFile");
- setConfigurationProperty("security.file-group-manager.attributes.attribute.value", _groupFile.getAbsolutePath());
-
- getRestTestHelper().configureTemporaryPasswordFile(this, ALLOWED_USER, DENIED_USER, OTHER_USER);
-
- //DONT call super.setUp(), the tests will start the broker after configuring it
- }
-
- @Override
- public void tearDown() throws Exception
- {
- super.tearDown();
-
- if (_groupFile != null)
- {
- if (_groupFile.exists())
- {
- _groupFile.delete();
- }
- }
- }
-
- private File createTemporaryGroupFile() throws Exception
- {
- File groupFile = File.createTempFile("group", "grp");
- groupFile.deleteOnExit();
-
- Properties props = new Properties();
- props.put(ALLOWED_GROUP + ".users", ALLOWED_USER);
- props.put(DENIED_GROUP + ".users", DENIED_USER);
- props.put(OTHER_GROUP + ".users", OTHER_USER);
-
- props.store(new FileOutputStream(groupFile), "test group file");
-
- return groupFile;
- }
-
- public void testAddUser() throws Exception
- {
- AbstractACLTestCase.writeACLFileUtil(this, null,
- "ACL ALLOW-LOG ALL ACCESS MANAGEMENT",
- "ACL ALLOW-LOG " + ALLOWED_GROUP + " CREATE USER",
- "ACL DENY-LOG " + DENIED_GROUP + " CREATE USER");
-
- //Start the broker with the custom config
- super.setUp();
-
- String newUser = "newUser";
- String password = "password";
-
- assertUserDoesNotExist(newUser);
-
- getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER);
-
- getRestTestHelper().createOrUpdateUser(newUser, password, HttpServletResponse.SC_FORBIDDEN);
- assertUserDoesNotExist(newUser);
-
- getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER);
- getRestTestHelper().createOrUpdateUser(newUser, password);
- assertUserExists(newUser);
- }
-
- public void testDeleteUser() throws Exception
- {
- AbstractACLTestCase.writeACLFileUtil(this, null,
- "ACL ALLOW-LOG ALL ACCESS MANAGEMENT",
- "ACL ALLOW-LOG " + ALLOWED_GROUP + " DELETE USER",
- "ACL DENY-LOG " + DENIED_GROUP + " DELETE USER");
-
- //Start the broker with the custom config
- super.setUp();
-
- assertUserExists(OTHER_USER);
-
- getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER);
- getRestTestHelper().removeUser(OTHER_USER, HttpServletResponse.SC_FORBIDDEN);
- assertUserExists(OTHER_USER);
-
- getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER);
- getRestTestHelper().removeUser(OTHER_USER);
- assertUserDoesNotExist(OTHER_USER);
- }
-
- public void testUpdateUser() throws Exception
- {
- AbstractACLTestCase.writeACLFileUtil(this, null,
- "ACL ALLOW-LOG ALL ACCESS MANAGEMENT",
- "ACL ALLOW-LOG " + ALLOWED_GROUP + " UPDATE USER",
- "ACL DENY-LOG " + DENIED_GROUP + " UPDATE USER");
-
- //Start the broker with the custom config
- super.setUp();
-
- String newPassword = "newPassword";
-
- checkPassword(OTHER_USER, OTHER_USER, true);
-
- getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER);
- getRestTestHelper().createOrUpdateUser(OTHER_USER, newPassword, HttpServletResponse.SC_FORBIDDEN);
-
- checkPassword(OTHER_USER, newPassword, false);
-
- getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER);
- getRestTestHelper().createOrUpdateUser(OTHER_USER, newPassword, HttpServletResponse.SC_OK); // expect SC_OK rather than the default SC_CREATED
-
- checkPassword(OTHER_USER, newPassword, true);
- checkPassword(OTHER_USER, OTHER_USER, false);
- }
-
- private void checkPassword(String username, String password, boolean passwordExpectedToBeCorrect) throws IOException
- {
- getRestTestHelper().setUsernameAndPassword(username, password);
- HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/user/PrincipalDatabaseAuthenticationManager/", "GET");
-
- boolean passwordIsCorrect = connection.getResponseCode() == HttpServletResponse.SC_OK;
-
- connection.disconnect();
-
- assertEquals(passwordExpectedToBeCorrect, passwordIsCorrect);
- }
-
- private void assertUserDoesNotExist(String newUser) throws JsonParseException, JsonMappingException, IOException
- {
- String path = "/rest/user/PrincipalDatabaseAuthenticationManager/" + newUser;
- List<Map<String, Object>> userDetailsList = getRestTestHelper().getJsonAsList(path);
- assertTrue(userDetailsList.isEmpty());
- }
-
- private void assertUserExists(String username) throws IOException
- {
- String path = "/rest/user/PrincipalDatabaseAuthenticationManager/" + username;
- Map<String, Object> userDetails = getRestTestHelper().getJsonAsSingletonList(path);
-
- assertEquals(
- "User returned by " + path + " should have name=" + username + ". The returned JSON was: " + userDetails,
- username,
- userDetails.get("name"));
- }
-}