package com.constellio.app.services.schemas.bulkImport.authorization;
import static com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorizationValidator.VALID_ROLES;
import static java.util.Arrays.asList;
import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorization.ImportedAuthorizationPrincipal;
import com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorization.ImportedAuthorizationTarget;
import com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorizationValidatorRuntimeException.ImportedAuthorizationValidatorRuntimeException_AuthorizationIDMissing;
import com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorizationValidatorRuntimeException.ImportedAuthorizationValidatorRuntimeException_AuthorizationPrincipalsMissing;
import com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorizationValidatorRuntimeException.ImportedAuthorizationValidatorRuntimeException_AuthorizationTargetsMissing;
import com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorizationValidatorRuntimeException.ImportedAuthorizationValidatorRuntimeException_EmptyLegacyId;
import com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorizationValidatorRuntimeException.ImportedAuthorizationValidatorRuntimeException_EmptyPrincipalId;
import com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorizationValidatorRuntimeException.ImportedAuthorizationValidatorRuntimeException_InvalidAccess;
import com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorizationValidatorRuntimeException.ImportedAuthorizationValidatorRuntimeException_InvalidPrincipalType;
import com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorizationValidatorRuntimeException.ImportedAuthorizationValidatorRuntimeException_InvalidRole;
import com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorizationValidatorRuntimeException.ImportedAuthorizationValidatorRuntimeException_InvalidTargetType;
import com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorizationValidatorRuntimeException.ImportedAuthorizationValidatorRuntimeException_UseOfAccessAndRole;
public class ImportedAuthorizationValidatorTest {
ImportedAuthorizationValidator validator;
ImportedAuthorization validAuthorization;
@Before
public void setUp()
throws Exception {
validator = new ImportedAuthorizationValidator();
List<ImportedAuthorizationPrincipal> validPrincipals = asList(new ImportedAuthorizationPrincipal("user", "userLegacyId"),
new ImportedAuthorizationPrincipal("group", "groupLegacyId"));
List<ImportedAuthorizationTarget> validTargets = asList(new ImportedAuthorizationTarget("folder", "folderLegacyId"),
new ImportedAuthorizationTarget("document", "documentLegacyId"),
new ImportedAuthorizationTarget("administrativeUnit", "administrativeUnitLegacyId"),
new ImportedAuthorizationTarget("userTask", "userTaskLegacyId"));
validAuthorization = new ImportedAuthorization().setId("id").setPrincipals(validPrincipals)
.setTargets(validTargets).setAccess("r");
}
@Test
public void givenValidAuthorizationWhenValidatingThenOK()
throws Exception {
//valid authorization with access
validator.validate(validAuthorization);
//valid authorization with roles
validAuthorization.setAccess(null).setRoles(VALID_ROLES);
validator.validate(validAuthorization);
//valid authorization without access and without roles
validAuthorization.setAccess(null).setRoles(null);
validator.validate(validAuthorization);
}
@Test(expected = ImportedAuthorizationValidatorRuntimeException_InvalidAccess.class)
public void givenAuthorizationWithInvalidAccessWhenValidatingThenAdequateException()
throws Exception {
validAuthorization.setAccess("les");
validator.validate(validAuthorization);
}
@Test(expected = ImportedAuthorizationValidatorRuntimeException_InvalidRole.class)
public void givenAuthorizationWithInvalidRoleWhenValidatingThenAdequateException()
throws Exception {
validAuthorization.setRoles(asList("g"));
validator.validate(validAuthorization);
}
@Test(expected = ImportedAuthorizationValidatorRuntimeException_UseOfAccessAndRole.class)
public void givenAuthorizationWithRoleAndAccessWhenValidatingThenAdequateException()
throws Exception {
validAuthorization.setAccess("r").setRoles(VALID_ROLES);
validator.validate(validAuthorization);
}
@Test(expected = ImportedAuthorizationValidatorRuntimeException_AuthorizationIDMissing.class)
public void givenAuthorizationWithMissingIDWhenValidatingThenAdequateException()
throws Exception {
validAuthorization.setId(" ");
validator.validate(validAuthorization);
}
@Test(expected = ImportedAuthorizationValidatorRuntimeException_AuthorizationTargetsMissing.class)
public void givenAuthorizationWithMissingTargetsWhenValidatingThenAdequateException()
throws Exception {
validAuthorization.setTargets(null);
try {
validator.validate(validAuthorization);
fail("");
} catch (ImportedAuthorizationValidatorRuntimeException_AuthorizationTargetsMissing e) {
//ok
}
validAuthorization.setTargets(new ArrayList<ImportedAuthorizationTarget>());
validator.validate(validAuthorization);
}
@Test(expected = ImportedAuthorizationValidatorRuntimeException_AuthorizationPrincipalsMissing.class)
public void givenAuthorizationWithMissingPrincipalsWhenValidatingThenAdequateException()
throws Exception {
validAuthorization.setPrincipals(null);
try {
validator.validate(validAuthorization);
fail("");
} catch (ImportedAuthorizationValidatorRuntimeException_AuthorizationPrincipalsMissing e) {
//ok
}
validAuthorization.setPrincipals(new ArrayList<ImportedAuthorizationPrincipal>());
validator.validate(validAuthorization);
}
@Test(expected = ImportedAuthorizationValidatorRuntimeException_EmptyPrincipalId.class)
public void givenAuthorizationWithEmptyPrincipalIdWhenValidatingThenAdequateException()
throws Exception {
validAuthorization.setPrincipals(asList(new ImportedAuthorizationPrincipal("user", null)));
validator.validate(validAuthorization);
}
@Test(expected = ImportedAuthorizationValidatorRuntimeException_EmptyLegacyId.class)
public void givenAuthorizationWithEmptyTargetLegacyIdWhenValidatingThenAdequateException()
throws Exception {
validAuthorization.setTargets(asList(new ImportedAuthorizationTarget("folder", " ")));
validator.validate(validAuthorization);
}
@Test(expected = ImportedAuthorizationValidatorRuntimeException_InvalidPrincipalType.class)
public void givenAuthorizationWithInvalidPrincipalTypeWhenValidatingThenAdequateException()
throws Exception {
validAuthorization.setPrincipals(asList(new ImportedAuthorizationPrincipal("users", "legacyId")));
validator.validate(validAuthorization);
}
@Test(expected = ImportedAuthorizationValidatorRuntimeException_InvalidTargetType.class)
public void givenAuthorizationWithInvalidTargetTypeWhenValidatingThenAdequateException()
throws Exception {
validAuthorization.setTargets(asList(new ImportedAuthorizationTarget("folders", "legacyId")));
validator.validate(validAuthorization);
}
}