/**
* Copyright 2012 Marin Solutions
*/
package com.captaindebug.social.facebookposts.implementation;
import static org.easymock.EasyMock.expect;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.unitils.easymock.EasyMockUnitils.replay;
import static org.unitils.easymock.EasyMockUnitils.verify;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.social.connect.Connection;
import org.springframework.social.connect.ConnectionRepository;
import org.springframework.social.connect.UsersConnectionRepository;
import org.springframework.social.facebook.api.Facebook;
import org.unitils.UnitilsJUnit4TestClassRunner;
import org.unitils.easymock.annotation.Mock;
/**
* @author Roger
*
*/
@RunWith(UnitilsJUnit4TestClassRunner.class)
public class SocialContextTest {
private SocialContext instance;
@Mock
private UsersConnectionRepository userConnectionRespository;
@Mock
private ConnectionRepository connectionRespository;
@Mock
private HttpServletRequest request;
@Mock
private HttpServletResponse response;
@Mock
private Facebook facebook;
@Mock
private Connection<Facebook> facebookConnection;
// Use the real thing as this is lightweight;
private UserCookieGenerator userCookieGenerator;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
userCookieGenerator = new UserCookieGenerator();
instance = new SocialContext(userConnectionRespository, userCookieGenerator, facebook);
}
@Test
public void testIsSignedInWithNoExistingCookieAvailable() throws Exception {
expect(request.getCookies()).andReturn(null);
replay();
boolean results = instance.isSignedIn(request, response);
verify();
assertFalse(results);
}
@Test
public void testIsSignedInWithDisconnectedUser() throws Exception {
final String COOKIE_NAME = "captain_debug_social_user";
final String COOKIE_VALUE = "qwerty";
Cookie[] cookies = new Cookie[1];
Cookie cookie = new Cookie(COOKIE_NAME, COOKIE_VALUE);
cookies[0] = cookie;
expect(request.getCookies()).andReturn(cookies);
expect(userConnectionRespository.createConnectionRepository(COOKIE_VALUE)).andReturn(connectionRespository);
expect(connectionRespository.findPrimaryConnection(Facebook.class)).andReturn(null);
cookie = new Cookie(COOKIE_NAME, "");
response.addCookie(cookie);
replay();
boolean result = instance.isSignedIn(request, response);
verify();
assertFalse(result);
}
@Test
public void testIsSignedIn() {
final String COOKIE_NAME = "captain_debug_social_user";
final String COOKIE_VALUE = "qwerty";
Cookie[] cookies = new Cookie[1];
Cookie cookie = new Cookie(COOKIE_NAME, COOKIE_VALUE);
cookies[0] = cookie;
expect(request.getCookies()).andReturn(cookies);
expect(userConnectionRespository.createConnectionRepository(COOKIE_VALUE)).andReturn(connectionRespository);
expect(connectionRespository.findPrimaryConnection(Facebook.class)).andReturn(facebookConnection);
replay();
boolean result = instance.isSignedIn(request, response);
verify();
assertTrue(result);
}
}