package org.societies.platform.socialdata.testcase; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.stub; import java.io.BufferedReader; import java.io.FileReader; import java.util.Iterator; import java.util.List; import java.util.logging.Logger; import org.apache.shindig.social.opensocial.model.ActivityEntry; import org.apache.shindig.social.opensocial.model.Group; import org.apache.shindig.social.opensocial.model.Person; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.societies.api.internal.sns.ISocialConnector; import org.societies.api.internal.sns.ISocialData; import org.societies.api.schema.sns.socialdata.model.SocialNetwork; import org.societies.api.sns.Message; import org.societies.platform.socialdata.SocialData; public class SocialDataTest { private static ISocialData socialData =null; private static final Logger logger = Logger.getLogger(SocialDataTest.class.getSimpleName()); private static ISocialConnector mockedSocialConnector; @BeforeClass public static void setUp() throws Exception { mockedSocialConnector = mock(ISocialConnector.class); stub(mockedSocialConnector.getConnectorName()).toReturn("facebook"); stub(mockedSocialConnector.getID()).toReturn("facebook_0001"); stub(mockedSocialConnector.getUserFriends()).toReturn(readFileAsString("mocks/friends.txt")); stub(mockedSocialConnector.getUserActivities()).toReturn(readFileAsString("mocks/activities.txt")); stub(mockedSocialConnector.getUserGroups()).toReturn(readFileAsString("mocks/groups.txt")); stub(mockedSocialConnector.getUserProfile()).toReturn(readFileAsString("mocks/profile.txt")); // fbConnector = new FacebookConnectorImpl(access_token, null); socialData = new SocialData(); assertNotNull("Social Data is null", socialData); assertNotNull("Moked FB Connector is null", mockedSocialConnector); logger.info("Created new FB Connector with id:" + mockedSocialConnector.getID()); logger.info("Created SocialData Container"+socialData.getLastUpdate()); // try { // socialData.addSocialConnector(mockedSocialConnector); // // // HashMap<String, String> map = new HashMap<String, String>(); // // map.put(ISocialConnector.AUTH_TOKEN, ""); // // ISocialConnector tw_con = socialData.createConnector(SocialNetwork.twitter, map); // // socialData.addSocialConnector(tw_con); // // logger.info("Add Social Connector"); // } catch (Exception e) { // // e.printStackTrace(); // fail(e.getMessage()); // } } private static String readFileAsString(String filePath) throws java.io.IOException{ StringBuffer fileData = new StringBuffer(1000); BufferedReader reader = new BufferedReader( new FileReader(filePath)); char[] buf = new char[1024]; int numRead=0; while((numRead=reader.read(buf)) != -1){ String readData = String.valueOf(buf, 0, numRead); fileData.append(readData); buf = new char[1024]; } reader.close(); return fileData.toString(); } /** * @throws java.lang.Exception */ @After public void tearDown() throws Exception { mockedSocialConnector = null; } @Before public void updateSocialDataTest(){ try{ socialData.updateSocialData(); logger.info("SocialData ready in memory"); } catch(Exception ex){ fail(ex.getMessage()); } } @Test public void printProfiles(){ List<?> profiles = null; profiles = socialData.getSocialProfiles(); assertNotNull("Profiles are null", profiles); Iterator it = profiles.iterator(); int index =1; while(it.hasNext()){ Person p = (Person) it.next(); logger.info("--- Profile "+index +" ID:" +p.getId() + " -->"+p.getName().getFormatted() ); index++; } } @Test public void printFriends(){ List<?> friends = null; friends = socialData.getSocialPeople(); assertNotNull("Friends list is null", friends); Iterator it = friends.iterator(); int index =1; while(it.hasNext()){ Person p =null; try{ p = (Person) it.next(); logger.info(index +" FriendsID:" +p.getId() + " -->"+p.getName().getFormatted() ); index++; } catch(Exception e){ e.printStackTrace(); } } } @Test public void printGroups(){ List<?> groups = null; groups = socialData.getSocialGroups(); assertNotNull("Social Group list is null", groups); Iterator it = groups.iterator(); int index =1; while(it.hasNext()){ Group g = (Group) it.next(); logger.info(index +" GroupID:" +g.getId() + " Title: "+g.getTitle() + " descr:"+g.getDescription()); index++; } } @Test public void printActivities(){ List<?> activities = null; activities = socialData.getSocialActivity(); assertNotNull("Social Activity list is null", activities); Iterator it = activities.iterator(); int index =1; while(it.hasNext()){ ActivityEntry a = (ActivityEntry) it.next(); logger.info(index +"] " +a.getActor().getDisplayName() + " made "+a.getVerb() + " TO "+a.getContent()); index++; } } @Test public void printConnectors(){ List<ISocialConnector> connectors = null; connectors = socialData.getSocialConnectors(); assertNotNull("Connector list is null", connectors); Iterator<ISocialConnector> it = connectors.iterator(); int index =1; while(it.hasNext()){ ISocialConnector conn = it.next(); logger.info(index +"] Connector for " +conn.getConnectorName() + " ID: "+conn.getID()); index++; } } // @Test // public void postMessage(){ // Message msg = new Message(); // msg.setData("This is a JUNIT Test POST!"); // socialData.postMessage(SocialNetwork.FACEBOOK, msg); // } // /* @Test public void postCheckin(){ HashMap<String, String> data = new HashMap<String, String>(); data.put(ISocialData.POST_TYPE, ISocialData.CHECKIN); data.put(ISocialData.POST_PLACE, "171512719546772"); data.put(ISocialData.POST_MESSAGE, "I'm doing a TEST checking @Trinity Capital Hotel Dublin"); data.put(ISocialData.POST_LAT, "53.345149444145"); data.put(ISocialData.POST_LON, "-6.2539714878708"); socialData.postData(SocialNetwork.Facebook, data); } @Test public void postEvent(){ HashMap<String, String> data = new HashMap<String, String>(); data.put(ISocialData.POST_TYPE, ISocialData.EVENT); data.put(ISocialData.POST_DESCR, "This is an automatic test generated by JUNIT"); data.put(ISocialData.POST_NAME, "Test Event for SOCIETIES"); data.put(ISocialData.POST_LOCATION, "Nowhere, it's just a test"); data.put(ISocialData.POST_FROM, "2013-08-01 10:00"); data.put(ISocialData.POST_TO, "2013-08-02 10:00"); socialData.postData(SocialNetwork.Facebook, data); } */ }