You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2012/08/24 17:33:05 UTC

svn commit: r1376968 [3/7] - in /qpid/trunk/qpid/java: broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/ broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ broker-plugins...

Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupProviderRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupProviderRestTest.java?rev=1376968&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupProviderRestTest.java (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupProviderRestTest.java Fri Aug 24 15:33:00 2012
@@ -0,0 +1,160 @@
+/*
+ *
+ * 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;
+    }
+}

Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupRestTest.java?rev=1376968&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupRestTest.java (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/GroupRestTest.java Fri Aug 24 15:33:00 2012
@@ -0,0 +1,109 @@
+/*
+ *
+ * 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;
+    }
+}

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/LogRecordsRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/LogRecordsRestTest.java?rev=1376968&r1=1376967&r2=1376968&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/LogRecordsRestTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/LogRecordsRestTest.java Fri Aug 24 15:33:00 2012
@@ -27,10 +27,10 @@ public class LogRecordsRestTest extends 
 {
     public void testGet() throws Exception
     {
-        List<Map<String, Object>> logs = getJsonAsList("/rest/logrecords");
+        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 = find("message", "[Broker] BRK-1004 : Qpid Broker Ready", logs);
+        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"));

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/MessagesRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/MessagesRestTest.java?rev=1376968&r1=1376967&r2=1376968&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/MessagesRestTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/MessagesRestTest.java Fri Aug 24 15:33:00 2012
@@ -85,7 +85,7 @@ public class MessagesRestTest extends Qp
     public void testGet() throws Exception
     {
         String queueName = getTestQueueName();
-        List<Map<String, Object>> messages = getJsonAsList("/rest/message/test/" + queueName);
+        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;
@@ -111,7 +111,7 @@ public class MessagesRestTest extends Qp
         // get message IDs
         List<Long> ids = getMesssageIds(queueName);
 
-        Map<String, Object> message = getJsonAsMap("/rest/message/test/" + queueName + "/" + ids.get(0));
+        Map<String, Object> message = getRestTestHelper().getJsonAsMap("/rest/message/test/" + queueName + "/" + ids.get(0));
         assertMessageAttributes(message);
         assertMessageAttributeValues(message, true);
 
@@ -121,7 +121,7 @@ public class MessagesRestTest extends Qp
         assertEquals("Unexpected message header", 0, headers.get("index"));
 
         Long lastMessageId = ids.get(ids.size() - 1);
-        message = getJsonAsMap("/rest/message/test/" + queueName + "/" + lastMessageId);
+        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"));
@@ -132,10 +132,10 @@ public class MessagesRestTest extends Qp
         assertEquals("Unexpected message header", "value", bytesMessageHeader.get("test"));
 
         // get content
-        HttpURLConnection connection = openManagementConection("/rest/message-content/test/" + queueName + "/"
+        HttpURLConnection connection = getRestTestHelper().openManagementConnection("/rest/message-content/test/" + queueName + "/"
                 + lastMessageId, "GET");
         connection.connect();
-        byte[] data = readConnectionInputStream(connection);
+        byte[] data = getRestTestHelper().readConnectionInputStream(connection);
         assertTrue("Unexpected message", Arrays.equals(messageBytes, data));
 
     }
@@ -159,38 +159,38 @@ public class MessagesRestTest extends Qp
         }
 
         // move messages
-        HttpURLConnection connection = openManagementConection("/rest/message/test/" + queueName, "POST");
+        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);
 
-        writeJsonRequest(connection, messagesData);
+        getRestTestHelper().writeJsonRequest(connection, messagesData);
         assertEquals("Unexpected response code", 200, connection.getResponseCode());
 
         // check messages on target queue
-        List<Map<String, Object>> messages = getJsonAsList("/rest/message/test/" + queueName2);
+        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 = find("id", id.intValue(), messages);
+            Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
             assertMessageAttributes(message);
         }
 
         // check messages on original queue
-        messages = getJsonAsList("/rest/message/test/" + queueName);
+        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 = find("id", id.intValue(), messages);
+            Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
             assertMessageAttributes(message);
         }
         for (Long id : movedMessageIds)
         {
-            Map<String, Object> message = find("id", id.intValue(), messages);
+            Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
             assertNull("Moved message " + id + " is found on original queue", message);
         }
     }
@@ -214,37 +214,37 @@ public class MessagesRestTest extends Qp
         }
 
         // copy messages
-        HttpURLConnection connection = openManagementConection("/rest/message/test/" + queueName, "POST");
+        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);
 
-        writeJsonRequest(connection, messagesData);
+        getRestTestHelper().writeJsonRequest(connection, messagesData);
         assertEquals("Unexpected response code", 200, connection.getResponseCode());
 
         // check messages on target queue
-        List<Map<String, Object>> messages = getJsonAsList("/rest/message/test/" + queueName2);
+        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 = find("id", id.intValue(), messages);
+            Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
             assertMessageAttributes(message);
         }
 
         // check messages on original queue
-        messages = getJsonAsList("/rest/message/test/" + queueName);
+        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 = find("id", id.intValue(), messages);
+            Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
             assertMessageAttributes(message);
         }
         for (Long id : copyMessageIds)
         {
-            Map<String, Object> message = find("id", id.intValue(), messages);
+            Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
             assertMessageAttributes(message);
         }
     }
@@ -272,30 +272,30 @@ public class MessagesRestTest extends Qp
         }
 
         // delete messages
-        HttpURLConnection connection = openManagementConection(
+        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 = getJsonAsList("/rest/message/test/" + queueName);
+        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 = find("id", id.intValue(), messages);
+            Map<String, Object> message = getRestTestHelper().find("id", id.intValue(), messages);
             assertMessageAttributes(message);
         }
         for (Long id : deleteMessageIds)
         {
-            Map<String, Object> message = find("id", id.intValue(), messages);
+            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 = getJsonAsList("/rest/message/test/" + queueName);
+        List<Map<String, Object>> messages = getRestTestHelper().getJsonAsList("/rest/message/test/" + queueName);
         List<Long> ids = new ArrayList<Long>();
         for (Map<String, Object> message : messages)
         {

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/PortRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/PortRestTest.java?rev=1376968&r1=1376967&r2=1376968&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/PortRestTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/PortRestTest.java Fri Aug 24 15:33:00 2012
@@ -30,14 +30,14 @@ public class PortRestTest extends QpidRe
 {
     public void testGet() throws Exception
     {
-        List<Map<String, Object>> ports = getJsonAsList("/rest/port/");
+        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(), getHttpPort() };
+        int[] expectedPorts = { getPort(), getRestTestHelper().getHttpPort() };
         for (int port : expectedPorts)
         {
             String portName = "0.0.0.0:" + port;
-            Map<String, Object> portData = find(Port.NAME, portName, ports);
+            Map<String, Object> portData = getRestTestHelper().find(Port.NAME, portName, ports);
             assertNotNull("Port " + portName + " is not found", portData);
             Asserts.assertPortAttributes(portData);
         }
@@ -45,14 +45,14 @@ public class PortRestTest extends QpidRe
 
     public void testGetPort() throws Exception
     {
-        List<Map<String, Object>> ports = getJsonAsList("/rest/port/");
+        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 = getJsonAsSingletonList("/rest/port/" + URLDecoder.decode(portName, "UTF-8"));
+            Map<String, Object> portData = getRestTestHelper().getJsonAsSingletonList("/rest/port/" + URLDecoder.decode(portName, "UTF-8"));
             assertNotNull("Port " + portName + " is not found", portData);
             Asserts.assertPortAttributes(portData);
         }

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QpidRestTestCase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QpidRestTestCase.java?rev=1376968&r1=1376967&r2=1376968&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QpidRestTestCase.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QpidRestTestCase.java Fri Aug 24 15:33:00 2012
@@ -20,226 +20,50 @@
  */
 package org.apache.qpid.server.management.plugin.servlet.rest;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.InetAddress;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
 
 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 QpidRestTestCase extends QpidBrokerTestCase
 {
-    private static final Logger LOGGER = Logger.getLogger(QpidRestTestCase.class);
-
     public static final String[] EXPECTED_HOSTS = { "development", "test", "localhost" };
     public static final String[] EXPECTED_QUEUES = { "queue", "ping" };
     public static final String[] EXPECTED_EXCHANGES = { "amq.fanout", "amq.match", "amq.direct", "amq.topic",
             "qpid.management", "<<default>>" };
 
-    private int _httpPort;
-    private String _hostName;
-    private List<HttpURLConnection> _httpConnections;
+    private RestTestHelper _restTestHelper = new RestTestHelper(findFreePort());
 
     @Override
     public void setUp() throws Exception
     {
-        _httpConnections = new ArrayList<HttpURLConnection>();
-        _hostName = InetAddress.getLocalHost().getHostName();
-        _httpPort = findFreePort();
         customizeConfiguration();
         super.setUp();
-
-    }
-
-    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(_httpPort));
-    }
-
-    public void teearDown() throws Exception
-    {
-        for (HttpURLConnection connection : _httpConnections)
-        {
-            try
-            {
-                connection.disconnect();
-            }
-            catch (Exception e)
-            {
-                // ignore
-            }
-        }
-        super.tearDown();
-    }
-
-    protected int getHttpPort()
-    {
-        return _httpPort;
-    }
-
-    protected String getHostName()
-    {
-        return _hostName;
-    }
-
-    protected String getProtocol()
-    {
-        return "http";
-    }
-
-    protected String getManagementURL()
-    {
-        return getProtocol() + "://" + getHostName() + ":" + getHttpPort();
-    }
-
-    protected URL getManagementURL(String path) throws MalformedURLException
-    {
-        return new URL(getManagementURL() + path);
-    }
-
-    protected HttpURLConnection openManagementConection(String path) throws IOException
-    {
-        URL url = getManagementURL(path);
-        HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
-        httpCon.setDoOutput(true);
-        return httpCon;
-    }
-
-    protected HttpURLConnection openManagementConection(String path, String method) throws IOException
-    {
-        HttpURLConnection httpCon = openManagementConection(path);
-        httpCon.setRequestMethod(method);
-        return httpCon;
     }
 
-    protected 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;
-    }
-
-    protected 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;
-    }
-
-    protected 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();
-    }
-
-    protected void writeJsonRequest(HttpURLConnection connection, Map<String, Object> data) throws JsonGenerationException,
-            JsonMappingException, IOException
-    {
-        ObjectMapper mapper = new ObjectMapper();
-        mapper.writeValue(connection.getOutputStream(), data);
-    }
-
-    protected Map<String, Object> find(String name, Object value, List<Map<String, Object>> data)
+    @Override
+    protected void tearDown() throws Exception
     {
-        for (Map<String, Object> map : data)
+        try
         {
-            Object mapValue = map.get(name);
-            if (value.equals(mapValue))
-            {
-                return map;
-            }
+            super.tearDown();
         }
-        return null;
-    }
-
-    protected Map<String, Object> find(Map<String, Object> searchAttributes, List<Map<String, Object>> data)
-    {
-        for (Map<String, Object> map : data)
+        finally
         {
-            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;
-            }
+            getRestTestHelper().tearDown();
         }
-        return null;
     }
 
-    protected Map<String, Object> getJsonAsSingletonList(String path) throws IOException
-    {
-        List<Map<String, Object>> response = getJsonAsList(path);
-
-        assertNotNull("Response cannot be null", response);
-        assertEquals("Unexpected response", 1, response.size());
-        return response.get(0);
-    }
-
-    protected List<Map<String, Object>> getJsonAsList(String path) throws IOException, JsonParseException,
-            JsonMappingException
+    protected void customizeConfiguration() throws ConfigurationException, IOException
     {
-        HttpURLConnection connection = openManagementConection(path, "GET");
-        connection.connect();
-        List<Map<String, Object>> response = readJsonResponseAsList(connection);
-        return response;
+        setConfigurationProperty("management.enabled", "false");
+        setConfigurationProperty("management.http.enabled", "true");
+        setConfigurationProperty("management.https.enabled", "false");
+        setConfigurationProperty("management.http.port", Integer.toString(_restTestHelper.getHttpPort()));
     }
 
-    protected Map<String, Object> getJsonAsMap(String path) throws IOException
+    public RestTestHelper getRestTestHelper()
     {
-        HttpURLConnection connection = openManagementConection(path, "GET");
-        connection.connect();
-        Map<String, Object> response = readJsonResponseAsMap(connection);
-        return response;
+        return _restTestHelper;
     }
 }

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueRestTest.java?rev=1376968&r1=1376967&r2=1376968&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueRestTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueRestTest.java Fri Aug 24 15:33:00 2012
@@ -80,7 +80,7 @@ public class QueueRestTest extends QpidR
     public void testGetVirtualHostQueues() throws Exception
     {
         String queueName = getTestQueueName();
-        List<Map<String, Object>> queues = getJsonAsList("/rest/queue/test");
+        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);
@@ -88,7 +88,7 @@ public class QueueRestTest extends QpidR
 
         for (String name : expectedQueues)
         {
-            Map<String, Object> queueDetails = find(Queue.NAME, name, queues);
+            Map<String, Object> queueDetails = getRestTestHelper().find(Queue.NAME, name, queues);
             Asserts.assertQueue(name, "standard", queueDetails);
 
             @SuppressWarnings("unchecked")
@@ -96,8 +96,8 @@ public class QueueRestTest extends QpidR
             assertNotNull("Queue bindings are not found", bindings);
             assertEquals("Unexpected number of bindings", 2, bindings.size());
 
-            Map<String, Object> defaultExchangeBinding = find(Binding.EXCHANGE, "<<default>>", bindings);
-            Map<String, Object> directExchangeBinding = find(Binding.EXCHANGE, "amq.direct", bindings);
+            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);
         }
@@ -106,7 +106,7 @@ public class QueueRestTest extends QpidR
     public void testGetByName() throws Exception
     {
         String queueName = getTestQueueName();
-        Map<String, Object> queueDetails = getJsonAsSingletonList("/rest/queue/test/" + queueName);
+        Map<String, Object> queueDetails = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName);
         Asserts.assertQueue(queueName, "standard", queueDetails);
         assertStatistics(queueDetails);
 
@@ -115,8 +115,8 @@ public class QueueRestTest extends QpidR
         assertNotNull("Queue bindings are not found", bindings);
         assertEquals("Unexpected number of bindings", 2, bindings.size());
 
-        Map<String, Object> defaultExchangeBinding = find(Binding.EXCHANGE, "<<default>>", bindings);
-        Map<String, Object> directExchangeBinding = find(Binding.EXCHANGE, "amq.direct", bindings);
+        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);
 
@@ -138,7 +138,7 @@ public class QueueRestTest extends QpidR
             createBinding(bindingName, exchanges[i], queueName);
         }
 
-        Map<String, Object> queueDetails = getJsonAsSingletonList("/rest/queue/test/" + queueName);
+        Map<String, Object> queueDetails = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName);
         Asserts.assertQueue(queueName, "standard", queueDetails);
 
         @SuppressWarnings("unchecked")
@@ -152,14 +152,14 @@ public class QueueRestTest extends QpidR
         for (int i = 0; i < exchanges.length; i++)
         {
             searchAttributes.put(Binding.EXCHANGE, exchanges[i]);
-            Map<String, Object> binding = find(searchAttributes, bindings);
+            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 = openManagementConection(
+        HttpURLConnection connection = getRestTestHelper().openManagementConnection(
                 "/rest/binding/test/" + URLDecoder.decode(exchangeName, "UTF-8") + "/" + queueName + "/" + bindingName,
                 "PUT");
 
@@ -168,7 +168,7 @@ public class QueueRestTest extends QpidR
         bindingData.put(Binding.EXCHANGE, exchangeName);
         bindingData.put(Binding.QUEUE, queueName);
 
-        writeJsonRequest(connection, bindingData);
+        getRestTestHelper().writeJsonRequest(connection, bindingData);
         assertEquals("Unexpected response code", 201, connection.getResponseCode());
 
         connection.disconnect();

Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/RestTestHelper.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/RestTestHelper.java?rev=1376968&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/RestTestHelper.java (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/RestTestHelper.java Fri Aug 24 15:33:00 2012
@@ -0,0 +1,417 @@
+/*
+ * 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();
+            }
+        }
+    }
+}

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslRestTest.java?rev=1376968&r1=1376967&r2=1376968&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslRestTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslRestTest.java Fri Aug 24 15:33:00 2012
@@ -27,7 +27,7 @@ public class SaslRestTest extends QpidRe
 {
     public void testGet() throws Exception
     {
-        Map<String, Object> saslData = getJsonAsMap("/rest/sasl");
+        Map<String, Object> saslData = getRestTestHelper().getJsonAsMap("/rest/sasl");
         assertNotNull("mechanisms attribute is not found", saslData.get("mechanisms"));
 
         @SuppressWarnings("unchecked")

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/StructureRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/StructureRestTest.java?rev=1376968&r1=1376967&r2=1376968&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/StructureRestTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/StructureRestTest.java Fri Aug 24 15:33:00 2012
@@ -28,7 +28,7 @@ public class StructureRestTest extends Q
 
     public void testGet() throws Exception
     {
-        Map<String, Object> structure = getJsonAsMap("/rest/structure");
+        Map<String, Object> structure = getRestTestHelper().getJsonAsMap("/rest/structure");
         assertNotNull("Structure data cannot be null", structure);
         assertNode(structure, "Broker");
 
@@ -46,7 +46,7 @@ public class StructureRestTest extends Q
 
         for (String hostName : EXPECTED_HOSTS)
         {
-            Map<String, Object> host = find("name", hostName, virtualhosts);
+            Map<String, Object> host = getRestTestHelper().find("name", hostName, virtualhosts);
             assertNotNull("Host " + hostName + " is not found ", host);
             assertNode(host, hostName);
 
@@ -55,7 +55,7 @@ public class StructureRestTest extends Q
             assertNotNull("Host " + hostName + " queues are not found ", queues);
             for (String queueName : EXPECTED_QUEUES)
             {
-                Map<String, Object> queue = find("name", queueName, queues);
+                Map<String, Object> queue = getRestTestHelper().find("name", queueName, queues);
                 assertNotNull(hostName + " queue " + queueName + " is not found ", queue);
                 assertNode(queue, queueName);
 
@@ -73,7 +73,7 @@ public class StructureRestTest extends Q
             assertNotNull("Host " + hostName + " exchanges are not found ", exchanges);
             for (String exchangeName : EXPECTED_EXCHANGES)
             {
-                Map<String, Object> exchange = find("name", exchangeName, 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))
@@ -83,7 +83,7 @@ public class StructureRestTest extends Q
                     assertNotNull(hostName + " exchange " + exchangeName + " bindings are not found ", bindings);
                     for (String queueName : EXPECTED_QUEUES)
                     {
-                        Map<String, Object> binding = find("name", queueName, bindings);
+                        Map<String, Object> binding = getRestTestHelper().find("name", queueName, bindings);
                         assertNotNull(hostName + " exchange " + exchangeName + " binding  " + queueName + " is not found", binding);
                         assertNode(binding, queueName);
                     }
@@ -97,11 +97,11 @@ public class StructureRestTest extends Q
             assertNode(aliases.get(0), hostName);
         }
 
-        int[] expectedPorts = { getPort(), getHttpPort() };
+        int[] expectedPorts = { getPort(), getRestTestHelper().getHttpPort() };
         for (int port : expectedPorts)
         {
             String portName = "0.0.0.0:" + port;
-            Map<String, Object> portData = find("name", portName, ports);
+            Map<String, Object> portData = getRestTestHelper().find("name", portName, ports);
             assertNotNull("Port " + portName + " is not found ", portData);
             assertNode(portData, portName);
         }

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/UserRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/UserRestTest.java?rev=1376968&r1=1376967&r2=1376968&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/UserRestTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/UserRestTest.java Fri Aug 24 15:33:00 2012
@@ -20,8 +20,6 @@
  */
 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;
 
@@ -29,9 +27,17 @@ 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 = getJsonAsList("/rest/user");
+        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)
@@ -42,7 +48,7 @@ public class UserRestTest extends QpidRe
 
     public void testGetUserByName() throws Exception
     {
-        List<Map<String, Object>> users = getJsonAsList("/rest/user");
+        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)
@@ -50,7 +56,7 @@ public class UserRestTest extends QpidRe
             assertNotNull("Attribute " + User.ID, user.get(User.ID));
             String userName = (String) user.get(User.NAME);
             assertNotNull("Attribute " + User.NAME, userName);
-            Map<String, Object> userDetails = getJsonAsSingletonList("/rest/user/PrincipalDatabaseAuthenticationManager/"
+            Map<String, Object> userDetails = getRestTestHelper().getJsonAsSingletonList("/rest/user/PrincipalDatabaseAuthenticationManager/"
                     + userName);
             assertUser(userDetails);
             assertEquals("Unexpected user name", userName, userDetails.get(User.NAME));
@@ -60,19 +66,9 @@ public class UserRestTest extends QpidRe
     public void testPut() throws Exception
     {
         String userName = getTestName();
-        HttpURLConnection connection = openManagementConection("/rest/user/PrincipalDatabaseAuthenticationManager/"
-                + userName, "PUT");
-
-        Map<String, Object> userData = new HashMap<String, Object>();
-        userData.put(User.NAME, userName);
-        userData.put(User.PASSWORD, userName);
+        getRestTestHelper().createOrUpdateUser(userName, "newPassword");
 
-        writeJsonRequest(connection, userData);
-        assertEquals("Unexpected response code", 201, connection.getResponseCode());
-
-        connection.disconnect();
-
-        Map<String, Object> userDetails = getJsonAsSingletonList("/rest/user/PrincipalDatabaseAuthenticationManager/"
+        Map<String, Object> userDetails = getRestTestHelper().getJsonAsSingletonList("/rest/user/PrincipalDatabaseAuthenticationManager/"
                 + userName);
         assertUser(userDetails);
         assertEquals("Unexpected user name", userName, userDetails.get(User.NAME));
@@ -80,27 +76,16 @@ public class UserRestTest extends QpidRe
 
     public void testDelete() throws Exception
     {
-        // add user
         String userName = getTestName();
-        HttpURLConnection connection = openManagementConection("/rest/user/PrincipalDatabaseAuthenticationManager/"
-                + userName, "PUT");
+        getRestTestHelper().createOrUpdateUser(userName, "newPassword");
 
-        Map<String, Object> userData = new HashMap<String, Object>();
-        userData.put(User.NAME, userName);
-        userData.put(User.PASSWORD, userName);
-
-        writeJsonRequest(connection, userData);
-        assertEquals("Unexpected response code", 201, connection.getResponseCode());
-        connection.disconnect();
-
-        Map<String, Object> userDetails = getJsonAsSingletonList("/rest/user/PrincipalDatabaseAuthenticationManager/"
+        Map<String, Object> userDetails = getRestTestHelper().getJsonAsSingletonList("/rest/user/PrincipalDatabaseAuthenticationManager/"
                 + userName);
         String id = (String) userDetails.get(User.ID);
 
-        connection = openManagementConection("/rest/user/PrincipalDatabaseAuthenticationManager?id=" + id, "DELETE");
-        connection.connect();
-        assertEquals("Unexpected response code", 200, connection.getResponseCode());
-        List<Map<String, Object>> users = getJsonAsList("/rest/user/PrincipalDatabaseAuthenticationManager/" + userName);
+        getRestTestHelper().removeUserById(id);
+
+        List<Map<String, Object>> users = getRestTestHelper().getJsonAsList("/rest/user/PrincipalDatabaseAuthenticationManager/" + userName);
         assertEquals("User should be deleted", 0, users.size());
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org