diff options
| author | Alex Rudyy <orudyy@apache.org> | 2015-03-13 09:21:16 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2015-03-13 09:21:16 +0000 |
| commit | 1e7ac2945fbbc185d03e3a1411065b077da80d67 (patch) | |
| tree | 330227e9d4243307df07b1f19f80e23c3b895ce5 /qpid/java/systests/src | |
| parent | 7b2de58298ec526db3025f6e40d032b35ba926c1 (diff) | |
| download | qpid-python-1e7ac2945fbbc185d03e3a1411065b077da80d67.tar.gz | |
QPID-6438: [Java Broker] Extend REST interfaces to result in errors when object already exist on create and when object does not exist on update
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1666380 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/systests/src')
5 files changed, 152 insertions, 52 deletions
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java index e125ddb772..db89f39953 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/RestTestHelper.java @@ -307,7 +307,7 @@ public class RestTestHelper { HttpURLConnection connection = openManagementConnection( "groupmember/" + encodeAsUTF(groupProviderName) + "/"+ encodeAsUTF(groupName) + "/" + encodeAsUTF(memberName), - "POST"); + "PUT"); Map<String, Object> groupMemberData = new HashMap<String, Object>(); // TODO add type @@ -360,7 +360,7 @@ public class RestTestHelper { HttpURLConnection connection = openManagementConnection( "group/" + encodeAsUTF(groupProviderName) + "/"+ encodeAsUTF(groupName), - "POST"); + "PUT"); Map<String, Object> groupData = new HashMap<String, Object>(); writeJsonRequest(connection, groupData); diff --git a/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/GroupRestTest.java b/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/GroupRestTest.java index 4fc5b1a184..d066d106ff 100644 --- a/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/GroupRestTest.java +++ b/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/GroupRestTest.java @@ -74,7 +74,7 @@ public class GroupRestTest extends QpidRestTestCase assertEquals(EXISTING_MEMBER, (String)member1.get(GroupMember.NAME)); } - public void testCreateNewMemberByPut() throws Exception + public void testCreateNewMemberByPutUsingMemberURI() throws Exception { Map<String, Object> group = getRestTestHelper().getJsonAsSingletonList("group/" + FILE_GROUP_MANAGER + "/myGroup"); getRestTestHelper().assertNumberOfGroupMembers(group, 1); @@ -86,19 +86,36 @@ public class GroupRestTest extends QpidRestTestCase assertEquals("Unexpected group name", NEW_MEMBER, member.get(GroupMember.NAME)); } - public void testCreateNewMemberByPost() throws Exception + public void testCreateNewMemberByPostUsingParentURI() throws Exception { Map<String, Object> group = getRestTestHelper().getJsonAsSingletonList("group/" + FILE_GROUP_MANAGER + "/myGroup"); getRestTestHelper().assertNumberOfGroupMembers(group, 1); - String url = "groupmember/" + FILE_GROUP_MANAGER + "/"+ GROUP_NAME + "/" + NEW_MEMBER; - getRestTestHelper().submitRequest(url, "POST", Collections.<String, Object>emptyMap(), HttpServletResponse.SC_CREATED); + String url = "groupmember/" + FILE_GROUP_MANAGER + "/"+ GROUP_NAME; + Map<String, Object> data = Collections.<String, Object>singletonMap("name", NEW_MEMBER); + getRestTestHelper().submitRequest(url, "POST", data, HttpServletResponse.SC_CREATED); - Map<String, Object> member = getRestTestHelper().getJsonAsSingletonList(url); + Map<String, Object> member = getRestTestHelper().getJsonAsSingletonList(url + "/" + NEW_MEMBER); + assertEquals("Unexpected group name", NEW_MEMBER, member.get(GroupMember.NAME)); + + // verify that second creation request fails + getRestTestHelper().submitRequest(url, "POST", data, HttpServletResponse.SC_CONFLICT); + } + + public void testCreateNewMemberByPutUsingParentURI() throws Exception + { + Map<String, Object> group = getRestTestHelper().getJsonAsSingletonList("group/" + FILE_GROUP_MANAGER + "/myGroup"); + getRestTestHelper().assertNumberOfGroupMembers(group, 1); + + String url = "groupmember/" + FILE_GROUP_MANAGER + "/"+ GROUP_NAME; + Map<String, Object> data = Collections.<String, Object>singletonMap("name", NEW_MEMBER); + getRestTestHelper().submitRequest(url, "PUT", data, HttpServletResponse.SC_CREATED); + + Map<String, Object> member = getRestTestHelper().getJsonAsSingletonList(url + "/" + NEW_MEMBER); assertEquals("Unexpected group name", NEW_MEMBER, member.get(GroupMember.NAME)); - // verify that second creation request by POST fails - getRestTestHelper().submitRequest(url, "POST", Collections.<String, Object>emptyMap(), HttpServletResponse.SC_CONFLICT); + // verify that second creation request fails + getRestTestHelper().submitRequest(url, "PUT", data, HttpServletResponse.SC_CONFLICT); } public void testRemoveMemberFromGroup() throws Exception diff --git a/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/UserRestTest.java b/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/UserRestTest.java index 40eda50480..506f39a181 100644 --- a/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/UserRestTest.java +++ b/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/UserRestTest.java @@ -67,7 +67,7 @@ public class UserRestTest extends QpidRestTestCase } } - public void testCreateUserByPut() throws Exception + public void testCreateUserByPutUsingUserURI() throws Exception { String userName = getTestName(); getRestTestHelper().createOrUpdateUser(userName, "newPassword"); @@ -78,17 +78,18 @@ public class UserRestTest extends QpidRestTestCase assertEquals("Unexpected user name", userName, userDetails.get(User.NAME)); } - public void testCreateUserByPost() throws Exception + public void testCreateUserByPostUsingParentURI() throws Exception { String userName = getTestName(); Map<String,Object> userAttributes = new HashMap<>(); userAttributes.put("password", "newPassword"); + userAttributes.put("name", userName); - String url = "user/" + TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER + "/" + userName; + String url = "user/" + TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER; getRestTestHelper().submitRequest(url, "POST", userAttributes, HttpServletResponse.SC_CREATED); - Map<String, Object> userDetails = getRestTestHelper().getJsonAsSingletonList(url); + Map<String, Object> userDetails = getRestTestHelper().getJsonAsSingletonList(url+ "/" + userName); assertUser(userDetails); assertEquals("Unexpected user name", userName, userDetails.get(User.NAME)); @@ -96,6 +97,40 @@ public class UserRestTest extends QpidRestTestCase getRestTestHelper().submitRequest(url, "POST", userAttributes, HttpServletResponse.SC_CONFLICT); } + public void testCreateUserByPutUsingParentURI() throws Exception + { + String userName = getTestName(); + + Map<String,Object> userAttributes = new HashMap<>(); + userAttributes.put("password", "newPassword"); + userAttributes.put("name", userName); + + String url = "user/" + TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER; + getRestTestHelper().submitRequest(url, "PUT", userAttributes, HttpServletResponse.SC_CREATED); + + Map<String, Object> userDetails = getRestTestHelper().getJsonAsSingletonList(url+ "/" + userName); + assertUser(userDetails); + assertEquals("Unexpected user name", userName, userDetails.get(User.NAME)); + + // verify that second create request fails + getRestTestHelper().submitRequest(url, "PUT", userAttributes, HttpServletResponse.SC_CONFLICT); + } + + public void testSetPasswordForNonExistingUserByPostFails() throws Exception + { + String userName = getTestName(); + + Map<String,Object> userAttributes = new HashMap<>(); + userAttributes.put("password", "newPassword"); + userAttributes.put("name", userName); + + String url = "user/" + TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER + "/" + userName; + getRestTestHelper().submitRequest(url, "POST", userAttributes, HttpServletResponse.SC_NOT_FOUND); + + List<Map<String, Object>> userDetails = getRestTestHelper().getJsonAsList(url); + assertTrue("User should not be created", userDetails.isEmpty()); + } + public void testDelete() throws Exception { String userName = getTestName(); diff --git a/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java b/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java index a75d04e2a5..69db2747c7 100644 --- a/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java +++ b/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostNodeRestTest.java @@ -126,23 +126,40 @@ public class VirtualHostNodeRestTest extends QpidRestTestCase assertEquals(newDescription, virtualhostNode.get(VirtualHostNode.DESCRIPTION)); } - public void testCreateVirtualHostNodeByPost() throws Exception + public void testCreateVirtualHostNodeByPostUsingParentURI() throws Exception { String nodeName = getTestName(); Map<String, Object> nodeData = new HashMap<>(); nodeData.put(VirtualHostNode.NAME, nodeName); nodeData.put(VirtualHostNode.TYPE, getTestProfileVirtualHostNodeType()); - String url = "virtualhostnode/" + nodeName; + String url = "virtualhostnode"; getRestTestHelper().submitRequest(url, "POST", nodeData, HttpServletResponse.SC_CREATED); - Map<String, Object> virtualhostNode = getRestTestHelper().getJsonAsSingletonList(url); + Map<String, Object> virtualhostNode = getRestTestHelper().getJsonAsSingletonList(url + "/" + nodeName); Asserts.assertVirtualHostNode(nodeName, virtualhostNode); // verify that second create request fails getRestTestHelper().submitRequest(url, "POST", nodeData, HttpServletResponse.SC_CONFLICT); } + public void testCreateVirtualHostNodeByPutUsingParentURI() throws Exception + { + String nodeName = getTestName(); + Map<String, Object> nodeData = new HashMap<>(); + nodeData.put(VirtualHostNode.NAME, nodeName); + nodeData.put(VirtualHostNode.TYPE, getTestProfileVirtualHostNodeType()); + + String url = "virtualhostnode"; + getRestTestHelper().submitRequest(url, "PUT", nodeData, HttpServletResponse.SC_CREATED); + + Map<String, Object> virtualhostNode = getRestTestHelper().getJsonAsSingletonList(url + "/" + nodeName); + Asserts.assertVirtualHostNode(nodeName, virtualhostNode); + + // verify that second create request fails + getRestTestHelper().submitRequest(url, "PUT", nodeData, HttpServletResponse.SC_CONFLICT); + } + private void createAndDeleteVirtualHostNode(final String virtualhostNodeType, final String nodeName, final File storePathAsFile) throws Exception diff --git a/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java b/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java index 7655601519..15be0c8196 100644 --- a/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java +++ b/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/VirtualHostRestTest.java @@ -31,7 +31,6 @@ import javax.jms.Destination; import javax.jms.Session; import javax.servlet.http.HttpServletResponse; -import org.apache.qpid.server.virtualhost.ProvidedStoreVirtualHostImpl; import org.apache.qpid.client.AMQConnection; import org.apache.qpid.server.model.Exchange; import org.apache.qpid.server.model.Queue; @@ -118,8 +117,8 @@ public class VirtualHostRestTest extends QpidRestTestCase public void testCreateProvidedVirtualHost() throws Exception { - String hostName = getTestName(); - createVirtualHost(hostName, ProvidedStoreVirtualHostImpl.VIRTUAL_HOST_TYPE, "PUT"); + Map<String, Object> requestData = submitVirtualHost(true, "PUT", HttpServletResponse.SC_CREATED); + String hostName = (String)requestData.get(VirtualHost.NAME); Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("virtualhost/" + EMPTY_VIRTUALHOSTNODE_NAME + "/" + hostName); Asserts.assertVirtualHost(hostName, hostDetails); @@ -127,42 +126,53 @@ public class VirtualHostRestTest extends QpidRestTestCase assertNewVirtualHost(hostDetails); } - public void testCreateVirtualHostByPut() throws Exception + public void testCreateVirtualHostByPutUsingParentURI() throws Exception { - String hostName = getTestName(); - String vhnType = getTestProfileVirtualHostNodeType(); - if (JsonVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE.equals(vhnType)) - { - vhnType = DerbyVirtualHostImpl.VIRTUAL_HOST_TYPE; - } - createVirtualHost(hostName, vhnType, "PUT"); - Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("virtualhost/" + EMPTY_VIRTUALHOSTNODE_NAME + "/" + hostName); - Asserts.assertVirtualHost(hostName, hostDetails); + Map<String, Object> data = submitVirtualHost(true, "PUT", HttpServletResponse.SC_CREATED); + String hostName = (String)data.get(VirtualHost.NAME); + String url = "virtualhost/" + EMPTY_VIRTUALHOSTNODE_NAME + "/" + hostName; + Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList(url); + Asserts.assertVirtualHost(hostName, hostDetails); assertNewVirtualHost(hostDetails); + + // verify second create request fails + submitVirtualHost(true, "PUT", HttpServletResponse.SC_CONFLICT); } - public void testCreateVirtualHostByPost() throws Exception + public void testCreateVirtualHostByPostUsingParentURI() throws Exception { - String hostName = getTestName(); - String type = getTestProfileVirtualHostNodeType(); - if (JsonVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE.equals(type)) - { - type = DerbyVirtualHostImpl.VIRTUAL_HOST_TYPE; - } - Map<String, Object> data = new HashMap<>(); - data.put(VirtualHost.NAME, hostName); - data.put(VirtualHost.TYPE, type); - - String url = "virtualhost/" + EMPTY_VIRTUALHOSTNODE_NAME + "/" + hostName; - getRestTestHelper().submitRequest(url, "POST", data, HttpServletResponse.SC_CREATED); + Map<String, Object> data = submitVirtualHost(true, "POST", HttpServletResponse.SC_CREATED); + String hostName = (String)data.get(VirtualHost.NAME); - Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList(url); + Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("virtualhost/" + EMPTY_VIRTUALHOSTNODE_NAME + "/" + hostName); Asserts.assertVirtualHost(hostName, hostDetails); assertNewVirtualHost(hostDetails); // verify second create request fails - getRestTestHelper().submitRequest(url, "POST", data, HttpServletResponse.SC_CONFLICT); + submitVirtualHost(true, "POST", HttpServletResponse.SC_CONFLICT); + } + + public void testCreateVirtualHostByPutUsingVirtualHostURI() throws Exception + { + Map<String, Object> data = submitVirtualHost(false, "PUT", HttpServletResponse.SC_CREATED); + String hostName = (String)data.get(VirtualHost.NAME); + Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("virtualhost/" + EMPTY_VIRTUALHOSTNODE_NAME + "/" + hostName); + Asserts.assertVirtualHost(hostName, hostDetails); + + assertNewVirtualHost(hostDetails); + + // verify VH is updated successfully + submitVirtualHost(false, "PUT", HttpServletResponse.SC_OK); + } + + public void testCreateVirtualHostByPostUsingVirtualHostURI() throws Exception + { + Map<String, Object> data = submitVirtualHost(false, "POST", HttpServletResponse.SC_NOT_FOUND); + + String hostName = (String)data.get(VirtualHost.NAME); + List<Map<String, Object>> hostDetails = getRestTestHelper().getJsonAsList("virtualhost/" + EMPTY_VIRTUALHOSTNODE_NAME + "/" + hostName); + assertTrue("VH should not exist", hostDetails.isEmpty()); } public void testDeleteHost() throws Exception @@ -180,7 +190,17 @@ public class VirtualHostRestTest extends QpidRestTestCase getRestTestHelper().submitRequest("virtualhost/" + TEST1_VIRTUALHOST, "DELETE", HttpServletResponse.SC_CONFLICT); } - public void testMutateAttributes() throws Exception + public void testUpdateByPut() throws Exception + { + assertVirtualHostUpdate("PUT"); + } + + public void testUpdateByPost() throws Exception + { + assertVirtualHostUpdate("PUT"); + } + + private void assertVirtualHostUpdate(String method) throws IOException { String hostToUpdate = TEST3_VIRTUALHOST; String restHostUrl = "virtualhost/" + hostToUpdate + "/" + hostToUpdate; @@ -189,7 +209,7 @@ public class VirtualHostRestTest extends QpidRestTestCase Asserts.assertVirtualHost(hostToUpdate, hostDetails); Map<String, Object> newAttributes = Collections.<String, Object>singletonMap(VirtualHost.DESCRIPTION, "This is a virtual host"); - getRestTestHelper().submitRequest(restHostUrl, "PUT", newAttributes, HttpServletResponse.SC_OK); + getRestTestHelper().submitRequest(restHostUrl, method, newAttributes, HttpServletResponse.SC_OK); Map<String, Object> rereadHostDetails = getRestTestHelper().getJsonAsSingletonList(restHostUrl); Asserts.assertVirtualHost(hostToUpdate, rereadHostDetails); @@ -598,17 +618,28 @@ public class VirtualHostRestTest extends QpidRestTestCase return getRestTestHelper().submitRequest("queue/test/test/" + queueName, "PUT", queueData); } - private void createVirtualHost(final String virtualHostName, - final String virtualHostType, String method) throws IOException + private Map<String, Object> submitVirtualHost(boolean useParentURI, String method, int statusCode) throws IOException { + String hostName = getTestName(); + String type = getTestProfileVirtualHostNodeType(); + if (JsonVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE.equals(type)) + { + type = DerbyVirtualHostImpl.VIRTUAL_HOST_TYPE; + } Map<String, Object> virtualhostData = new HashMap<>(); - virtualhostData.put(VirtualHost.NAME, virtualHostName); - virtualhostData.put(VirtualHost.TYPE, virtualHostType); + virtualhostData.put(VirtualHost.NAME, hostName); + virtualhostData.put(VirtualHost.TYPE, type); - getRestTestHelper().submitRequest("virtualhost/" + EMPTY_VIRTUALHOSTNODE_NAME + "/" + virtualHostName, + String url = "virtualhost/" + EMPTY_VIRTUALHOSTNODE_NAME; + if (!useParentURI) + { + url += "/" + hostName; + } + getRestTestHelper().submitRequest(url, method, virtualhostData, - HttpServletResponse.SC_CREATED); + statusCode); + return virtualhostData; } private void assertNewVirtualHost(Map<String, Object> hostDetails) |
