package org.springframework.social.evernote.connect;
import com.evernote.clients.UserStoreClient;
import com.evernote.edam.error.EDAMUserException;
import com.evernote.edam.type.User;
import org.junit.Test;
import org.springframework.social.connect.ConnectionValues;
import org.springframework.social.connect.UserProfile;
import org.springframework.social.evernote.api.Evernote;
import org.springframework.social.evernote.api.UserStoreOperations;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.*;
/**
* @author Tadaya Tsuyukubo
*/
public class EvernoteAdapterTest {
@Test
public void testTestValid() throws Exception {
// test case when connection is valid
Evernote evernote = mock(Evernote.class);
UserStoreClient userStoreClient = mock(UserStoreClient.class);
when(evernote.userStoreClient()).thenReturn(userStoreClient);
when(userStoreClient.getUser()).thenReturn(new User()); // has some user
EvernoteAdapter adapter = new EvernoteAdapter();
boolean result = adapter.test(evernote);
assertThat(result, is(true));
}
@Test
public void testTestInvalid() throws Exception {
// test case when connection is invalid
Evernote evernote = mock(Evernote.class);
UserStoreClient userStoreClient = mock(UserStoreClient.class);
when(evernote.userStoreClient()).thenReturn(userStoreClient);
when(userStoreClient.getUser()).thenThrow(EDAMUserException.class);
EvernoteAdapter adapter = new EvernoteAdapter();
boolean result = adapter.test(evernote);
assertThat(result, is(false));
}
@Test
public void testSetConnectionValues() {
Evernote evernote = mock(Evernote.class);
UserStoreOperations userStoreOperations = mock(UserStoreOperations.class);
User user = new User();
user.setId(100);
user.setUsername("foo");
when(evernote.userStoreOperations()).thenReturn(userStoreOperations);
when(userStoreOperations.getUser()).thenReturn(user);
EvernoteAdapter adapter = new EvernoteAdapter();
ConnectionValues values = mock(ConnectionValues.class);
adapter.setConnectionValues(evernote, values);
verify(values).setProviderUserId("100");
verify(values).setDisplayName("foo");
verify(values).setImageUrl(null);
verify(values).setProfileUrl(null);
}
@Test
public void testFetchUserProfile() {
Evernote evernote = mock(Evernote.class);
UserStoreOperations userStoreOperations = mock(UserStoreOperations.class);
User user = new User();
user.setName("foo");
user.setUsername("FOO");
user.setEmail("foo@foo.com");
when(evernote.userStoreOperations()).thenReturn(userStoreOperations);
when(userStoreOperations.getUser()).thenReturn(user);
EvernoteAdapter adapter = new EvernoteAdapter();
UserProfile userProfile = adapter.fetchUserProfile(evernote);
assertThat(userProfile.getName(), is("foo"));
assertThat(userProfile.getUsername(), is("FOO"));
assertThat(userProfile.getEmail(), is("foo@foo.com"));
}
}