//package fr.ippon.tatami.service.elasticsearch;
//
//import fr.ippon.tatami.AbstractCassandraTatamiTest;
//import fr.ippon.tatami.service.AdminService;
//import fr.ippon.tatami.service.SearchService;
//import org.junit.Test;
//import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
//import org.springframework.security.core.Authentication;
//import org.springframework.security.core.GrantedAuthority;
//import org.springframework.security.core.authority.SimpleGrantedAuthority;
//import org.springframework.security.core.context.SecurityContextHolder;
//
//import javax.inject.Inject;
//import java.util.ArrayList;
//import java.util.Collection;
//
//import static org.junit.Assert.assertEquals;
//
//public class ElasticsearchSearchServiceTest extends AbstractCassandraTatamiTest {
//
// @Inject
// private AdminService adminService;
//
// @Inject
// private SearchService searchService;
//
// @Test
// public void resetElasticSearch() throws InterruptedException {
// // The user needs to have the admin role
// GrantedAuthority adminAuthority = new SimpleGrantedAuthority("ROLE_ADMIN");
// Collection<GrantedAuthority> grantedAuthorities = new ArrayList<GrantedAuthority>();
// grantedAuthorities.add(adminAuthority);
//
// org.springframework.security.core.userdetails.User userDetails =
// new org.springframework.security.core.userdetails.User("tatami@ippon.fr", "", grantedAuthorities);
//
// Authentication authentication =
// new UsernamePasswordAuthenticationToken(userDetails,
// userDetails.getPassword(),
// userDetails.getAuthorities());
//
// SecurityContextHolder.getContext().setAuthentication(authentication);
//
// // Clean the index if needed
// searchService.reset();
//
// // Test the user index
// Collection<String> users = searchService.searchUserByPrefix("ippon.fr", "jdub");
// assertEquals(0, users.size());
//
// adminService.rebuildIndex();
//
// // Test every 100ms, for 30 seconds : this is the time for Elastic Search to index everything
// for (int i = 0; i < 100; i++) {
// Thread.sleep(300 * i);
// users = searchService.searchUserByPrefix("ippon.fr", "jdub");
// if (users.size() > 0) {
// break;
// }
// }
//
// assertEquals(1, users.size());
// assertEquals("jdubois@ippon.fr", users.iterator().next());
// }
//}