//package fr.ippon.tatami.web.syndic; // //import com.fasterxml.jackson.databind.ObjectMapper; //import fr.ippon.tatami.AbstractCassandraTatamiTest; //import fr.ippon.tatami.domain.User; //import fr.ippon.tatami.security.AuthenticationService; //import fr.ippon.tatami.service.StatusUpdateService; //import fr.ippon.tatami.service.TimelineService; //import fr.ippon.tatami.service.UserService; //import fr.ippon.tatami.service.dto.StatusDTO; //import fr.ippon.tatami.web.rest.AccountController; //import fr.ippon.tatami.web.rest.TimelineController; //import fr.ippon.tatami.web.rest.dto.Preferences; //import org.apache.commons.lang.CharEncoding; //import org.junit.Before; //import org.junit.Test; //import org.springframework.context.i18n.LocaleContextHolder; //import org.springframework.context.support.ReloadableResourceBundleMessageSource; //import org.springframework.core.env.Environment; //import org.springframework.http.MediaType; //import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; //import org.springframework.security.core.Authentication; //import org.springframework.security.core.GrantedAuthority; //import org.springframework.security.core.context.SecurityContextHolder; //import org.springframework.test.util.ReflectionTestUtils; //import org.springframework.test.web.servlet.MockMvc; //import org.springframework.test.web.servlet.setup.MockMvcBuilders; //import org.springframework.web.servlet.ModelAndView; // //import javax.inject.Inject; //import java.util.ArrayList; //import java.util.Collection; //import java.util.Locale; // //import static org.junit.Assert.assertEquals; //import static org.mockito.Mockito.mock; //import static org.mockito.Mockito.when; //import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; //import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; //import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; // //public class SyndicTimelineControllerTest extends AbstractCassandraTatamiTest { // // @Inject // private TimelineService timelineService; // // @Inject // private StatusUpdateService statusUpdateService; // // @Inject // private UserService userService; // // @Inject // Environment env; // // private MockMvc mockMvc; // // private MockMvc timelineMockMvc; // // private MockMvc accountMockMvc; // // private static final String username = "timelineUser"; // // @Before // public void setup() { // // TimelineController timelineController = new TimelineController(); // ReflectionTestUtils.setField(timelineController, "timelineService", timelineService); // ReflectionTestUtils.setField(timelineController, "statusUpdateService", statusUpdateService); // // User authenticateUser = constructAUser(username + "@ippon.fr"); // AuthenticationService mockAuthenticationService = mock(AuthenticationService.class); // when(mockAuthenticationService.getCurrentUser()).thenReturn(authenticateUser); // ReflectionTestUtils.setField(timelineController, "authenticationService", mockAuthenticationService); // ReflectionTestUtils.setField(userService, "authenticationService", mockAuthenticationService); // ReflectionTestUtils.setField(timelineService, "authenticationService", mockAuthenticationService); // ReflectionTestUtils.setField(statusUpdateService, "authenticationService", mockAuthenticationService); // this.timelineMockMvc = MockMvcBuilders.standaloneSetup(timelineController).build(); // // AccountController accountController = new AccountController(); // ReflectionTestUtils.setField(accountController, "userService", userService); // ReflectionTestUtils.setField(accountController, "env", env); // ReflectionTestUtils.setField(accountController, "authenticationService", mockAuthenticationService); // this.accountMockMvc = MockMvcBuilders.standaloneSetup(accountController).build(); // // SyndicTimelineController syndicTimelineController = new SyndicTimelineController(); // ReflectionTestUtils.setField(syndicTimelineController, "timelineService", timelineService); // ReflectionTestUtils.setField(syndicTimelineController, "userService", userService); // // ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); // messageSource.setBasename("file:src/main/webapp/WEB-INF/messages/messages"); // messageSource.setDefaultEncoding(CharEncoding.UTF_8); // ReflectionTestUtils.setField(syndicTimelineController, "messageSource", messageSource); // this.mockMvc = MockMvcBuilders.standaloneSetup(syndicTimelineController).build(); // } // // @Test // @SuppressWarnings("unchecked") // public void testStatusUpdate() throws Exception { // LocaleContextHolder.setLocale(Locale.US); // // // Post content // timelineMockMvc.perform(post("/rest/statuses/") // .contentType(MediaType.APPLICATION_JSON) // .content("{\"content\":\"Test status for RSS syndication\"}")) // .andExpect(status().isOk()); // // // Get a RSS stream that is not correct // // mockMvc.perform(get("/syndic/12345")) // .andExpect(status().isNotFound()); // // // Enable RSS for this user // org.springframework.security.core.userdetails.User userDetails = // new org.springframework.security.core.userdetails.User(username, "", new ArrayList<GrantedAuthority>()); // // Authentication authentication = // new UsernamePasswordAuthenticationToken(userDetails, // userDetails.getPassword(), // userDetails.getAuthorities()); // // SecurityContextHolder.getContext().setAuthentication(authentication); // accountMockMvc.perform(post("/rest/account/preferences") // .contentType(MediaType.APPLICATION_JSON) // .content("{\"mentionEmail\":true," + // "\"weeklyDigest\":false," + // "\"dailyDigest\":false," + // "\"rssUidActive\":true," + // "\"rssUid\":\"\"}")) // .andExpect(status().isOk()); // // //Get RSS ID // String preferencesAsJson = accountMockMvc.perform(get("/rest/account/preferences") // .accept(MediaType.APPLICATION_JSON)) // .andExpect(status().isOk()) // .andExpect(content().contentType("application/json")) // .andExpect(jsonPath("$.rssUidActive").value(true)) // .andReturn().getResponse().getContentAsString(); // // Preferences preferences = new ObjectMapper().readValue(preferencesAsJson, Preferences.class); // // String rssId = preferences.getRssUid(); // // ModelAndView result = mockMvc.perform(get("/syndic/" + rssId)) // .andExpect(status().isOk()) // .andReturn().getModelAndView(); // // Collection<StatusDTO> statuses = (Collection<StatusDTO>) result.getModel().get("feedContent"); // assertEquals("Test status for RSS syndication", statuses.iterator().next().getContent()); // // } //}