package eu.europeana.cloud.service.uis;
import eu.europeana.cloud.common.exceptions.ProviderDoesNotExistException;
import eu.europeana.cloud.common.model.DataProvider;
import eu.europeana.cloud.common.model.IdentifierErrorInfo;
import eu.europeana.cloud.common.web.ParamConstants;
import eu.europeana.cloud.service.uis.exception.ProviderAlreadyExistsException;
import eu.europeana.cloud.service.uis.rest.DataProviderActivationResource;
import eu.europeana.cloud.service.uis.rest.JerseyConfig;
import eu.europeana.cloud.service.uis.status.IdentifierErrorTemplate;
import org.glassfish.jersey.test.JerseyTest;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.springframework.context.ApplicationContext;
import javax.ws.rs.Path;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.Response;
/**
* Tests for DataProviderActivationResource.class
*/
public class DataProviderActivationResourceTest extends JerseyTest {
private DataProviderService dataProviderService;
private WebTarget dataProviderActivationWebTarget;
@Override
public Application configure() {
return new JerseyConfig().property("contextConfigLocation",
"classpath:/uis-context-test.xml");
}
@Before
public void mockUp() {
ApplicationContext applicationContext = ApplicationContextUtils
.getApplicationContext();
dataProviderService = applicationContext
.getBean(DataProviderService.class);
Mockito.reset(dataProviderService);
dataProviderActivationWebTarget = target(DataProviderActivationResource.class
.getAnnotation(Path.class).value());
}
@Test
public void shoudDeactivateDataProvider() throws ProviderAlreadyExistsException, ProviderDoesNotExistException {
DataProvider dp = new DataProvider();
Mockito.when(
dataProviderService.getProvider(Mockito.anyString())).thenReturn(dp);
Mockito.when(
dataProviderService.updateProvider(Mockito.any(DataProvider.class))).thenReturn(dp);
WebTarget providerWebTarget = dataProviderActivationWebTarget.resolveTemplate(
ParamConstants.P_PROVIDER, "sampleProvider");
Response deleteResponse = providerWebTarget.request().delete();
Assert.assertEquals(deleteResponse.getStatus(), 200);
}
@Test
public void shouldThrowExceptionWhenProviderDoesNotExists() throws Exception {
DataProvider dp = new DataProvider();
Mockito.when(
dataProviderService.getProvider(Mockito.anyString())).thenThrow(
new ProviderDoesNotExistException(new IdentifierErrorInfo(
IdentifierErrorTemplate.PROVIDER_DOES_NOT_EXIST
.getHttpCode(),
IdentifierErrorTemplate.PROVIDER_DOES_NOT_EXIST
.getErrorInfo("provident"))));
Mockito.when(
dataProviderService.updateProvider(Mockito.any(DataProvider.class))).thenReturn(dp);
WebTarget providerWebTarget = dataProviderActivationWebTarget.resolveTemplate(
ParamConstants.P_PROVIDER, "sampleProvider");
Response deleteResponse = providerWebTarget.request().delete();
Assert.assertEquals(deleteResponse.getStatus(), 404);
}
}