This is an automated email from the ASF dual-hosted git repository.

tabish pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-protonj2.git


The following commit(s) were added to refs/heads/main by this push:
     new b3f467df PROTON-2698 Add extra test scripting APIs for SASL connects
b3f467df is described below

commit b3f467df30dca72e4215df7bbb8b1eeb3efadeec
Author: Timothy Bish <[email protected]>
AuthorDate: Tue Mar 28 17:06:30 2023 -0400

    PROTON-2698 Add extra test scripting APIs for SASL connects
    
    Adds scripting for SASL connects that allows lists of mechanisms to be
    provided.
---
 .../qpid/protonj2/client/impl/ConnectionTest.java  |  2 +-
 .../qpid/protonj2/test/driver/ScriptWriter.java    | 54 +++++++++++++++++++++-
 2 files changed, 54 insertions(+), 2 deletions(-)

diff --git 
a/protonj2-client/src/test/java/org/apache/qpid/protonj2/client/impl/ConnectionTest.java
 
b/protonj2-client/src/test/java/org/apache/qpid/protonj2/client/impl/ConnectionTest.java
index a506cd74..38973302 100644
--- 
a/protonj2-client/src/test/java/org/apache/qpid/protonj2/client/impl/ConnectionTest.java
+++ 
b/protonj2-client/src/test/java/org/apache/qpid/protonj2/client/impl/ConnectionTest.java
@@ -358,7 +358,7 @@ public class ConnectionTest extends 
ImperativeClientTestCase {
     @Test
     public void testCreateConnectionWithCredentialsChoosesSASLPlainIfOffered() 
throws Exception {
         try (ProtonTestServer peer = new 
ProtonTestServer(testServerOptions())) {
-            peer.expectSASLPlainConnect("user", "pass");
+            peer.expectSASLPlainConnect("user", "pass", "PLAIN", "ANONYMOUS");
             peer.expectOpen().respond();
             peer.expectClose().respond();
             peer.start();
diff --git 
a/protonj2-test-driver/src/main/java/org/apache/qpid/protonj2/test/driver/ScriptWriter.java
 
b/protonj2-test-driver/src/main/java/org/apache/qpid/protonj2/test/driver/ScriptWriter.java
index 38d3a019..b620100f 100644
--- 
a/protonj2-test-driver/src/main/java/org/apache/qpid/protonj2/test/driver/ScriptWriter.java
+++ 
b/protonj2-test-driver/src/main/java/org/apache/qpid/protonj2/test/driver/ScriptWriter.java
@@ -330,6 +330,30 @@ public abstract class ScriptWriter {
      * header to arrive and a header response will be sent.
      */
     public void expectSASLAnonymousConnect() {
+        expectSASLAnonymousConnect("ANONYMOUS");
+    }
+
+    /**
+     * Creates all the scripted elements needed for a successful SASL Anonymous
+     * connection. The provided set of mechanisms must contain the anonymous 
SASL
+     * mechanism or an exception is thrown as otherwise the premise of this 
test
+     * method could not be met.
+     * <p>
+     * For this exchange the SASL header is expected which is responded to 
with the
+     * corresponding SASL header and an immediate SASL mechanisms frame that 
only
+     * advertises anonymous as the mechanism.  It is expected that the remote 
will
+     * send a SASL init with the anonymous mechanism selected and the outcome 
is
+     * predefined as success.  Once done the expectation is added for the AMQP
+     * header to arrive and a header response will be sent.
+     *
+     * @param mechanisms
+     *                 The set of offered SASL mechanisms which must contain 
"ANONYMOUS"
+     */
+    public void expectSASLAnonymousConnect(String...mechanisms) {
+        if (!Arrays.asList(mechanisms).contains("ANONYMOUS")) {
+            throw new AssertionError("The list of mechanisms must contain 
ANONYMOUS for this expectation to be valid.");
+        }
+
         expectSASLHeader().respondWithSASLHeader();
         remoteSaslMechanisms().withMechanisms("ANONYMOUS").queue();
         expectSaslInit().withMechanism("ANONYMOUS");
@@ -354,6 +378,34 @@ public abstract class ScriptWriter {
      *      The password that is expected in the SASL Plain initial response.
      */
     public void expectSASLPlainConnect(String username, String password) {
+        expectSASLPlainConnect(username, password, "PLAIN");
+    }
+
+    /**
+     * Creates all the scripted elements needed for a successful SASL Plain
+     * connection. The provided set of mechanisms must contain the plain SASL
+     * mechanism or an exception is thrown as otherwise the premise of this 
test
+     * method could not be met.
+     * <p>
+     * For this exchange the SASL header is expected which is responded to 
with the
+     * corresponding SASL header and an immediate SASL mechanisms frame that 
only
+     * advertises plain as the mechanism.  It is expected that the remote will
+     * send a SASL init with the plain mechanism selected and the outcome is
+     * predefined as success.  Once done the expectation is added for the AMQP
+     * header to arrive and a header response will be sent.
+     *
+     * @param username
+     *      The user name that is expected in the SASL Plain initial response.
+     * @param password
+     *      The password that is expected in the SASL Plain initial response.
+     * @param mechanisms
+     *                 The set of offered SASL mechanisms which must contain 
"PLAIN"
+     */
+    public void expectSASLPlainConnect(String username, String password, 
String...mechanisms) {
+        if (!Arrays.asList(mechanisms).contains("PLAIN")) {
+            throw new AssertionError("The list of mechanisms must contain 
PLAIN for this expectation to be valid.");
+        }
+
         expectSASLHeader().respondWithSASLHeader();
         remoteSaslMechanisms().withMechanisms("PLAIN").queue();
         
expectSaslInit().withMechanism("PLAIN").withInitialResponse(saslPlainInitialResponse(username,
 password));
@@ -417,7 +469,7 @@ public abstract class ScriptWriter {
      * @param offeredMechanisms
      *      The set of mechanisms that the server should offer in the SASL 
Mechanisms frame
      */
-    public void expectFailingSASLPlainConnect(byte saslCode, String... 
offeredMechanisms) {
+    public void expectFailingSASLPlainConnect(byte saslCode, 
String...offeredMechanisms) {
         if (!Arrays.asList(offeredMechanisms).contains("PLAIN")) {
             throw new AssertionError("Expected offered mechanisms that 
contains the PLAIN mechanism");
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to