import eu.dnetlib.api.functionality.UserProfileService;
import eu.dnetlib.api.functionality.UserProfileServiceException;
import eu.dnetlib.domain.functionality.UserProfile;
import eu.dnetlib.domain.functionality.UserProfileSearchCriteria;
import gr.uoa.di.driver.util.ServiceLocator;

import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestUserProfileWebService {

	private static ServiceLocator<UserProfileService> locator = null;
	private static ApplicationContext context = null;
	
	@SuppressWarnings("unchecked")
	@BeforeClass
	public static void setup() {
		context = new ClassPathXmlApplicationContext(
				new String[] { "file:test/junit/cxf-config.xml" });
		
		locator = (ServiceLocator<UserProfileService>) context
				.getBean("profileLocator");
	}
	
	@Test
	public void testService()  {
		try {
			System.out.println("Creating profile");
			UserProfile profile = new UserProfile();
			
			profile.setEmail("email");
			profile.setPassword("password");
			profile.setActivationId("activationId");
			
			long start = System.currentTimeMillis();
			profile = locator.getService().saveUser(profile);
			System.out.println("total time: " + (System.currentTimeMillis() - start));
			
			System.out.println("searching profiles");
			System.out.println(locator.getService().searchUsers(new UserProfileSearchCriteria()).size());
			
			System.out.println("removing profile");
			
			start = System.currentTimeMillis();
			locator.getService().deleteUserById(profile.getResourceId());
			System.out.println("total time: " + (System.currentTimeMillis() - start));
			
			System.out.println("done");
			
		} catch (UserProfileServiceException e) {
			e.printStackTrace();
		}
	}
}