From c5b072b2a83e4847b1cbea158f7f95449ae42e81 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Mon, 8 Nov 2010 12:02:51 -0500 Subject: [PATCH] INT-1553 removed ConnectionParser, added tests for Twitter4JTemplate --- .../twitter/config/ConnectionParser.java | 51 ----------- .../DirectMessageReceivingMessageSource.java | 1 - .../twitter/core/Twitter4jTemplateTests.java | 91 ++++++++++++++++++- 3 files changed, 89 insertions(+), 54 deletions(-) delete mode 100644 spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/ConnectionParser.java diff --git a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/ConnectionParser.java b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/ConnectionParser.java deleted file mode 100644 index 5bc2a38d4b..0000000000 --- a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/config/ConnectionParser.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2002-2010 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.integration.twitter.config; - -import static org.springframework.integration.twitter.config.TwitterNamespaceHandler.BASE_PACKAGE; - -import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; -import org.springframework.beans.factory.xml.ParserContext; -import org.w3c.dom.Element; - -/** - * Parser for the 'twitter-connection' element. - * - * @author Josh Long - * @author Mark Fisher - * @since 2.0 - */ -public class ConnectionParser extends AbstractSingleBeanDefinitionParser { - - @Override - protected String getBeanClassName(Element element) { - return BASE_PACKAGE + ".oauth.OAuthTwitterFactoryBean"; - } - - @Override - protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { - - BeanDefinitionBuilder accessTokenBuilder = BeanDefinitionBuilder.genericBeanDefinition("twitter4j.http.AccessToken"); - accessTokenBuilder.addConstructorArgValue(element.getAttribute("access-token")); - accessTokenBuilder.addConstructorArgValue(element.getAttribute("access-token-secret")); - builder.addConstructorArgValue(element.getAttribute("consumer-key")); - builder.addConstructorArgValue(element.getAttribute("consumer-secret")); - builder.addConstructorArgValue(accessTokenBuilder.getBeanDefinition()); - } - -} diff --git a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSource.java b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSource.java index fedcaa4b96..6f80adf37d 100644 --- a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSource.java +++ b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSource.java @@ -24,7 +24,6 @@ import org.springframework.util.CollectionUtils; import twitter4j.DirectMessage; import twitter4j.Paging; -import twitter4j.Twitter; /** * This class handles support for receiving DMs (direct messages) using Twitter. diff --git a/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/core/Twitter4jTemplateTests.java b/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/core/Twitter4jTemplateTests.java index 961d552dc2..d35269d510 100644 --- a/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/core/Twitter4jTemplateTests.java +++ b/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/core/Twitter4jTemplateTests.java @@ -15,16 +15,103 @@ */ package org.springframework.integration.twitter.core; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.lang.reflect.Field; + +import org.junit.Before; import org.junit.Test; +import org.mockito.Mockito; +import org.springframework.integration.test.util.TestUtils; + +import twitter4j.Paging; +import twitter4j.StatusUpdate; +import twitter4j.Twitter; +import twitter4j.http.AccessToken; +import twitter4j.http.Authorization; +import twitter4j.http.OAuthAuthorization; /** + * Validates that all calls are delegated properly top Twitter + * * @author Oleg Zhurakousky * */ public class Twitter4jTemplateTests { + Twitter4jTemplate template; + Twitter twitter; + + @Before + public void prepare() throws Exception{ + template = new Twitter4jTemplate(); + Field twitterField = Twitter4jTemplate.class.getDeclaredField("twitter"); + twitterField.setAccessible(true); + twitter = mock(Twitter.class); + twitterField.set(template, twitter); + } + @Test + public void testOauthConstructor() throws Exception{ + template = new Twitter4jTemplate("a", "b", "c", "d"); + Twitter twitter = (Twitter) TestUtils.getPropertyValue(template, "twitter"); + Authorization auth = twitter.getAuthorization(); + assertTrue(twitter.getAuthorization() instanceof OAuthAuthorization); + AccessToken accessToken = ((OAuthAuthorization)auth).getOAuthAccessToken(); + assertEquals("c", accessToken.getToken()); + assertEquals("d", accessToken.getTokenSecret()); + } @Test - public void testProfileId(){ - + public void testProfileId() throws Exception{ + when(twitter.getScreenName()).thenReturn("kermit"); + assertEquals("kermit", template.getProfileId()); + } + @Test + public void testRateLimitStatus() throws Exception{ + template.getRateLimitStatus(); + verify(twitter, times(1)).getRateLimitStatus(); + } + + @Test + public void testGetDirectMessages() throws Exception{ + template.getDirectMessages(); + template.getDirectMessages(new Paging()); + verify(twitter, times(1)).getDirectMessages(); + verify(twitter, times(1)).getDirectMessages(Mockito.any(Paging.class)); + } + + @Test + public void testGetMentions() throws Exception{ + template.getMentions(); + template.getMentions(new Paging()); + verify(twitter, times(1)).getMentions(); + verify(twitter, times(1)).getMentions(Mockito.any(Paging.class)); + } + + @Test + public void testGetFriendsTimeline() throws Exception{ + template.getFriendsTimeline(); + template.getFriendsTimeline(new Paging()); + verify(twitter, times(1)).getFriendsTimeline(); + verify(twitter, times(1)).getFriendsTimeline(Mockito.any(Paging.class)); + } + + @Test + public void testSendDirectMessage() throws Exception{ + template.sendDirectMessage("kermit", "hello"); + template.sendDirectMessage(1, "hello"); + verify(twitter, times(1)).sendDirectMessage("kermit", "hello"); + verify(twitter, times(1)).sendDirectMessage(1, "hello"); + } + + @Test + public void testUpdateStatus() throws Exception{ + StatusUpdate statusUpdate = new StatusUpdate("writing twitter test"); + template.updateStatus(statusUpdate); + verify(twitter, times(1)).updateStatus(statusUpdate); } }