diff options
| author | Alex Rudyy <orudyy@apache.org> | 2013-05-04 22:17:08 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2013-05-04 22:17:08 +0000 |
| commit | 1c29cea5e195a651a028e677dfe551bc6773c18b (patch) | |
| tree | 38c5c07aa043f57aef10d586be227caf56cbfea5 /java/systests | |
| parent | 9899f29d97cc325b1be846b0eb450387a68d2a57 (diff) | |
| download | qpid-python-1c29cea5e195a651a028e677dfe551bc6773c18b.tar.gz | |
QPID-4813: Protect operations to update queue and exchange attributes with ACL
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1479200 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/systests')
5 files changed, 504 insertions, 0 deletions
diff --git a/java/systests/src/main/java/org/apache/qpid/systest/rest/BindingRestTest.java b/java/systests/src/main/java/org/apache/qpid/systest/rest/BindingRestTest.java index 372db8f560..9a57429062 100644 --- a/java/systests/src/main/java/org/apache/qpid/systest/rest/BindingRestTest.java +++ b/java/systests/src/main/java/org/apache/qpid/systest/rest/BindingRestTest.java @@ -127,4 +127,25 @@ public class BindingRestTest extends QpidRestTestCase Asserts.assertBinding(bindingName, "queue", "amq.direct", binding); } + public void testSetBindingAttributesUnsupported() throws Exception + { + String bindingName = getTestName(); + Map<String, Object> attributes = new HashMap<String, Object>(); + attributes.put(Binding.NAME, bindingName); + attributes.put(Binding.QUEUE, "queue"); + attributes.put(Binding.EXCHANGE, "amq.direct"); + + int responseCode = getRestTestHelper().submitRequest("/rest/binding/test/amq.direct/queue/" + bindingName, "PUT", attributes); + 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); + + attributes.put(Binding.ID, binding.get(Binding.ID)); + attributes.put(Binding.ARGUMENTS, null); + + responseCode = getRestTestHelper().submitRequest("/rest/binding/test/amq.direct/queue/" + bindingName, "PUT", attributes); + assertEquals("Update should be unsupported", 409, responseCode); + } } diff --git a/java/systests/src/main/java/org/apache/qpid/systest/rest/ExchangeRestTest.java b/java/systests/src/main/java/org/apache/qpid/systest/rest/ExchangeRestTest.java index ec9791db13..1da1c6394e 100644 --- a/java/systests/src/main/java/org/apache/qpid/systest/rest/ExchangeRestTest.java +++ b/java/systests/src/main/java/org/apache/qpid/systest/rest/ExchangeRestTest.java @@ -21,6 +21,7 @@ package org.apache.qpid.systest.rest; import java.net.URLDecoder; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -62,6 +63,26 @@ public class ExchangeRestTest extends QpidRestTestCase } } + public void testSetExchangeAttributesUnsupported() throws Exception + { + String exchangeName = getTestName(); + + Map<String, Object> attributes = new HashMap<String, Object>(); + attributes.put(Exchange.NAME, exchangeName); + attributes.put(Exchange.TYPE, "direct"); + int responseCode =getRestTestHelper().submitRequest("/rest/exchange/test/" + exchangeName, "PUT", attributes); + + Map<String, Object> exchange = getRestTestHelper().getJsonAsSingletonList("/rest/exchange/test/" + exchangeName); + assertNotNull("Exchange not found", exchange); + + attributes = new HashMap<String, Object>(); + attributes.put(Exchange.NAME, exchangeName); + attributes.put(Exchange.ALTERNATE_EXCHANGE, "my-alternate-exchange"); + + responseCode = getRestTestHelper().submitRequest("/rest/exchange/test/" + exchangeName, "PUT", attributes); + assertEquals("Exchange update should be unsupported", 409, responseCode); + } + private void assertExchange(String exchangeName, Map<String, Object> exchange) { assertNotNull("Exchange with name " + exchangeName + " is not found", exchange); diff --git a/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java b/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java index 1f441e7cbb..d6eae154cf 100644 --- a/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java +++ b/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java @@ -127,6 +127,44 @@ public class QueueRestTest extends QpidRestTestCase assertConsumer(consumers.get(0)); } + public void testUpdateQueue() throws Exception + { + String queueName = getTestName(); + + Map<String, Object> attributes = new HashMap<String, Object>(); + attributes.put(Queue.NAME, queueName); + + int responseCode = getRestTestHelper().submitRequest("/rest/queue/test/" + queueName, "PUT", attributes); + + Map<String, Object> queueDetails = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName); + Asserts.assertQueue(queueName, "standard", queueDetails); + + attributes = new HashMap<String, Object>(); + attributes.put(Queue.NAME, queueName); + attributes.put(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, 100000); + attributes.put(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, 80000); + attributes.put(Queue.ALERT_REPEAT_GAP, 10000); + attributes.put(Queue.ALERT_THRESHOLD_MESSAGE_AGE, 20000); + attributes.put(Queue.ALERT_THRESHOLD_MESSAGE_SIZE, 30000); + attributes.put(Queue.ALERT_THRESHOLD_QUEUE_DEPTH_BYTES, 40000); + attributes.put(Queue.ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, 50000); + attributes.put(Queue.MAXIMUM_DELIVERY_ATTEMPTS, 10); + attributes.put(Queue.EXCLUSIVE, true); + + responseCode = getRestTestHelper().submitRequest("/rest/queue/test/" + queueName, "PUT", attributes); + assertEquals("Setting of queue attribites should be allowed", 200, responseCode); + + Map<String, Object> queueData = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName); + assertEquals("Unexpected " + Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, 100000, queueData.get(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES) ); + assertEquals("Unexpected " + Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, 80000, queueData.get(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES) ); + assertEquals("Unexpected " + Queue.ALERT_REPEAT_GAP, 10000, queueData.get(Queue.ALERT_REPEAT_GAP) ); + assertEquals("Unexpected " + Queue.ALERT_THRESHOLD_MESSAGE_AGE, 20000, queueData.get(Queue.ALERT_THRESHOLD_MESSAGE_AGE) ); + assertEquals("Unexpected " + Queue.ALERT_THRESHOLD_MESSAGE_SIZE, 30000, queueData.get(Queue.ALERT_THRESHOLD_MESSAGE_SIZE) ); + assertEquals("Unexpected " + Queue.ALERT_THRESHOLD_QUEUE_DEPTH_BYTES, 40000, queueData.get(Queue.ALERT_THRESHOLD_QUEUE_DEPTH_BYTES) ); + assertEquals("Unexpected " + Queue.ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, 50000, queueData.get(Queue.ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES) ); + assertEquals("Unexpected " + Queue.EXCLUSIVE, true, queueData.get(Queue.EXCLUSIVE) ); + } + public void testPutCreateBinding() throws Exception { String queueName = getTestQueueName(); diff --git a/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/ExchangeRestACLTest.java b/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/ExchangeRestACLTest.java new file mode 100644 index 0000000000..b39d994198 --- /dev/null +++ b/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/ExchangeRestACLTest.java @@ -0,0 +1,235 @@ +/* + * + * 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.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.configuration.ConfigurationException; +import org.apache.qpid.server.management.plugin.HttpManagement; +import org.apache.qpid.server.model.Binding; +import org.apache.qpid.server.model.Exchange; +import org.apache.qpid.server.security.acl.AbstractACLTestCase; +import org.apache.qpid.systest.rest.QpidRestTestCase; +import org.apache.qpid.test.utils.TestBrokerConfiguration; +import org.codehaus.jackson.JsonGenerationException; +import org.codehaus.jackson.map.JsonMappingException; + +public class ExchangeRestACLTest extends QpidRestTestCase +{ + private static final String ALLOWED_USER = "user1"; + private static final String DENIED_USER = "user2"; + + @Override + protected void customizeConfiguration() throws ConfigurationException, IOException + { + super.customizeConfiguration(); + getRestTestHelper().configureTemporaryPasswordFile(this, ALLOWED_USER, DENIED_USER); + + AbstractACLTestCase.writeACLFileUtil(this, null, + "ACL ALLOW-LOG ALL ACCESS MANAGEMENT", + "ACL ALLOW-LOG " + ALLOWED_USER + " CREATE EXCHANGE", + "ACL DENY-LOG " + DENIED_USER + " CREATE EXCHANGE", + "ACL ALLOW-LOG " + ALLOWED_USER + " UPDATE EXCHANGE", + "ACL DENY-LOG " + DENIED_USER + " UPDATE EXCHANGE", + "ACL ALLOW-LOG " + ALLOWED_USER + " DELETE EXCHANGE", + "ACL DENY-LOG " + DENIED_USER + " DELETE EXCHANGE", + "ACL ALLOW-LOG " + ALLOWED_USER + " BIND EXCHANGE", + "ACL DENY-LOG " + DENIED_USER + " BIND EXCHANGE", + "ACL ALLOW-LOG " + ALLOWED_USER + " UNBIND EXCHANGE", + "ACL DENY-LOG " + DENIED_USER + " UNBIND EXCHANGE", + "ACL DENY-LOG ALL ALL"); + + getBrokerConfiguration().setObjectAttribute(TestBrokerConfiguration.ENTRY_NAME_HTTP_MANAGEMENT, + HttpManagement.HTTP_BASIC_AUTHENTICATION_ENABLED, true); + } + + public void testCreateExchangeAllowed() throws Exception + { + getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); + + String exchangeName = getTestName(); + + int responseCode = createExchange(exchangeName); + assertEquals("Exchange creation should be allowed", 201, responseCode); + + assertExchangeExists(exchangeName); + } + + public void testCreateExchangeDenied() throws Exception + { + getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); + + String exchangeName = getTestName(); + + int responseCode = createExchange(exchangeName); + assertEquals("Exchange creation should be denied", 403, responseCode); + + assertExchangeDoesNotExist(exchangeName); + } + + public void testDeleteExchangeAllowed() throws Exception + { + getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); + + String exchangeName = getTestName(); + + int responseCode = createExchange(exchangeName); + assertEquals("Exchange creation should be allowed", 201, responseCode); + + assertExchangeExists(exchangeName); + + responseCode = getRestTestHelper().submitRequest("/rest/exchange/test/" + exchangeName, "DELETE", null); + assertEquals("Exchange deletion should be allowed", 200, responseCode); + + assertExchangeDoesNotExist(TEST2_VIRTUALHOST); + } + + public void testDeleteExchangeDenied() throws Exception + { + getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); + + String exchangeName = getTestName(); + + int responseCode = createExchange(exchangeName); + assertEquals("Exchange creation should be allowed", 201, responseCode); + + assertExchangeExists(exchangeName); + + getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); + responseCode = getRestTestHelper().submitRequest("/rest/exchange/test/" + exchangeName, "DELETE", null); + assertEquals("Exchange deletion should be denied", 403, responseCode); + + assertExchangeExists(exchangeName); + } + + public void testSetExchangeAttributesAllowed() throws Exception + { + getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); + + String exchangeName = getTestName(); + + int responseCode = createExchange(exchangeName); + + assertExchangeExists(exchangeName); + + Map<String, Object> attributes = new HashMap<String, Object>(); + attributes.put(Exchange.NAME, exchangeName); + attributes.put(Exchange.ALTERNATE_EXCHANGE, "my-alternate-exchange"); + + responseCode = getRestTestHelper().submitRequest("/rest/exchange/test/" + exchangeName, "PUT", attributes); + assertEquals("Setting of exchange attribites should be allowed but it is currently unsupported", 409, responseCode); + } + + public void testSetExchangeAttributesDenied() throws Exception + { + getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); + + String exchangeName = getTestName(); + + int responseCode = createExchange(exchangeName); + assertExchangeExists(exchangeName); + + getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); + + Map<String, Object> attributes = new HashMap<String, Object>(); + attributes.put(Exchange.NAME, exchangeName); + attributes.put(Exchange.ALTERNATE_EXCHANGE, "my-alternate-exchange"); + + responseCode = getRestTestHelper().submitRequest("/rest/exchange/test/" + exchangeName, "PUT", attributes); + assertEquals("Setting of exchange attribites should be allowed", 403, responseCode); + } + + public void testBindToExchangeAllowed() throws Exception + { + getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); + + String bindingName = getTestName(); + int responseCode = createBinding(bindingName); + assertEquals("Binding creation should be allowed", 201, responseCode); + + assertBindingExists(bindingName); + } + + public void testBindToExchangeDenied() throws Exception + { + getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); + + String bindingName = getTestName(); + int responseCode = createBinding(bindingName); + assertEquals("Binding creation should be denied", 403, responseCode); + + assertBindingDoesNotExist(bindingName); + } + + private int createExchange(String exchangeName) throws Exception + { + Map<String, Object> attributes = new HashMap<String, Object>(); + attributes.put(Exchange.NAME, exchangeName); + attributes.put(Exchange.TYPE, "direct"); + return getRestTestHelper().submitRequest("/rest/exchange/test/" + exchangeName, "PUT", attributes); + } + + private void assertExchangeDoesNotExist(String exchangeName) throws Exception + { + assertExchangeExistence(exchangeName, false); + } + + private void assertExchangeExists(String exchangeName) throws Exception + { + assertExchangeExistence(exchangeName, true); + } + + private void assertExchangeExistence(String exchangeName, boolean exists) throws Exception + { + List<Map<String, Object>> exchanges = getRestTestHelper().getJsonAsList("/rest/exchange/test/" + exchangeName); + assertEquals("Unexpected result", exists, !exchanges.isEmpty()); + } + + private int createBinding(String bindingName) throws IOException, JsonGenerationException, JsonMappingException + { + Map<String, Object> attributes = new HashMap<String, Object>(); + attributes.put(Binding.NAME, bindingName); + attributes.put(Binding.QUEUE, "queue"); + attributes.put(Binding.EXCHANGE, "amq.direct"); + + int responseCode = getRestTestHelper().submitRequest("/rest/binding/test/amq.direct/queue/" + bindingName, "PUT", attributes); + return responseCode; + } + + private void assertBindingDoesNotExist(String bindingName) throws Exception + { + assertBindingExistence(bindingName, false); + } + + private void assertBindingExists(String bindingName) throws Exception + { + assertBindingExistence(bindingName, true); + } + + private void assertBindingExistence(String bindingName, boolean exists) throws Exception + { + List<Map<String, Object>> bindings = getRestTestHelper().getJsonAsList("/rest/binding/test/amq.direct/queue/" + bindingName); + assertEquals("Unexpected result", exists, !bindings.isEmpty()); + } +} diff --git a/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/QueueRestACLTest.java b/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/QueueRestACLTest.java new file mode 100644 index 0000000000..b187ca955a --- /dev/null +++ b/java/systests/src/main/java/org/apache/qpid/systest/rest/acl/QueueRestACLTest.java @@ -0,0 +1,189 @@ +/* + * + * 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.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.configuration.ConfigurationException; +import org.apache.qpid.server.management.plugin.HttpManagement; +import org.apache.qpid.server.model.Queue; +import org.apache.qpid.server.security.acl.AbstractACLTestCase; +import org.apache.qpid.systest.rest.QpidRestTestCase; +import org.apache.qpid.test.utils.TestBrokerConfiguration; + +public class QueueRestACLTest extends QpidRestTestCase +{ + private static final String ALLOWED_USER = "user1"; + private static final String DENIED_USER = "user2"; + + @Override + protected void customizeConfiguration() throws ConfigurationException, IOException + { + super.customizeConfiguration(); + getRestTestHelper().configureTemporaryPasswordFile(this, ALLOWED_USER, DENIED_USER); + + AbstractACLTestCase.writeACLFileUtil(this, null, + "ACL ALLOW-LOG ALL ACCESS MANAGEMENT", + "ACL ALLOW-LOG " + ALLOWED_USER + " CREATE QUEUE", + "ACL DENY-LOG " + DENIED_USER + " CREATE QUEUE", + "ACL ALLOW-LOG " + ALLOWED_USER + " UPDATE QUEUE", + "ACL DENY-LOG " + DENIED_USER + " UPDATE QUEUE", + "ACL ALLOW-LOG " + ALLOWED_USER + " DELETE QUEUE", + "ACL DENY-LOG " + DENIED_USER + " DELETE QUEUE", + "ACL DENY-LOG ALL ALL"); + + getBrokerConfiguration().setObjectAttribute(TestBrokerConfiguration.ENTRY_NAME_HTTP_MANAGEMENT, + HttpManagement.HTTP_BASIC_AUTHENTICATION_ENABLED, true); + } + + public void testCreateQueueAllowed() throws Exception + { + getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); + + String queueName = getTestName(); + + int responseCode = createQueue(queueName); + assertEquals("Queue creation should be allowed", 201, responseCode); + + assertQueueExists(queueName); + } + + public void testCreateQueueDenied() throws Exception + { + getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); + + String queueName = getTestName(); + + int responseCode = createQueue(queueName); + assertEquals("Queue creation should be denied", 403, responseCode); + + assertQueueDoesNotExist(queueName); + } + + public void testDeleteQueueAllowed() throws Exception + { + getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); + + String queueName = getTestName(); + + int responseCode = createQueue(queueName); + assertEquals("Queue creation should be allowed", 201, responseCode); + + assertQueueExists(queueName); + + responseCode = getRestTestHelper().submitRequest("/rest/queue/test/" + queueName, "DELETE", null); + assertEquals("Queue deletion should be allowed", 200, responseCode); + + assertQueueDoesNotExist(TEST2_VIRTUALHOST); + } + + public void testDeleteQueueDenied() throws Exception + { + getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); + + String queueName = getTestName(); + + int responseCode = createQueue(queueName); + assertEquals("Queue creation should be allowed", 201, responseCode); + + assertQueueExists(queueName); + + getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); + responseCode = getRestTestHelper().submitRequest("/rest/queue/test/" + queueName, "DELETE", null); + assertEquals("Queue deletion should be denied", 403, responseCode); + + assertQueueExists(queueName); + } + + public void testSetQueueAttributesAllowed() throws Exception + { + getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); + + String queueName = getTestName(); + + int responseCode = createQueue(queueName); + + assertQueueExists(queueName); + + Map<String, Object> attributes = new HashMap<String, Object>(); + attributes.put(Queue.NAME, queueName); + attributes.put(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, 100000); + attributes.put(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, 80000); + + responseCode = getRestTestHelper().submitRequest("/rest/queue/test/" + queueName, "PUT", attributes); + assertEquals("Setting of queue attribites should be allowed", 200, responseCode); + + Map<String, Object> queueData = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName); + assertEquals("Unexpected " + Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, 100000, queueData.get(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES) ); + assertEquals("Unexpected " + Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, 80000, queueData.get(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES) ); + } + + public void testSetQueueAttributesDenied() throws Exception + { + getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER); + + String queueName = getTestName(); + + int responseCode = createQueue(queueName); + assertQueueExists(queueName); + + getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER); + + Map<String, Object> attributes = new HashMap<String, Object>(); + attributes.put(Queue.NAME, queueName); + attributes.put(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, 100000); + attributes.put(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, 80000); + + responseCode = getRestTestHelper().submitRequest("/rest/queue/test/" + queueName, "PUT", attributes); + assertEquals("Setting of queue attribites should be allowed", 403, responseCode); + + Map<String, Object> queueData = getRestTestHelper().getJsonAsSingletonList("/rest/queue/test/" + queueName); + assertEquals("Unexpected " + Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, 0, queueData.get(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES) ); + assertEquals("Unexpected " + Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, 0, queueData.get(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES) ); + } + + private int createQueue(String queueName) throws Exception + { + Map<String, Object> attributes = new HashMap<String, Object>(); + attributes.put(Queue.NAME, queueName); + + return getRestTestHelper().submitRequest("/rest/queue/test/" + queueName, "PUT", attributes); + } + + private void assertQueueDoesNotExist(String queueName) throws Exception + { + assertQueueExistence(queueName, false); + } + + private void assertQueueExists(String queueName) throws Exception + { + assertQueueExistence(queueName, true); + } + + private void assertQueueExistence(String queueName, boolean exists) throws Exception + { + List<Map<String, Object>> queues = getRestTestHelper().getJsonAsList("/rest/queue/test/" + queueName); + assertEquals("Unexpected result", exists, !queues.isEmpty()); + } +} |
