You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2013/05/28 19:43:07 UTC

svn commit: r1487018 - in /activemq/trunk: activemq-client/src/main/java/org/apache/activemq/filter/PropertyExpression.java activemq-unit-tests/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveWithEmbeddedBrokerAndUserIDTest.java

Author: tabish
Date: Tue May 28 17:43:07 2013
New Revision: 1487018

URL: http://svn.apache.org/r1487018
Log:
fix and test for: https://issues.apache.org/jira/browse/AMQ-4542

Modified:
    activemq/trunk/activemq-client/src/main/java/org/apache/activemq/filter/PropertyExpression.java
    activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveWithEmbeddedBrokerAndUserIDTest.java

Modified: activemq/trunk/activemq-client/src/main/java/org/apache/activemq/filter/PropertyExpression.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-client/src/main/java/org/apache/activemq/filter/PropertyExpression.java?rev=1487018&r1=1487017&r2=1487018&view=diff
==============================================================================
--- activemq/trunk/activemq-client/src/main/java/org/apache/activemq/filter/PropertyExpression.java (original)
+++ activemq/trunk/activemq-client/src/main/java/org/apache/activemq/filter/PropertyExpression.java Tue May 28 17:43:07 2013
@@ -138,6 +138,13 @@ public class PropertyExpression implemen
                 return message.getGroupID();
             }
         });
+        JMS_PROPERTY_EXPRESSIONS.put("JMSXUserID", new SubExpression() {
+
+            @Override
+            public Object evaluate(Message message) {
+                return message.getUserID();
+            }
+        });
         JMS_PROPERTY_EXPRESSIONS.put("JMSXGroupSeq", new SubExpression() {
 
             @Override

Modified: activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveWithEmbeddedBrokerAndUserIDTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveWithEmbeddedBrokerAndUserIDTest.java?rev=1487018&r1=1487017&r2=1487018&view=diff
==============================================================================
--- activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveWithEmbeddedBrokerAndUserIDTest.java (original)
+++ activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveWithEmbeddedBrokerAndUserIDTest.java Tue May 28 17:43:07 2013
@@ -16,7 +16,6 @@
  */
 package org.apache.activemq.test;
 
-import java.util.Iterator;
 import java.util.List;
 
 import javax.jms.JMSException;
@@ -24,39 +23,54 @@ import javax.jms.Message;
 
 import org.apache.activemq.ActiveMQConnectionFactory;
 import org.apache.activemq.broker.BrokerService;
-import org.apache.activemq.security.SimpleSecurityBrokerSystemTest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * 
+ *
  */
 public class JmsTopicSendReceiveWithEmbeddedBrokerAndUserIDTest extends JmsTopicSendReceiveWithTwoConnectionsAndEmbeddedBrokerTest {
     private static final Logger LOG = LoggerFactory.getLogger(JmsTopicSendReceiveWithEmbeddedBrokerAndUserIDTest.class);
 
     protected String userName = "James";
 
+    @Override
     protected ActiveMQConnectionFactory createConnectionFactory() throws Exception {
         ActiveMQConnectionFactory answer = super.createConnectionFactory();
         answer.setUserName(userName);
         return answer;
     }
 
+    @Override
     protected void configureBroker(BrokerService answer) throws Exception {
         answer.setPopulateJMSXUserID(true);
         super.configureBroker(answer);
     }
 
-    protected void assertMessagesReceivedAreValid(List receivedMessages) throws JMSException {
+    @Override
+    protected void assertMessagesReceivedAreValid(List<Message> receivedMessages) throws JMSException {
         super.assertMessagesReceivedAreValid(receivedMessages);
 
         // lets assert that the user ID is set
-        for (Iterator iter = receivedMessages.iterator(); iter.hasNext();) {
-            Message message = (Message)iter.next();
+        for (Message message : receivedMessages) {
             String userID = message.getStringProperty("JMSXUserID");
-
             LOG.info("Received message with userID: " + userID);
+            assertEquals("JMSXUserID header", userName, userID);
+        }
+    }
 
+    protected void assertMessagesAreReceived2() throws JMSException {
+        waitForMessagesToBeDelivered();
+        assertMessagesReceivedAreValid2(messages);
+    }
+
+    protected void assertMessagesReceivedAreValid2(List<Message> receivedMessages) throws JMSException {
+        super.assertMessagesReceivedAreValid(receivedMessages);
+
+        // lets assert that the user ID is set
+        for (Message message : receivedMessages) {
+            String userID = (String) message.getObjectProperty("JMSXUserID");
+            LOG.info("Received message with userID: " + userID);
             assertEquals("JMSXUserID header", userName, userID);
         }
     }
@@ -77,4 +91,21 @@ public class JmsTopicSendReceiveWithEmbe
         assertMessagesAreReceived();
         LOG.info("" + data.length + " messages(s) received, closing down connections");
     }
+
+    public void testSpoofedJMSXUserIdIsIgnoredAsObjectProperty() throws Exception {
+        Thread.sleep(1000);
+        messages.clear();
+
+        for (int i = 0; i < data.length; i++) {
+            Message message = createMessage(i);
+            configureMessage(message);
+            message.setStringProperty("JMSXUserID", "spoofedId");
+            if (verbose) {
+                LOG.info("About to send a message: " + message + " with text: " + data[i]);
+            }
+            sendMessage(i, message);
+        }
+        assertMessagesAreReceived2();
+        LOG.info("" + data.length + " messages(s) received, closing down connections");
+    }
 }