@Test public void testSources() { // Create User user = serviceFacade.getUserManager().getUserByEMail("*****@*****.**"); // Connect facebook SocialSource src = new SocialSource(); serviceFacade.getSourceManager().connectSourceToUser(user, "123", "facebook", src); Assert.assertEquals(serviceFacade.getSourceManager().getRevokedSources(user.getId()).size(), 0); Assert.assertEquals(serviceFacade.getSourceManager().getAliveSources(user.getId()).size(), 1); Assert.assertNotEquals( serviceFacade.getSourceManager().getWaitingSources(user.getId()).get(0).getSourceCode(), "facebook"); Assert.assertEquals( serviceFacade.getUserManager().getDummyUserByExtCreds("123", "facebook"), null); Assert.assertEquals( serviceFacade.getUserManager().getUserBySocialSource("123", "facebook"), user); Assert.assertEquals(serviceFacade.getUserManager().getUserByExtCreds("facebook", "123"), user); // Connect second source - twitter src = new SocialSource(); serviceFacade.getSourceManager().connectSourceToUser(user, "234", "twitter", src); Assert.assertEquals(serviceFacade.getSourceManager().getRevokedSources(user.getId()).size(), 0); Assert.assertEquals(serviceFacade.getSourceManager().getAliveSources(user.getId()).size(), 2); Assert.assertEquals(serviceFacade.getSourceManager().getAll(user.getId()).size(), 2); Assert.assertEquals( serviceFacade.getUserManager().getDummyUserByExtCreds("234", "twitter"), null); Assert.assertEquals( serviceFacade.getUserManager().getUserBySocialSource("234", "twitter"), user); Assert.assertEquals(serviceFacade.getUserManager().getUserByExtCreds("twitter", "234"), user); // Update facebook token src = new SocialSource(); src.setAccessToken("acctoken"); serviceFacade.getSourceManager().connectSourceToUser(user, "123", "facebook", src); src = serviceFacade.getSourceManager().get(user.getId(), "facebook"); Assert.assertEquals(src.getUserId(), user.getId()); Assert.assertEquals(src.getExtId(), "123"); Assert.assertEquals(src.getAccessToken(), "acctoken"); // Create dummy user User user2 = new User(); user2.setExtId("123456"); user2.setSourceCode("vkontakte"); user2.setName("Eugene Zhulkov"); serviceFacade.getUserManager().create(user2); Assert.assertEquals( serviceFacade.getUserManager().getDummyUserByExtCreds("123456", "vkontakte"), user2); Assert.assertEquals( serviceFacade.getUserManager().getUserBySocialSource("123456", "vkontakte"), null); Assert.assertEquals( serviceFacade.getUserManager().getUserByExtCreds("vkontakte", "123456"), user2); // Connect 3rd source - vkontakte src = new SocialSource(); serviceFacade.getSourceManager().connectSourceToUser(user, "123456", "vkontakte", src); Assert.assertEquals(serviceFacade.getSourceManager().getAll(user.getId()).size(), 3); Assert.assertEquals(serviceFacade.getUserManager().get(user2.getId()), null); Assert.assertEquals( serviceFacade.getUserManager().getDummyUserByExtCreds("123456", "vkontakte"), null); Assert.assertEquals( serviceFacade.getUserManager().getUserBySocialSource("123456", "vkontakte"), user); Assert.assertEquals( serviceFacade.getUserManager().getUserByExtCreds("vkontakte", "123456"), user); // Revoke 1 source serviceFacade.getSourceManager().revokeSourceFromUser(user, "vkontakte"); Assert.assertEquals(serviceFacade.getSourceManager().getAll(user.getId()).size(), 3); Assert.assertEquals(serviceFacade.getSourceManager().getRevokedSources(user.getId()).size(), 1); Assert.assertEquals(serviceFacade.getSourceManager().getAliveSources(user.getId()).size(), 2); }
@Test public void testSocial() { // Create User user = serviceFacade.getUserManager().getUserByEMail("*****@*****.**"); // Connect social sources User user2; user2 = serviceFacade.getUserManager().getUserBySocialSource("1234", "facebook"); Assert.assertNull(user2); SocialSource token = serviceFacade.getSourceManager().get(user.getId(), "facebook"); Assert.assertNull(token); token = new SocialSource(); token.setSourceCode("facebook"); token.setExtId("1234"); token.setUserId(user.getId()); serviceFacade.getSourceManager().create(token); token = new SocialSource(); token.setSourceCode("vkontakte"); token.setExtId("4321"); token.setUserId(user.getId()); serviceFacade.getSourceManager().create(token); // Get named source for user token = serviceFacade.getSourceManager().get(user.getId(), "facebook"); Assert.assertNotNull(token); Assert.assertEquals(token.getExtId(), "1234"); token = serviceFacade.getSourceManager().get(user.getId(), "vkontakte"); Assert.assertNotNull(token); Assert.assertEquals(token.getExtId(), "4321"); // Get user by social creds user2 = serviceFacade.getUserManager().getUserBySocialSource("1234", "facebook"); Assert.assertNotNull(user2); Assert.assertEquals(user2.getId(), user.getId()); user2 = serviceFacade.getUserManager().getUserBySocialSource("4321", "vkontakte"); Assert.assertNotNull(user2); Assert.assertEquals(user2.getId(), user.getId()); // Get all sources for user List<SocialSource> sources = serviceFacade.getSourceManager().getAll(user.getId()); Assert.assertNotNull(sources); Assert.assertEquals(sources.size(), 2); // Create another user User user3 = new User(); user3.setEmail("*****@*****.**"); user3.setName("Eugene Zhulkov"); serviceFacade.getUserManager().create(user3); // Connect 3 nets SocialSource token1 = new SocialSource(); token1.setSourceCode("facebook"); token1.setExtId("12342"); token1.setUserId(user3.getId()); serviceFacade.getSourceManager().create(token1); SocialSource token2 = new SocialSource(); token2.setSourceCode("vkontakte"); token2.setExtId("43212"); token2.setUserId(user3.getId()); serviceFacade.getSourceManager().create(token2); SocialSource token3 = new SocialSource(); token3.setSourceCode("twitter"); token3.setExtId("11112"); token3.setUserId(user3.getId()); serviceFacade.getSourceManager().create(token3); Assert.assertEquals(serviceFacade.getSourceManager().getAll(user.getId()).size(), 2); Assert.assertEquals(serviceFacade.getSourceManager().getAll(user3.getId()).size(), 3); Assert.assertEquals( serviceFacade.getUserManager().getUserBySocialSource("12342", "facebook").getId(), user3.getId()); Assert.assertEquals( serviceFacade.getUserManager().getUserBySocialSource("1234", "facebook").getId(), user.getId()); // Disconnect sources serviceFacade .getSourceManager() .disconnectSourceFromUser(user, SocialSource.SourceType.OAUTH, token1.getSourceCode()); serviceFacade .getSourceManager() .disconnectSourceFromUser(user3, SocialSource.SourceType.OAUTH, token1.getSourceCode()); Assert.assertEquals(serviceFacade.getSourceManager().getAll(user.getId()).size(), 1); Assert.assertEquals(serviceFacade.getSourceManager().getAll(user3.getId()).size(), 2); serviceFacade .getSourceManager() .disconnectSourceFromUser(user, SocialSource.SourceType.OAUTH, token2.getSourceCode()); serviceFacade .getSourceManager() .disconnectSourceFromUser(user3, SocialSource.SourceType.OAUTH, token2.getSourceCode()); Assert.assertEquals(serviceFacade.getSourceManager().getAll(user.getId()).size(), 0); Assert.assertEquals(serviceFacade.getSourceManager().getAll(user3.getId()).size(), 1); serviceFacade .getSourceManager() .disconnectSourceFromUser(user, SocialSource.SourceType.OAUTH, token3.getSourceCode()); serviceFacade .getSourceManager() .disconnectSourceFromUser(user3, SocialSource.SourceType.OAUTH, token3.getSourceCode()); Assert.assertEquals(serviceFacade.getSourceManager().getAll(user.getId()).size(), 0); Assert.assertEquals(serviceFacade.getSourceManager().getAll(user3.getId()).size(), 0); }
@Test public void testTimePaging() throws Exception { User user = serviceFacade.getUserManager().getUserByEMail("*****@*****.**"); serviceFacade.getPostManager().deleteAll(user.getId()); serviceFacade.getRelationManager().deleteAll(); serviceFacade.getSourceManager().deleteAll(user.getId()); TestTimeSource tts1 = new TestTimeSource(user, "t1", 51, 2, 50, 0); TestTimeSource tts2 = new TestTimeSource(user, "t2", 11, 1, 100, 200); TestTimePagedSource tts3 = new TestTimePagedSource(user, "t3", 100, 1, 5, 75); TestTimePagedSource tts4 = new TestTimePagedSource(user, "t4", 217, 3, 7, 13); serviceFacade.getSourceManager().registerNewBean("t1", tts1); serviceFacade.getSourceManager().registerNewBean("t2", tts2); serviceFacade.getSourceManager().registerNewBean("t3", tts3); serviceFacade.getSourceManager().registerNewBean("t4", tts4); SocialSource st = new SocialSource("", "", "", ""); st.setSourceCode(tts1.getSourceCode()); st.setUserId(user.getId()); serviceFacade.getSourceManager().create(st); st = new SocialSource("", "", "", ""); st.setSourceCode(tts2.getSourceCode()); st.setUserId(user.getId()); serviceFacade.getSourceManager().create(st); st = new SocialSource("", "", "", ""); st.setSourceCode(tts3.getSourceCode()); st.setUserId(user.getId()); serviceFacade.getSourceManager().create(st); st = new SocialSource("", "", "", ""); st.setSourceCode(tts4.getSourceCode()); st.setUserId(user.getId()); serviceFacade.getSourceManager().create(st); serviceFacade.getSourceManager().getActualSources(user.getId(), RelationType.WALL); Assert.assertEquals(tts1.posts.size(), 51); Assert.assertEquals(tts2.posts.size(), 11); Assert.assertEquals(tts3.posts.size(), 100); Assert.assertEquals(tts4.posts.size(), 217); Assert.assertEquals(tts3.getTimelineSource(null, null, null).getObjects(0, 10).size(), 10); Assert.assertEquals(tts3.getTimelineSource(null, null, null).getObjects(0, 100).size(), 100); Assert.assertEquals(tts3.getTimelineSource(null, null, null).getObjects(0, 300).size(), 100); // Simple read from sources List<Post> posts; serviceFacade.getPostManager().deleteAll(user.getId()); serviceFacade.getRelationManager().deleteAll(); posts = readFromSource(user, "t1", 0, 2); Assert.assertEquals(posts.size(), tts1.posts.size()); Assert.assertEquals(posts.get(0).getPid(), "t1_50"); Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t1_0"); checkTimestamps(posts); posts = readFromSource(user, "t2", 0, 4); Assert.assertEquals(posts.size(), tts2.posts.size()); Assert.assertEquals(posts.get(0).getPid(), "t2_10"); Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t2_0"); checkTimestamps(posts); posts = readFromSource(user, "t3", 0, 11); Assert.assertEquals(posts.size(), tts3.posts.size()); Assert.assertEquals(posts.get(0).getPid(), "t3_99"); Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t3_0"); checkTimestamps(posts); posts = readFromSource(user, "t4", 0, 13); Assert.assertEquals(posts.size(), tts4.posts.size()); Assert.assertEquals(posts.get(0).getPid(), "t4_216"); Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t4_0"); checkTimestamps(posts); // Simple read from all sources posts = readFromSource(user, null, 0, 15); Assert.assertEquals(posts.size(), 379); checkTimestamps(posts); serviceFacade.getPostManager().deleteAll(user.getId()); serviceFacade.getRelationManager().deleteAll(); posts = readFromSource(user, null, 0, 15); Assert.assertEquals(posts.size(), 379); checkTimestamps(posts); // Add new posts to t2 and t4 ((LinkedList) tts2.posts).addFirst(makePost("t2_new1", tts2.getSourceCode(), user, 2000)); ((LinkedList) tts2.posts).addFirst(makePost("t2_new2", tts2.getSourceCode(), user, 2010)); ((LinkedList) tts2.posts).addFirst(makePost("t2_new3", tts2.getSourceCode(), user, 2100)); ((LinkedList) tts4.posts).addFirst(makePost("t4_new1", tts4.getSourceCode(), user, 1999)); ((LinkedList) tts4.posts).addFirst(makePost("t4_new2", tts4.getSourceCode(), user, 2010)); ((LinkedList) tts4.posts).addFirst(makePost("t4_new3", tts4.getSourceCode(), user, 2011)); posts = readFromSource(user, "t2", 0, 10); Assert.assertEquals(posts.size(), tts2.posts.size()); Assert.assertEquals(posts.get(0).getPid(), "t2_new3"); Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t2_0"); checkTimestamps(posts); posts = readFromSource(user, "t4", 0, 11); Assert.assertEquals(posts.size(), tts4.posts.size()); Assert.assertEquals(posts.get(0).getPid(), "t4_new3"); Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t4_0"); checkTimestamps(posts); posts = readFromSource(user, null, 0, 15); Assert.assertEquals(385, posts.size()); checkTimestamps(posts); ((LinkedList) tts4.posts).addFirst(makePost("t4_new4", tts4.getSourceCode(), user, 2015)); ((LinkedList) tts4.posts).addFirst(makePost("t4_new5", tts4.getSourceCode(), user, 2016)); ((LinkedList) tts4.posts).addFirst(makePost("t4_new6", tts4.getSourceCode(), user, 2017)); posts = readFromSource(user, "t4", 0, 11); Assert.assertEquals(posts.size(), tts4.posts.size()); Assert.assertEquals(posts.get(0).getPid(), "t4_new6"); Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t4_0"); checkTimestamps(posts); posts = readFromSource(user, null, 0, 7); Assert.assertEquals(388, posts.size()); checkTimestamps(posts); // Connect new source TestTimePagedSource tts5 = new TestTimePagedSource(user, "t5", 13, 1, 50, 0); serviceFacade.getSourceManager().registerNewBean("t5", tts5); st = new SocialSource("", "", "", ""); st.setSourceCode(tts5.getSourceCode()); st.setUserId(user.getId()); serviceFacade.getSourceManager().create(st); posts = readFromSource(user, "t5", 0, 20); Assert.assertEquals(posts.size(), tts5.posts.size()); Assert.assertEquals(posts.get(0).getPid(), "t5_12"); Assert.assertEquals(posts.get(posts.size() - 1).getPid(), "t5_0"); checkTimestamps(posts); posts = readFromSource(user, null, 0, 10); Assert.assertEquals(401, posts.size()); checkTimestamps(posts); serviceFacade.getSourceManager().unRegisterBean("t1"); serviceFacade.getSourceManager().unRegisterBean("t2"); serviceFacade.getSourceManager().unRegisterBean("t3"); serviceFacade.getSourceManager().unRegisterBean("t4"); serviceFacade.getSourceManager().unRegisterBean("t5"); // Read one source then connect and read another serviceFacade.getPostManager().deleteAll(user.getId()); serviceFacade.getRelationManager().deleteAll(); serviceFacade.getSourceManager().deleteAll(user.getId()); TestTimePagedSource tts6 = new TestTimePagedSource(user, "t6", 100, 1, 5, 0); TestTimePagedSource tts7 = new TestTimePagedSource(user, "t7", 50, 1, 10, 0); serviceFacade.getSourceManager().registerNewBean("t6", tts6); st = new SocialSource("", "", "", ""); st.setSourceCode(tts6.getSourceCode()); st.setUserId(user.getId()); serviceFacade.getSourceManager().create(st); posts = readFromSource(user, "t6", 0, 10); Assert.assertEquals(posts.size(), 100); serviceFacade.getSourceManager().registerNewBean("t7", tts7); st = new SocialSource("", "", "", ""); st.setSourceCode(tts7.getSourceCode()); st.setUserId(user.getId()); serviceFacade.getSourceManager().create(st); posts = readFromSource(user, null, 0, 10); Assert.assertEquals(posts.size(), 150); serviceFacade.getSourceManager().unRegisterBean("t6"); serviceFacade.getSourceManager().unRegisterBean("t7"); // Read then delete then read again serviceFacade.getPostManager().deleteAll(user.getId()); serviceFacade.getRelationManager().deleteAll(); serviceFacade.getSourceManager().deleteAll(user.getId()); TestTimePagedSource tts8 = new TestTimePagedSource(user, "t8", 100, 1, 10, 0); serviceFacade.getSourceManager().registerNewBean("t8", tts8); st = new SocialSource("", "", "", ""); st.setSourceCode(tts8.getSourceCode()); st.setUserId(user.getId()); serviceFacade.getSourceManager().create(st); // del in the beginning posts = readFromSource(user, null, 0, 10); Assert.assertEquals(posts.size(), 100); posts = tts8.posts; for (int i = 0; i < 10; i++) { posts.remove(0); } posts = readFromSource(user, null, 0, 10); Assert.assertEquals(posts.size(), 100); // in the center posts = tts8.posts; for (int i = 0; i < 10; i++) { posts.remove(50); } posts = readFromSource(user, null, 0, 10); Assert.assertEquals(posts.size(), 100); // at the end posts = tts8.posts; for (int i = 0; i < 10; i++) { posts.remove(posts.size() - 1); } posts = readFromSource(user, null, 0, 10); Assert.assertEquals(posts.size(), 100); // full tts8.posts.clear(); posts = readFromSource(user, null, 0, 10); Assert.assertEquals(posts.size(), 100); // Read 50 posts then delete some then read again serviceFacade.getPostManager().deleteAll(user.getId()); serviceFacade.getRelationManager().deleteAll(); posts.clear(); tts8 = new TestTimePagedSource(user, "t8", 100, 1, 10, 0); serviceFacade.getSourceManager().registerNewBean("t8", tts8); TimelineObjectIterator it = serviceFacade.getPostManager().getObjectsIterator(RelationType.WALL); it.setCount(10); it.setOffset(0); for (int i = 0; i < 5; i++) { it.hasNext( user, null, null, null, Collections.singleton(tts8.getSourceCode()), RelationType.WALL, true); posts.addAll(it.next()); } Assert.assertEquals(posts.size(), 50); posts = tts8.posts; for (int i = 0; i < 10; i++) { posts.remove(45); } posts = readFromSource(user, null, 0, 10); Assert.assertEquals(posts.size(), 90); // does not work - skips last 10 post ( serviceFacade.getSourceManager().unRegisterBean("t8"); }