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 2015/06/16 16:01:21 UTC
[2/6] qpid-jms git commit: NO-JIRA: initial changes for consolidating
sasl connection handling
NO-JIRA: initial changes for consolidating sasl connection handling
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/78dabd8d
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/78dabd8d
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/78dabd8d
Branch: refs/heads/master
Commit: 78dabd8d4607046d8760c05b57936625a9aac286
Parents: 6b36338
Author: Robert Gemmell <ro...@apache.org>
Authored: Tue Jun 16 10:57:13 2015 +0100
Committer: Robert Gemmell <ro...@apache.org>
Committed: Tue Jun 16 11:03:36 2015 +0100
----------------------------------------------------------------------
.../jms/integration/IntegrationTestFixture.java | 2 +-
.../jms/integration/SaslIntegrationTest.java | 2 +-
.../jms/provider/amqp/AmqpProviderTest.java | 2 +-
.../qpid/jms/test/testpeer/TestAmqpPeer.java | 141 ++++++++++---------
4 files changed, 79 insertions(+), 68 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/78dabd8d/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IntegrationTestFixture.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IntegrationTestFixture.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IntegrationTestFixture.java
index fef76fe..8dd148c 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IntegrationTestFixture.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/IntegrationTestFixture.java
@@ -56,7 +56,7 @@ public class IntegrationTestFixture {
Connection establishConnecton(TestAmqpPeer testPeer, boolean ssl, String optionsString, Symbol[] serverCapabilities, Map<Symbol, Object> serverProperties, boolean setClientId) throws JMSException {
Symbol[] desiredCapabilities = new Symbol[] { AmqpSupport.SOLE_CONNECTION_CAPABILITY };
- testPeer.expectPlainConnect("guest", "guest", desiredCapabilities, serverCapabilities, serverProperties);
+ testPeer.expectSaslPlainConnect("guest", "guest", desiredCapabilities, serverCapabilities, serverProperties);
// Each connection creates a session for managing temporary destinations etc
testPeer.expectBegin(true);
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/78dabd8d/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SaslIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SaslIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SaslIntegrationTest.java
index fc658c9..b31f986 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SaslIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SaslIntegrationTest.java
@@ -93,7 +93,7 @@ public class SaslIntegrationTest extends QpidJmsTestCase {
String user = "user";
String pass = "qwerty123456";
- testPeer.expectPlainConnect(user, pass, null, null);
+ testPeer.expectSaslPlainConnect(user, pass, null, null);
// Each connection creates a session for managing temporary destinations etc
testPeer.expectBegin(true);
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/78dabd8d/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderTest.java
index 0105948..b339ad9 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderTest.java
@@ -156,7 +156,7 @@ public class AmqpProviderTest extends QpidJmsTestCase {
final long REQUEST_TIMEOUT = TimeUnit.SECONDS.toMillis(7);
provider = new AmqpProvider(peerURI);
- testPeer.expectPlainConnect(TEST_USERNAME, TEST_PASSWORD, null, null);
+ testPeer.expectSaslPlainConnect(TEST_USERNAME, TEST_PASSWORD, null, null);
testPeer.expectBegin(true);
provider.connect();
testPeer.expectClose();
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/78dabd8d/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
index efc657b..f29f973 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/test/testpeer/TestAmqpPeer.java
@@ -96,6 +96,7 @@ import org.slf4j.LoggerFactory;
// TODO should expectXXXYYYZZZ methods just be expect(matcher)?
public class TestAmqpPeer implements AutoCloseable
{
+ private static final Symbol PLAIN = Symbol.valueOf("PLAIN");
private static final Logger LOGGER = LoggerFactory.getLogger(TestAmqpPeer.class.getName());
private static final int CONNECTION_CHANNEL = 0;
@@ -364,6 +365,81 @@ public class TestAmqpPeer implements AutoCloseable
return openFrame;
}
+ public void expectSaslConnect(Symbol mechanism, Matcher<Binary> initialResponseMatcher, Symbol[] desiredCapabilities, Symbol[] serverCapabilities, Map<Symbol, Object> serverProperties)
+ {
+ SaslMechanismsFrame saslMechanismsFrame = new SaslMechanismsFrame().setSaslServerMechanisms(mechanism);
+ addHandler(new HeaderHandlerImpl(AmqpHeader.SASL_HEADER, AmqpHeader.SASL_HEADER,
+ new FrameSender(
+ this, FrameType.SASL, 0,
+ saslMechanismsFrame, null)));
+
+ addHandler(new SaslInitMatcher()
+ .withMechanism(equalTo(mechanism))
+ .withInitialResponse(initialResponseMatcher)
+ .onSuccess(new AmqpPeerRunnable()
+ {
+ @Override
+ public void run()
+ {
+ TestAmqpPeer.this.sendFrame(
+ FrameType.SASL, 0,
+ new SaslOutcomeFrame().setCode(UnsignedByte.valueOf((byte)0)),
+ null,
+ false);
+ _driverRunnable.expectHeader();
+ }
+ }));
+
+ addHandler(new HeaderHandlerImpl(AmqpHeader.HEADER, AmqpHeader.HEADER));
+
+ OpenFrame open = createOpenFrame();
+ if(serverCapabilities != null)
+ {
+ open.setOfferedCapabilities(serverCapabilities);
+ }
+
+ if(serverProperties != null)
+ {
+ open.setProperties(serverProperties);
+ }
+
+ OpenMatcher openMatcher = new OpenMatcher()
+ .withContainerId(notNullValue(String.class))
+ .onSuccess(new FrameSender(
+ this, FrameType.AMQP, 0,
+ open,
+ null));
+
+ if (desiredCapabilities != null)
+ {
+ openMatcher.withDesiredCapabilities(arrayContaining(desiredCapabilities));
+ }
+ else
+ {
+ openMatcher.withDesiredCapabilities(nullValue());
+ }
+
+ addHandler(openMatcher);
+ }
+
+ public void expectSaslPlainConnect(String username, String password, Symbol[] serverCapabilities, Map<Symbol, Object> serverProperties)
+ {
+ expectSaslPlainConnect(username, password, new Symbol[] { AmqpSupport.SOLE_CONNECTION_CAPABILITY }, serverCapabilities, serverProperties);
+ }
+
+ public void expectSaslPlainConnect(String username, String password, Symbol[] desiredCapabilities, Symbol[] serverCapabilities, Map<Symbol, Object> serverProperties)
+ {
+ byte[] usernameBytes = username.getBytes();
+ byte[] passwordBytes = password.getBytes();
+ byte[] data = new byte[usernameBytes.length+passwordBytes.length+2];
+ System.arraycopy(usernameBytes, 0, data, 1, usernameBytes.length);
+ System.arraycopy(passwordBytes, 0, data, 2 + usernameBytes.length, passwordBytes.length);
+
+ Matcher<Binary> initialResponseMatcher = equalTo(new Binary(data));
+
+ expectSaslConnect(PLAIN, initialResponseMatcher, desiredCapabilities, serverCapabilities, serverProperties);
+ }
+
public void expectFailingSaslConnect(Symbol[] serverMechs, Symbol clientSelectedMech)
{
SaslMechanismsFrame saslMechanismsFrame = new SaslMechanismsFrame().setSaslServerMechanisms(serverMechs);
@@ -512,71 +588,6 @@ public class TestAmqpPeer implements AutoCloseable
null)));
}
- public void expectPlainConnect(String username, String password, Symbol[] serverCapabilities, Map<Symbol, Object> serverProperties)
- {
- expectPlainConnect(username, password, new Symbol[] { AmqpSupport.SOLE_CONNECTION_CAPABILITY }, serverCapabilities, serverProperties);
- }
-
- public void expectPlainConnect(String username, String password, Symbol[] desiredCapabilities, Symbol[] serverCapabilities, Map<Symbol, Object> serverProperties)
- {
- SaslMechanismsFrame saslMechanismsFrame = new SaslMechanismsFrame().setSaslServerMechanisms(Symbol.valueOf("PLAIN"));
- addHandler(new HeaderHandlerImpl(AmqpHeader.SASL_HEADER, AmqpHeader.SASL_HEADER,
- new FrameSender(
- this, FrameType.SASL, 0,
- saslMechanismsFrame, null)));
-
- byte[] usernameBytes = username.getBytes();
- byte[] passwordBytes = password.getBytes();
- byte[] data = new byte[usernameBytes.length+passwordBytes.length+2];
- System.arraycopy(usernameBytes, 0, data, 1, usernameBytes.length);
- System.arraycopy(passwordBytes, 0, data, 2 + usernameBytes.length, passwordBytes.length);
-
- addHandler(new SaslInitMatcher()
- .withMechanism(equalTo(Symbol.valueOf("PLAIN")))
- .withInitialResponse(equalTo(new Binary(data)))
- .onSuccess(new AmqpPeerRunnable()
- {
- @Override
- public void run()
- {
- TestAmqpPeer.this.sendFrame(
- FrameType.SASL, 0,
- new SaslOutcomeFrame().setCode(UnsignedByte.valueOf((byte)0)),
- null,
- false);
- _driverRunnable.expectHeader();
- }
- }));
-
- addHandler(new HeaderHandlerImpl(AmqpHeader.HEADER, AmqpHeader.HEADER));
-
- OpenFrame open = createOpenFrame();
- if(serverCapabilities != null)
- {
- open.setOfferedCapabilities(serverCapabilities);
- }
-
- if(serverProperties != null)
- {
- open.setProperties(serverProperties);
- }
-
- OpenMatcher openMatcher = new OpenMatcher()
- .withContainerId(notNullValue(String.class))
- .onSuccess(new FrameSender(
- this, FrameType.AMQP, 0,
- open,
- null));
-
- if (desiredCapabilities != null) {
- openMatcher.withDesiredCapabilities(arrayContaining(desiredCapabilities));
- } else {
- openMatcher.withDesiredCapabilities(nullValue());
- }
-
- addHandler(openMatcher);
- }
-
// TODO - Reject any incoming connection using the supplied information
public void rejectConnect(Symbol errorType, String errorMessage, Map<Symbol, Object> errorInfo) {
SaslMechanismsFrame saslMechanismsFrame = new SaslMechanismsFrame().setSaslServerMechanisms(Symbol.valueOf("ANONYMOUS"));
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org