INT-3065: Add tweet-data-expression for Update
JIRA: https://jira.spring.io/browse/INT-3065 Improve `TwitterSearchOutboundGateway` to use an expression to build the tweet instead of just using the payload (which remains the default).
This commit is contained in:
committed by
Gary Russell
parent
9052377bf5
commit
97d1d389a9
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:int="http://www.springframework.org/schema/integration"
|
||||
xmlns:int-twitter="http://www.springframework.org/schema/integration/twitter"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
|
||||
http://www.springframework.org/schema/integration/twitter http://www.springframework.org/schema/integration/twitter/spring-integration-twitter.xsd">
|
||||
|
||||
<bean id="tt" class="org.mockito.Mockito" factory-method="mock">
|
||||
<constructor-arg value="org.springframework.social.twitter.api.Twitter" />
|
||||
</bean>
|
||||
|
||||
<int-twitter:outbound-channel-adapter id="in1" twitter-template="tt" />
|
||||
|
||||
<int-twitter:outbound-channel-adapter
|
||||
id="in2"
|
||||
twitter-template="tt"
|
||||
tweet-data-expression="new TweetData(payload.foo).withMedia(headers.media)"/>
|
||||
|
||||
</beans>
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2010 the original author or authors
|
||||
* Copyright 2002-2014 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,37 +16,93 @@
|
||||
|
||||
package org.springframework.integration.twitter.outbound;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.PropertiesFactoryBean;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.integration.support.MessageBuilder;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.MessageChannel;
|
||||
import org.springframework.messaging.support.GenericMessage;
|
||||
import org.springframework.social.twitter.api.TimelineOperations;
|
||||
import org.springframework.social.twitter.api.TweetData;
|
||||
import org.springframework.social.twitter.api.Twitter;
|
||||
import org.springframework.social.twitter.api.impl.TwitterTemplate;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
|
||||
/**
|
||||
* @author Oleg Zhurakousky
|
||||
* @author Artem Bilan
|
||||
* @since 2.0
|
||||
*/
|
||||
@ContextConfiguration
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@DirtiesContext
|
||||
public class StatusUpdatingMessageHandlerTests {
|
||||
|
||||
|
||||
@Autowired
|
||||
MessageChannel in1;
|
||||
|
||||
@Autowired
|
||||
MessageChannel in2;
|
||||
|
||||
@Autowired
|
||||
Twitter twitter;
|
||||
|
||||
@Test @Ignore
|
||||
public void demoSendStatusMessage() throws Exception{
|
||||
PropertiesFactoryBean pf = new PropertiesFactoryBean();
|
||||
pf.setLocation(new ClassPathResource("sample.properties"));
|
||||
pf.afterPropertiesSet();
|
||||
Properties prop = pf.getObject();
|
||||
TwitterTemplate template = new TwitterTemplate(prop.getProperty("z_oleg.oauth.consumerKey"),
|
||||
prop.getProperty("z_oleg.oauth.consumerSecret"),
|
||||
prop.getProperty("z_oleg.oauth.accessToken"),
|
||||
TwitterTemplate template = new TwitterTemplate(prop.getProperty("z_oleg.oauth.consumerKey"),
|
||||
prop.getProperty("z_oleg.oauth.consumerSecret"),
|
||||
prop.getProperty("z_oleg.oauth.accessToken"),
|
||||
prop.getProperty("z_oleg.oauth.accessTokenSecret"));
|
||||
Message<?> message1 = MessageBuilder.withPayload("Ppolishing #springintegration migration to Spring Social. test").build();
|
||||
Message<?> message1 = MessageBuilder.withPayload("Polishing #springintegration migration to Spring Social. test").build();
|
||||
StatusUpdatingMessageHandler handler = new StatusUpdatingMessageHandler(template);
|
||||
handler.afterPropertiesSet();
|
||||
handler.handleMessage(message1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStatusUpdatingMessageHandler() {
|
||||
TimelineOperations timelineOperations = Mockito.mock(TimelineOperations.class);
|
||||
Mockito.when(this.twitter.timelineOperations()).thenReturn(timelineOperations);
|
||||
|
||||
ArgumentCaptor<TweetData> argument = ArgumentCaptor.forClass(TweetData.class);
|
||||
|
||||
this.in1.send(new GenericMessage<String>("foo"));
|
||||
|
||||
Mockito.verify(timelineOperations).updateStatus(argument.capture());
|
||||
assertEquals("foo", argument.getValue().toRequestParameters().getFirst("status"));
|
||||
|
||||
Mockito.reset(timelineOperations);
|
||||
|
||||
ClassPathResource media = new ClassPathResource("log4j.properties");
|
||||
this.in2.send(MessageBuilder.withPayload(Collections.singletonMap("foo", "bar"))
|
||||
.setHeader("media", media)
|
||||
.build());
|
||||
|
||||
Mockito.verify(timelineOperations).updateStatus(argument.capture());
|
||||
MultiValueMap<String, Object> requestParameters = argument.getValue().toRequestParameters();
|
||||
assertEquals("bar", requestParameters.getFirst("status"));
|
||||
assertEquals(media, requestParameters.getFirst("media"));
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user