package eu.europeana.cloud.service.dps.rest;
import eu.europeana.cloud.service.dps.exception.AccessDeniedOrTopologyDoesNotExistException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.validation.constraints.NotNull;
//TODO fix commented test
//@RunWith(SpringJUnit4ClassRunner.class)
public class TopologiesResourceAATest extends AbstractSecurityTest {
//@Autowired
//@NotNull
private TopologiesResource topologiesResource;
/**
* Pre-defined users
*/
private final static String RANDOM_PERSON = "Cristiano";
private final static String RANDOM_PASSWORD = "Ronaldo";
private final static String VAN_PERSIE = "Robin_Van_Persie";
private final static String VAN_PERSIE_PASSWORD = "Feyenoord";
private final static String RONALDO = "Cristiano";
private final static String RONALD_PASSWORD = "Ronaldo";
private final static String ADMIN = "admin";
private final static String ADMIN_PASSWORD = "admin";
private final static String SAMPLE_TOPOLOGY_NAME = "sampleTopology";
//@Test
public void shouldBeAbleToAssignPermissionsWhenAdmin() throws AccessDeniedOrTopologyDoesNotExistException {
login(ADMIN, ADMIN_PASSWORD);
String topology = "xsltTopology";
topologiesResource.grantPermissionsToTopology("krystian", topology);
}
//@Test(expected = AuthenticationCredentialsNotFoundException.class)
public void shouldThrowExceptionWhenNonAuthenticatedUserTriesToAssignPermissionsToTopology() throws AccessDeniedOrTopologyDoesNotExistException {
String topology = "xsltTopology";
topologiesResource.grantPermissionsToTopology(RANDOM_PERSON, topology);
}
//@Test(expected = AccessDeniedException.class)
public void shouldThrowExceptionWhenNonAdminUserTriesToAssignPermissionsToTopology() throws AccessDeniedOrTopologyDoesNotExistException {
login(VAN_PERSIE, VAN_PERSIE_PASSWORD);
String topology = "xsltTopology";
topologiesResource.grantPermissionsToTopology(RANDOM_PERSON, topology);
}
//@Test
public void shouldBeAbleToAssignMoreThanOneDifferentPermissionsToSameTopology() throws AccessDeniedOrTopologyDoesNotExistException {
login(ADMIN, ADMIN_PASSWORD);
String topology = "xsltTopology";
topologiesResource.grantPermissionsToTopology("sampleUser", topology);
topologiesResource.grantPermissionsToTopology("sampleUser1", topology);
}
}