package org.pac4j.oauth.run; import org.pac4j.core.client.IndirectClient; import org.pac4j.core.profile.Gender; import org.pac4j.core.profile.ProfileHelper; import org.pac4j.core.run.RunClient; import org.pac4j.core.profile.CommonProfile; import org.pac4j.core.util.CommonHelper; import org.pac4j.oauth.client.FacebookClient; import org.pac4j.oauth.profile.facebook.*; import java.text.SimpleDateFormat; import java.util.*; import static org.junit.Assert.*; /** * Run manually a test for the {@link FacebookClient}. * * @author Jerome Leleu * @since 1.9.0 */ public final class RunFacebookClient extends RunClient { public static void main(String[] args) throws Exception { new RunFacebookClient().run(); } @Override protected String getLogin() { return "testscribeup@gmail.com"; } @Override protected String getPassword() { return "testpwdscribeup"; } @Override protected boolean canCancel() { return true; } @Override protected IndirectClient getClient() { final FacebookClient facebookClient = new FacebookClient(); facebookClient.setKey("1002857006444390"); facebookClient.setSecret("c352c9668493d3f9ac3f0fa71f04c187"); facebookClient.setCallbackUrl(PAC4J_URL); facebookClient .setScope("email,user_about_me,user_actions.books,user_actions.fitness,user_actions.music,user_actions.news,user_actions.video,user_birthday,user_education_history,user_events,user_friends,user_games_activity,user_hometown,user_likes,user_location,user_managed_groups,user_photos,user_posts,user_relationship_details,user_relationships,user_religion_politics,user_status,user_tagged_places,user_videos,user_website,user_work_history"); facebookClient.setFields(FacebookClient.DEFAULT_FIELDS + ",friends,movies,music,books,likes,albums,events,groups,music.listens,picture"); facebookClient.setLimit(100); return facebookClient; } @Override protected void verifyProfile(final CommonProfile userProfile) { final FacebookProfile profile = (FacebookProfile) userProfile; assertEquals("771361542992890", profile.getId()); assertEquals(FacebookProfile.class.getName() + CommonProfile.SEPARATOR + "771361542992890", profile.getTypedId()); assertTrue(ProfileHelper.isTypedIdOf(profile.getTypedId(), FacebookProfile.class)); assertTrue(CommonHelper.isNotBlank(profile.getAccessToken())); assertCommonProfile(userProfile, null, "Jerome", "Testscribeup", "Jerome Testscribeup", null, Gender.MALE, Locale.FRANCE, "https://scontent.xx.fbcdn.net/v/t1.0-1/c170.50.621.621/s50x50/550165_168023156660068_12755354_n.jpg?oh=", "https://www.facebook.com/app_scoped_user_id/771361542992890/", "New York, New York"); assertNull(profile.getMiddleName()); final List<FacebookObject> languages = profile.getLanguages(); assertTrue(languages.get(0).getName().startsWith("Fr")); assertTrue(CommonHelper.isNotBlank(profile.getThirdPartyId())); assertEquals(-5, profile.getTimezone().intValue()); assertTrue(profile.getVerified()); assertEquals("A propos de moi", profile.getAbout()); assertEquals("03/10/1979", new SimpleDateFormat("MM/dd/yyyy").format(profile.getBirthday())); final List<FacebookEducation> educations = profile.getEducation(); FacebookEducation education = educations.get(0); assertEquals("lycée mixte", education.getSchool().getName()); assertEquals("2000", education.getYear().getName()); assertEquals("High School", education.getType()); education = educations.get(1); assertEquals("Ingénieur", education.getDegree().getName()); assertNull(profile.getEmail()); assertEquals("San Francisco, California", profile.getHometown().getName()); assertEquals("female", profile.getInterestedIn().get(0)); assertEquals("New York, New York", profile.getLocationObject().getName()); assertEquals("Sans Opinion (desc)", profile.getPolitical()); final List<FacebookObject> favoriteAthletes = profile.getFavoriteAthletes(); assertEquals("Surfeuse", favoriteAthletes.get(0).getName()); final List<FacebookObject> favoriteTeams = profile.getFavoriteTeams(); assertEquals("Handball Féminin de France", favoriteTeams.get(0).getName()); assertEquals("citation", profile.getQuotes()); assertEquals(FacebookRelationshipStatus.MARRIED, profile.getRelationshipStatus()); assertEquals("Athéisme (desc)", profile.getReligion()); assertNull(profile.getSignificantOther()); assertEquals("web site", profile.getWebsite()); final List<FacebookWork> works = profile.getWork(); final FacebookWork work = works.get(0); assertEquals("Employeur", work.getEmployer().getName()); assertEquals("Paris, France", work.getLocation().getName()); assertEquals("Architecte Web", work.getPosition().getName()); assertEquals("Description", work.getDescription()); assertNull(work.getEndDate()); final List<FacebookObject> friends = profile.getFriends(); assertEquals(1, friends.size()); final FacebookObject friend = friends.get(0); assertEquals("Jérôme Leleu", friend.getName()); assertEquals("874202936003234", friend.getId()); final List<FacebookInfo> movies = profile.getMovies(); assertEquals(1, movies.size()); final FacebookInfo movie = movies.get(0); assertEquals("Jean-Claude Van Damme", movie.getName()); assertEquals("21497365045", movie.getId()); assertEquals(1330030350000L, movie.getCreatedTime().getTime()); final List<FacebookInfo> musics = profile.getMusic(); assertEquals(1, musics.size()); final FacebookInfo music = musics.get(0); assertEquals("Hard rock", music.getName()); assertEquals("112175695466436", music.getId()); assertEquals(1330030350000L, music.getCreatedTime().getTime()); final List<FacebookInfo> books = profile.getBooks(); assertEquals(1, books.size()); final FacebookInfo book = books.get(0); assertEquals("Science fiction", book.getName()); assertEquals("108157509212483", book.getId()); assertEquals(null, book.getCategory()); assertEquals(1330030350000L, book.getCreatedTime().getTime()); final List<FacebookInfo> likes = profile.getLikes(); assertEquals(9, likes.size()); final FacebookInfo like = likes.get(0); assertEquals("Boxing", like.getName()); assertEquals("105648929470083", like.getId()); assertEquals(1360152791000L, like.getCreatedTime().getTime()); final List<FacebookPhoto> albums = profile.getAlbums(); assertEquals(3, albums.size()); final FacebookPhoto album = albums.get(1); assertEquals("168023009993416", album.getId()); final FacebookObject from = album.getFrom(); assertNull(from); assertEquals("Profile Pictures", album.getName()); final List<FacebookEvent> events = profile.getEvents(); assertEquals(2, events.size()); final FacebookEvent event = events.get(0); assertEquals("Couronnement", event.getName()); assertEquals("301212149963131", event.getId()); assertEquals("attending", event.getRsvpStatus()); assertNotNull(event.getStartTime()); assertNotNull(event.getEndTime()); final List<FacebookGroup> groups = profile.getGroups(); final FacebookGroup group = groups.get(0); assertEquals("Dev ScribeUP", group.getName()); assertEquals("167694120024728", group.getId()); final List<FacebookMusicListen> musicListens = profile.getMusicListens(); assertNull(musicListens); final FacebookPicture picture = profile.getPicture(); assertFalse(picture.getSilhouette()); assertEquals(35, profile.getAttributes().size()); } }