From 9e5ec80533615e99d3ced2cda8e2f6efef1ea907 Mon Sep 17 00:00:00 2001 From: Tomasz Sterna Date: Fri, 12 Oct 2012 11:52:08 +0200 Subject: [PATCH] INT-2786 Do not Provide Fixed XMPP Resource String Previously, the connection resource was hard-coded to 'Smack' by default. According to RFC 6120 section 7.6. Server-Generated Resource Identifier if the connecting client does not provide resource string, server will generate RANDOM one for it. Smack API allows this by providing null resource in XMPPConnection#login(username, password, resource) call. See Smack's SASLAuthentication documentation. Tested with XMPP sample (including default resource and configuring as 'Smack'). --- .../config/XmppConnectionFactoryBean.java | 2 +- .../XmppConnectionParserTests-simple.xml | 2 ++ .../config/XmppConnectionParserTests.java | 26 +++++++++++-------- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBean.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBean.java index ef8ecd73c5..7619262c4a 100644 --- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBean.java +++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBean.java @@ -40,7 +40,7 @@ public class XmppConnectionFactoryBean extends AbstractFactoryBean + diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests.java b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests.java index 6dd3395bfc..589dc121b7 100644 --- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests.java +++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,25 +16,26 @@ package org.springframework.integration.xmpp.config; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertTrue; +import static org.junit.Assert.assertNull; + import java.util.List; import org.jivesoftware.smack.SmackConfiguration; import org.jivesoftware.smack.XMPPConnection; import org.junit.Test; - import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.integration.test.util.TestUtils; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertFalse; -import static junit.framework.Assert.assertTrue; - /** * @author Oleg Zhurakousky + * @author Gary Russell */ public class XmppConnectionParserTests { - + @Test public void testSmackSasl() { /* @@ -54,14 +55,17 @@ public class XmppConnectionParserTests { assertEquals("localhost", connection.getServiceName()); assertEquals("localhost", connection.getHost()); assertEquals(5222, connection.getPort()); - assertFalse(connection.isConnected()); + assertFalse(connection.isConnected()); XmppConnectionFactoryBean xmppFb = ac.getBean("&connection", XmppConnectionFactoryBean.class); assertEquals("happy.user", TestUtils.getPropertyValue(xmppFb, "user")); assertEquals("blah", TestUtils.getPropertyValue(xmppFb, "password")); - assertEquals("Smack", TestUtils.getPropertyValue(xmppFb, "resource")); + assertNull(TestUtils.getPropertyValue(xmppFb, "resource")); assertEquals("accept_all", TestUtils.getPropertyValue(xmppFb, "subscriptionMode")); + + xmppFb = ac.getBean("&connectionWithResource", XmppConnectionFactoryBean.class); + assertEquals("Smack", TestUtils.getPropertyValue(xmppFb, "resource")); } - + @Test public void testDefaultConnectionName() { ApplicationContext ac = new ClassPathXmlApplicationContext("XmppConnectionParserTests-simple.xml", this.getClass()); @@ -75,7 +79,7 @@ public class XmppConnectionParserTests { assertEquals("foogle.com", connection.getServiceName()); assertEquals("localhost", connection.getHost()); assertEquals(6222, connection.getPort()); - assertFalse(connection.isConnected()); + assertFalse(connection.isConnected()); XmppConnectionFactoryBean xmppFb = ac.getBean("&connection", XmppConnectionFactoryBean.class); assertEquals("happy.user", TestUtils.getPropertyValue(xmppFb, "user")); assertEquals("blah", TestUtils.getPropertyValue(xmppFb, "password"));