diff --git a/test/config/test-case.xml b/test/config/test-case.xml
index c50ed47b2..0b4624609 100644
--- a/test/config/test-case.xml
+++ b/test/config/test-case.xml
@@ -13,4 +13,12 @@
chat
conference
+
+ false
+
+
+
+
diff --git a/test/org/jivesoftware/smack/LoginTest.java b/test/org/jivesoftware/smack/LoginTest.java
index 21a6ecd35..39f30862d 100644
--- a/test/org/jivesoftware/smack/LoginTest.java
+++ b/test/org/jivesoftware/smack/LoginTest.java
@@ -67,6 +67,8 @@ public class LoginTest extends SmackTestCase {
* Check that the server handles anonymous users correctly.
*/
public void testSASLAnonymousLogin() {
+ if (!isTestAnonymousLogin()) return;
+
try {
XMPPConnection conn1 = createConnection();
XMPPConnection conn2 = createConnection();
@@ -84,8 +86,7 @@ public class LoginTest extends SmackTestCase {
assertNotNull("Username is null", StringUtils.parseName(conn2.getUser()));
}
catch (XMPPException e) {
- e.printStackTrace();
- //fail(e.getMessage());
+ fail(e.getMessage());
}
finally {
// Close the connection
@@ -103,6 +104,8 @@ public class LoginTest extends SmackTestCase {
* Check that the server handles anonymous users correctly.
*/
public void testNonSASLAnonymousLogin() {
+ if (!isTestAnonymousLogin()) return;
+
try {
ConnectionConfiguration config = new ConnectionConfiguration(getHost(), getPort());
config.setSASLAuthenticationEnabled(false);
@@ -126,7 +129,6 @@ public class LoginTest extends SmackTestCase {
assertNotNull("Username is null", StringUtils.parseName(conn2.getUser()));
}
catch (XMPPException e) {
- e.printStackTrace();
fail(e.getMessage());
}
// Close the connection
@@ -147,12 +149,16 @@ public class LoginTest extends SmackTestCase {
XMPPConnection conn = createConnection();
conn.connect();
try {
- conn.getAccountManager().createAccount("user_1", "user_1");
+ conn.getAccountManager().createAccount("user_1", "user_1", getAccountCreationParameters());
} catch (XMPPException e) {
- // Do nothing if the accout already exists
+ // Do nothing if the account already exists
if (e.getXMPPError().getCode() != 409) {
throw e;
}
+ // Else recreate the connection, ins case the server closed it as
+ // a result of the error, so we can login.
+ conn = createConnection();
+ conn.connect();
}
conn.login("user_1", "user_1", (String) null);
if (conn.getSASLAuthentication().isAuthenticated()) {
@@ -163,11 +169,15 @@ public class LoginTest extends SmackTestCase {
conn.disconnect();
}
else {
- fail("User with no resource was able to log into the server");
+ fail("User with no resource was not able to log into the server");
}
} catch (XMPPException e) {
- assertEquals("Wrong error code returned", 406, e.getXMPPError().getCode());
+ if (e.getXMPPError() != null) {
+ assertEquals("Wrong error code returned", 406, e.getXMPPError().getCode());
+ } else {
+ fail(e.getMessage());
+ }
}
}
diff --git a/test/org/jivesoftware/smack/test/SmackTestCase.java b/test/org/jivesoftware/smack/test/SmackTestCase.java
index 6587a666a..d28aee83f 100644
--- a/test/org/jivesoftware/smack/test/SmackTestCase.java
+++ b/test/org/jivesoftware/smack/test/SmackTestCase.java
@@ -23,7 +23,9 @@ import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import javax.net.SocketFactory;
@@ -58,6 +60,8 @@ public abstract class SmackTestCase extends TestCase {
private int port = 5222;
private String usernamePrefix = "user";
private String passwordPrefix;
+ private boolean testAnonymousLogin = false;
+ private Map accountCreationParameters = new HashMap();
private boolean samePassword;
private List createdUserIdx = new ArrayList();
@@ -435,9 +439,23 @@ public abstract class SmackTestCase extends TestCase {
usernamePrefix = parser.nextText();
}
else if (parser.getName().equals("password")) {
- samePassword = "true".equals(parser.getAttributeValue(0));
+ samePassword = "true".equals(parser.getAttributeValue(0));
passwordPrefix = parser.nextText();
}
+ else if (parser.getName().equals("testAnonymousLogin")) {
+ testAnonymousLogin = "true".equals(parser.nextText());
+ }
+ else if (parser.getName().equals("accountCreationParameters")) {
+ int numAttributes = parser.getAttributeCount();
+ String key = null;
+ String value = null;
+
+ for (int i = 0; i < numAttributes; i++) {
+ key = parser.getAttributeName(i);
+ value = parser.getAttributeValue(i);
+ accountCreationParameters.put(key, value);
+ }
+ }
}
eventType = parser.next();
}
@@ -498,4 +516,11 @@ public abstract class SmackTestCase extends TestCase {
}
}
+ public boolean isTestAnonymousLogin() {
+ return testAnonymousLogin;
+ }
+
+ public Map getAccountCreationParameters() {
+ return accountCreationParameters;
+ }
}