[jboss-cvs] JBoss Messaging SVN: r2927 - trunk/tests/src/org/jboss/test/messaging/jms.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jul 26 00:17:46 EDT 2007
Author: clebert.suconic at jboss.com
Date: 2007-07-26 00:17:46 -0400 (Thu, 26 Jul 2007)
New Revision: 2927
Modified:
trunk/tests/src/org/jboss/test/messaging/jms/SecurityTest.java
trunk/tests/src/org/jboss/test/messaging/jms/XATestBase.java
Log:
http://jira.jboss.com/jira/browse/JBMESSAGING-1019
Modified: trunk/tests/src/org/jboss/test/messaging/jms/SecurityTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/SecurityTest.java 2007-07-25 19:13:28 UTC (rev 2926)
+++ trunk/tests/src/org/jboss/test/messaging/jms/SecurityTest.java 2007-07-26 04:17:46 UTC (rev 2927)
@@ -31,14 +31,13 @@
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.Topic;
-import javax.jms.JMSException;
-import javax.jms.TopicConnection;
-import javax.jms.TopicSession;
-import javax.jms.TopicConnectionFactory;
-import javax.jms.TopicPublisher;
-import javax.jms.DeliveryMode;
+import javax.jms.XAConnection;
+import javax.jms.XAConnectionFactory;
+import javax.jms.XASession;
import javax.management.ObjectName;
-
+import javax.transaction.xa.XAResource;
+import org.jboss.jms.exception.MessagingXAException;
+import org.jboss.jms.tx.MessagingXid;
import org.jboss.logging.Logger;
import org.jboss.messaging.util.XMLUtil;
import org.jboss.test.messaging.tools.ServerManagement;
@@ -444,53 +443,6 @@
}
}
- //TODO - this test doesn't belong here - this should be added to writeDestination()
- public void testTransactedPublish() throws JMSException
- {
-
- TopicConnection conn = null;
-
- try
- {
- conn = ((TopicConnectionFactory)cf).createTopicConnection("nobody", "nobody");
- TopicSession topicSess = conn.createTopicSession(true , Session.AUTO_ACKNOWLEDGE);
- try
- {
- TopicPublisher publisher = topicSess.createPublisher(topic1);
- publisher.publish(topicSess.createTextMessage("test"), DeliveryMode.PERSISTENT, 4, 0l);
- topicSess.commit();
-
- fail("Test didn't throw expected exception");
- }
- catch (JMSSecurityException expected)
- {
- }
-
- try
- {
- MessageProducer prod = topicSess.createPublisher(topic1);
- prod.send(topicSess.createTextMessage("hello"));
- topicSess.commit();
-
- fail("Test didn't throw expected exception");
- }
- catch (JMSSecurityException expected)
- {
- }
- }
- finally
- {
- try
- {
- if (conn!=null) conn.close();
- }
- catch (Throwable ignored)
- {
- }
- }
-
- }
-
/*
* Test invalid durable subscription creation for connection preconfigured with client id
*/
@@ -608,7 +560,9 @@
ServerManagement.setDefaultSecurityConfig(newSecurityConfig);
assertFalse(canReadDestination(conn, queue2));
- assertFalse(canWriteDestination(conn, queue2));
+ // we should only look non transacted, as looking on connection would require the test
+ // to wait 15s (eviction timeout)
+ assertFalse(canWriteDestination(conn, queue2, false));
newSecurityConfig =
"<security><role name=\"def\" read=\"true\" write=\"false\" create=\"false\"/></security>";
@@ -616,7 +570,8 @@
ServerManagement.setDefaultSecurityConfig(newSecurityConfig);
assertTrue(canReadDestination(conn, queue2));
- assertFalse(canWriteDestination(conn, queue2));
+ // to avoid cache evict timeout
+ assertFalse(canWriteDestination(conn, queue2, false));
}
finally
{
@@ -655,7 +610,8 @@
ServerManagement.invoke(on, "start", null, null);
assertFalse(canReadDestination(conn, queue2));
- assertFalse(canWriteDestination(conn, queue2));
+ // non transacted to avoid evict timeout
+ assertFalse(canWriteDestination(conn, queue2, false));
newSecurityConfig =
@@ -666,7 +622,7 @@
ServerManagement.invoke(on, "start", null, null);
assertTrue(canReadDestination(conn, queue2));
- assertFalse(canWriteDestination(conn, queue2));
+ assertFalse(canWriteDestination(conn, queue2, false));
newSecurityConfig =
"<security><role name=\"def\" read=\"true\" write=\"true\" create=\"false\"/></security>";
@@ -676,7 +632,7 @@
ServerManagement.invoke(on, "start", null, null);
assertTrue(canReadDestination(conn, queue2));
- assertTrue(canWriteDestination(conn, queue2));
+ assertTrue(canWriteDestination(conn, queue2, false));
}
finally
{
@@ -716,7 +672,7 @@
ServerManagement.invoke(on, "start", null, null);
assertFalse(canReadDestination(conn, topic2));
- assertFalse(canWriteDestination(conn, topic2));
+ assertFalse(canWriteDestination(conn, topic2, false));
newSecurityConfig =
@@ -727,7 +683,7 @@
ServerManagement.invoke(on, "start", null, null);
assertTrue(canReadDestination(conn, topic2));
- assertFalse(canWriteDestination(conn, topic2));
+ assertFalse(canWriteDestination(conn, topic2, false));
newSecurityConfig =
"<security><role name=\"def\" read=\"true\" write=\"true\" create=\"false\"/></security>";
@@ -737,7 +693,7 @@
ServerManagement.invoke(on, "start", null, null);
assertTrue(canReadDestination(conn, topic2));
- assertTrue(canWriteDestination(conn, topic2));
+ assertTrue(canWriteDestination(conn, topic2, false));
}
finally
{
@@ -769,7 +725,7 @@
ServerManagement.configureSecurityForDestination("Queue2", newSecurityConfig);
assertFalse(canReadDestination(conn, queue2));
- assertFalse(canWriteDestination(conn, queue2));
+ assertFalse(canWriteDestination(conn, queue2, false));
newSecurityConfig =
@@ -778,7 +734,7 @@
ServerManagement.configureSecurityForDestination("Queue2", newSecurityConfig);
assertTrue(canReadDestination(conn, queue2));
- assertFalse(canWriteDestination(conn, queue2));
+ assertFalse(canWriteDestination(conn, queue2, false));
newSecurityConfig =
"<security><role name=\"def\" read=\"true\" write=\"true\" create=\"false\"/></security>";
@@ -786,7 +742,7 @@
ServerManagement.configureSecurityForDestination("Queue2", newSecurityConfig);
assertTrue(canReadDestination(conn, queue2));
- assertTrue(canWriteDestination(conn, queue2));
+ assertTrue(canWriteDestination(conn, queue2, false));
//Now set to null
@@ -798,12 +754,12 @@
ServerManagement.setDefaultSecurityConfig(lockedConf);
assertFalse(canReadDestination(conn, queue2));
- assertFalse(canWriteDestination(conn, queue2));
+ assertFalse(canWriteDestination(conn, queue2, false));
ServerManagement.setDefaultSecurityConfig(defConfig);
assertTrue(canReadDestination(conn, queue2));
- assertTrue(canWriteDestination(conn, queue2));
+ assertTrue(canWriteDestination(conn, queue2, false));
}
finally
{
@@ -836,7 +792,7 @@
ServerManagement.configureSecurityForDestination("Topic2", newSecurityConfig);
assertFalse(canReadDestination(conn, topic2));
- assertFalse(canWriteDestination(conn, topic2));
+ assertFalse(canWriteDestination(conn, topic2, false));
newSecurityConfig =
@@ -845,7 +801,7 @@
ServerManagement.configureSecurityForDestination("Topic2", newSecurityConfig);
assertTrue(canReadDestination(conn, topic2));
- assertFalse(canWriteDestination(conn, topic2));
+ assertFalse(canWriteDestination(conn, topic2, false));
newSecurityConfig =
"<security><role name=\"def\" read=\"true\" write=\"true\" create=\"false\"/></security>";
@@ -853,7 +809,7 @@
ServerManagement.configureSecurityForDestination("Topic2", newSecurityConfig);
assertTrue(canReadDestination(conn, topic2));
- assertTrue(canWriteDestination(conn, topic2));
+ assertTrue(canWriteDestination(conn, topic2, false));
//Now set to null
@@ -865,12 +821,12 @@
ServerManagement.setDefaultSecurityConfig(lockedConf);
assertFalse(canReadDestination(conn, topic2));
- assertFalse(canWriteDestination(conn, topic2));
+ assertFalse(canWriteDestination(conn, topic2, false));
ServerManagement.setDefaultSecurityConfig(defConfig);
assertTrue(canReadDestination(conn, topic2));
- assertTrue(canWriteDestination(conn, topic2));
+ assertTrue(canWriteDestination(conn, topic2, false));
}
finally
{
@@ -992,54 +948,80 @@
}
catch (JMSSecurityException e)
{
- log.trace("Can't read destination");
+ log.trace("Can't read destination", e);
return false;
}
+ finally
+ {
+ sess.close();
+ }
}
-
private boolean canWriteDestination(Connection conn, Destination dest) throws Exception
{
- Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ boolean transacted = canWriteDestination(conn, dest, true);
+ boolean nonTransacted = canWriteDestination(conn, dest, false);
- boolean namedSucceeded = true;
+ return transacted || nonTransacted;
+ }
+
+ private boolean canWriteDestination(Connection conn, Destination dest, boolean transacted) throws Exception
+ {
+ Session sess = conn.createSession(transacted, Session.AUTO_ACKNOWLEDGE);
+
try
{
- MessageProducer prod = sess.createProducer(dest);
- Message m = sess.createTextMessage("Kippers");
- prod.send(m);
- }
- catch (JMSSecurityException e)
- {
- log.trace("Can't write to destination using named producer");
- namedSucceeded = false;
- }
+ boolean namedSucceeded = true;
+ try
+ {
+ MessageProducer prod = sess.createProducer(dest);
+ Message m = sess.createTextMessage("Kippers");
+ prod.send(m);
+ if (transacted)
+ {
+ sess.commit();
+ }
+ }
+ catch (JMSSecurityException e)
+ {
+ log.trace("Can't write to destination using named producer", e);
+ namedSucceeded = false;
+ }
- boolean anonSucceeded = true;
- try
- {
- MessageProducer producerAnon = sess.createProducer(null);
- Message m = sess.createTextMessage("Kippers");
- producerAnon.send(dest, m);
+ boolean anonSucceeded = true;
+ try
+ {
+ MessageProducer producerAnon = sess.createProducer(null);
+ Message m = sess.createTextMessage("Kippers");
+ producerAnon.send(dest, m);
+ if (transacted)
+ {
+ sess.commit();
+ }
+ }
+ catch (JMSSecurityException e)
+ {
+ log.trace("Can't write to destination using named producer", e);
+ anonSucceeded = false;
+ }
+
+ if (namedSucceeded || anonSucceeded)
+ {
+ if (dest instanceof Queue)
+ {
+ String destName = ((Queue)dest).getQueueName();
+ removeAllMessages(destName, true, 0);
+ }
+ }
+
+ log.trace("namedSucceeded:" + namedSucceeded + ", anonSucceeded:" + anonSucceeded);
+ return namedSucceeded || anonSucceeded;
}
- catch (JMSSecurityException e)
+ finally
{
- log.trace("Can't write to destination using named producer");
- anonSucceeded = false;
+ sess.close();
}
-
- if (namedSucceeded || anonSucceeded)
- {
- if (dest instanceof Queue)
- {
- String destName = ((Queue)dest).getQueueName();
- removeAllMessages(destName, true, 0);
- }
- }
- log.trace("namedSucceeded:" + namedSucceeded + ", anonSucceeded:" + anonSucceeded);
- return namedSucceeded || anonSucceeded;
-
}
private boolean canCreateDurableSub(Connection conn, Topic topic, String subName) throws Exception
@@ -1057,7 +1039,6 @@
}
catch (JMSSecurityException e)
{
- log.error(e,e);
log.trace("Can't create durable sub", e);
return false;
}
@@ -1114,6 +1095,66 @@
conn.close();
}
}
+
+ /**
+ * This Validate sending messages on an Queue where the user don't have write authorization
+ * @throws Exception
+ */
+ public void testSecurityOnXA() throws Exception
+ {
+ XAConnection xaconn = null;
+
+ try
+ {
+ XAConnectionFactory xacf = (XAConnectionFactory)cf;
+
+ xaconn = xacf.createXAConnection("nobody", "nobody");
+
+ XASession xasession = xaconn.createXASession();
+
+ MessagingXid xid = new MessagingXid(new byte[]{1}, 1, new byte[]{1});
+
+ XAResource resource = xasession.getXAResource();
+
+ resource.start(xid, XAResource.TMNOFLAGS);
+
+ MessageProducer producer = xasession.createProducer(queue1);
+
+
+ for (int i=0;i<10;i++)
+ {
+ producer.send(xasession.createTextMessage("Test " + i));
+ }
+
+ try
+ {
+ resource.end(xid, XAResource.TMSUCCESS);
+ resource.prepare(xid);
+ fail("Didn't throw expected exception!");
+ }
+ catch (MessagingXAException expected)
+ {
+ }
+ }
+ finally
+ {
+ try
+ {
+ if (xaconn != null)
+ {
+ xaconn.close();
+ }
+ ServerManagement.undeployQueue("MyQueue2");
+ }
+ catch (Throwable ignored)
+ {
+ }
+ }
+ }
+
+
+
+
// Inner classes -------------------------------------------------
Modified: trunk/tests/src/org/jboss/test/messaging/jms/XATestBase.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/XATestBase.java 2007-07-25 19:13:28 UTC (rev 2926)
+++ trunk/tests/src/org/jboss/test/messaging/jms/XATestBase.java 2007-07-26 04:17:46 UTC (rev 2927)
@@ -39,7 +39,6 @@
import javax.jms.XASession;
import javax.management.ObjectName;
import javax.naming.InitialContext;
-import javax.transaction.RollbackException;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
import javax.transaction.xa.XAException;
@@ -3281,72 +3280,6 @@
}
-
- //FIXME - this test doesn't belong here - should be in SecurityTest
- /**
- * This Validate sending messages on an Queue where the user don't have write authorization
- * @throws Exception
- */
- public void testSecurityOnXA() throws Exception
- {
- XAConnection xaconn = null;
-
- Transaction formerTrans = tm.suspend();
- try
- {
- tm.begin();
-
- Transaction trans = tm.getTransaction();
-
- XAConnectionFactory xacf = (XAConnectionFactory)cf;
-
- xaconn = xacf.createXAConnection("nobody", "nobody");
-
- XASession xasession = xaconn.createXASession();
-
- XAResource resouce = xasession.getXAResource();
-
- MessageProducer producer = xasession.createProducer(queue1);
-
- trans.enlistResource(resouce);
-
- for (int i=0;i<10;i++)
- {
- producer.send(xasession.createTextMessage("Test " + i));
- }
-
- trans.delistResource(resouce, XAResource.TMSUCCESS);
-
- try
- {
- trans.commit();
- fail("Didn't throw expected exception!");
- }
- catch (RollbackException expected)
- {
- }
- }
- finally
- {
- try
- {
- if (xaconn != null)
- {
- xaconn.close();
- }
- ServerManagement.undeployQueue("MyQueue2");
- }
- catch (Throwable ignored)
- {
- }
-
- if (formerTrans!=null) tm.resume(formerTrans);
-
- }
- }
-
-
-
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
More information about the jboss-cvs-commits
mailing list