package org.transgalactica.management.business.logistics.service.config;
import static org.transgalactica.management.business.logistics.service.mock.MockFactory.mockHangarEntity;
import static org.transgalactica.management.business.logistics.service.mock.MockFactory.mockHangarSearchCriteria;
import static org.transgalactica.management.business.logistics.service.mock.MockFactory.mockVaisseauEntity;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.transgalactica.fwk.test.util.SecurityContextTestUtils;
import org.transgalactica.management.business.logistics.TestConfig;
import org.transgalactica.management.business.logistics.service.HangarService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestConfig.class)
public class HangarServiceConfigurationRolesTest {
@Autowired
@Qualifier("noOperationHangarService")
private HangarService serviceHangar;
private void setGestionnaireInContext() {
SecurityContextTestUtils.setUsernamePasswordAuthenticationTokenInSecurityContext("gestionnaire", "xxx",
"ROLE_GESTIONNAIRE");
}
private void setSuperGestionnaireInContext() {
SecurityContextTestUtils.setUsernamePasswordAuthenticationTokenInSecurityContext("superGestionnaire", "xxx",
"ROLE_SUPER_GESTIONNAIRE");
}
@Test
public void testRechercherHangars_RoleAnomyme() {
SecurityContextTestUtils.setAnomymeInContext();
this.serviceHangar.rechercherHangars(mockHangarSearchCriteria());
}
@Test
public void testRechercherHangars_RoleSuperGestionnaire() {
setSuperGestionnaireInContext();
this.serviceHangar.rechercherHangars(mockHangarSearchCriteria());
}
@Test
public void testRechercherHangars_RoleGestionnaire() {
setGestionnaireInContext();
this.serviceHangar.rechercherHangars(mockHangarSearchCriteria());
}
@Test(expected = AccessDeniedException.class)
public void testChargerHangar_RoleAnomyme() {
SecurityContextTestUtils.setAnomymeInContext();
this.serviceHangar.chargerHangar(null);
}
@Test
public void testChargerHangar_RoleSuperGestionnaire() {
setSuperGestionnaireInContext();
this.serviceHangar.chargerHangar(1L);
}
@Test
public void testChargerHangar_RoleGestionnaire() {
setGestionnaireInContext();
this.serviceHangar.chargerHangar(1L);
}
@Test(expected = AccessDeniedException.class)
public void testEnregistrerHangar_RoleAnomyme() {
SecurityContextTestUtils.setAnomymeInContext();
this.serviceHangar.enregistrerHangar(mockHangarEntity());
}
@Test
public void testEnregistrerHangar_RoleSuperGestionnaire() {
setSuperGestionnaireInContext();
this.serviceHangar.enregistrerHangar(mockHangarEntity());
}
@Test(expected = AccessDeniedException.class)
public void testEnregistrerHangar_RoleGestionnaire() {
setGestionnaireInContext();
this.serviceHangar.enregistrerHangar(mockHangarEntity());
}
@Test(expected = AccessDeniedException.class)
public void testSupprimerHangar_RoleAnomyme() {
SecurityContextTestUtils.setAnomymeInContext();
this.serviceHangar.supprimerHangar(mockHangarEntity());
}
@Test
public void testSupprimerHangar_RoleSuperGestionnaire() {
setSuperGestionnaireInContext();
this.serviceHangar.supprimerHangar(mockHangarEntity());
}
@Test(expected = AccessDeniedException.class)
public void testSupprimerHangar_RoleGestionnaire() {
setGestionnaireInContext();
this.serviceHangar.supprimerHangar(mockHangarEntity());
}
@Test(expected = AccessDeniedException.class)
public void testAffecterVaisseauAuHangar_RoleAnomyme() {
SecurityContextTestUtils.setAnomymeInContext();
this.serviceHangar.affecterVaisseauAuHangar(mockVaisseauEntity(), mockHangarEntity());
}
@Test
public void testAffecterVaisseauAuHangar_RoleSuperGestionnaire() {
setSuperGestionnaireInContext();
this.serviceHangar.affecterVaisseauAuHangar(mockVaisseauEntity(), mockHangarEntity());
}
public void testAffecterVaisseauAuHangar_RoleGestionnaire() {
setGestionnaireInContext();
this.serviceHangar.affecterVaisseauAuHangar(mockVaisseauEntity(), mockHangarEntity());
}
}