Package fr.ippon.tatami.service.elasticsearch

Source Code of fr.ippon.tatami.service.elasticsearch.ElasticsearchSearchServiceTest

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());
    }
}
TOP

Related Classes of fr.ippon.tatami.service.elasticsearch.ElasticsearchSearchServiceTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.