/**
*
*/
package org.identityconnectors.oracle;
import static org.testng.AssertJUnit.assertEquals;
import org.identityconnectors.framework.common.FrameworkUtil;
import org.identityconnectors.framework.spi.operations.CreateOp;
import org.identityconnectors.framework.spi.operations.SPIOperation;
import org.identityconnectors.framework.spi.operations.UpdateOp;
import org.identityconnectors.test.common.TestHelpers;
import org.testng.Assert;
import org.testng.AssertJUnit;
import org.testng.annotations.Test;
/**
* @author kitko
*
*/
public class ExtraAttributesPolicySetupBuilderTest {
/**
* Test method for
* {@link org.identityconnectors.oracle.ExtraAttributesPolicySetupBuilder#parseArray(java.lang.String[])}
* .
*/
@Test
public void testParseArray() {
ExtraAttributesPolicySetupBuilder builder =
new ExtraAttributesPolicySetupBuilder(TestHelpers.createDummyMessages());
builder.parseArray(null);
String[] array =
new String[] { "PASSWORD={create=IGNORE,update=FAIL}",
"PASSWORD_EXPIRE={update=IGNORE}" };
ExtraAttributesPolicySetup setup = builder.parseArray(array).build();
assertEquals(ExtraAttributesPolicy.IGNORE, setup.getPolicy(OracleUserAttribute.PASSWORD,
CreateOp.class));
assertEquals(ExtraAttributesPolicy.FAIL, setup.getPolicy(OracleUserAttribute.PASSWORD,
UpdateOp.class));
assertEquals(ExtraAttributesPolicy.FAIL, setup.getPolicy(
OracleUserAttribute.PASSWORD_EXPIRE, CreateOp.class));
assertEquals(ExtraAttributesPolicy.IGNORE, setup.getPolicy(
OracleUserAttribute.PASSWORD_EXPIRE, UpdateOp.class));
builder.clearPolicies();
setup =
builder.parseArray(
new String[] { "ALL={create=IGNORE,update=IGNORE}", "USER={update=FAIL}" })
.build();
for (OracleUserAttribute oua : OracleUserAttribute.values()) {
for (Class<? extends SPIOperation> op : FrameworkUtil.allSPIOperations()) {
if (OracleUserAttribute.USER.equals(oua) && UpdateOp.class.equals(op)) {
Assert.assertEquals(ExtraAttributesPolicy.FAIL, setup.getPolicy(oua, op));
continue;
}
if (CreateOp.class.equals(op) || UpdateOp.class.equals(op)) {
Assert.assertEquals(ExtraAttributesPolicy.IGNORE, setup.getPolicy(oua, op));
continue;
}
Assert.assertEquals(oua.getExtraAttributesPolicy(op), setup.getPolicy(oua, op));
}
}
try {
builder.parseArray(new String[] { "dummy" });
Assert.fail("Must fail for invalid array");
} catch (RuntimeException e) {
}
try {
builder.parseArray(new String[] { "dummy={a=b}" });
Assert.fail("Must fail for invalid array");
} catch (RuntimeException e) {
}
try {
builder.parseArray(new String[] { "PASSWORD={a=b}" });
Assert.fail("Must fail for invalid array");
} catch (RuntimeException e) {
}
try {
builder.parseArray(new String[] { "PASSWORD={invalid=FAIL}" });
Assert.fail("Must fail for invalid array");
} catch (RuntimeException e) {
}
try {
builder.parseArray(new String[] { "PASSWORD={create=invalid}" });
Assert.fail("Must fail for invalid array");
} catch (RuntimeException e) {
}
}
/**
* Test method for
* {@link org.identityconnectors.oracle.ExtraAttributesPolicySetupBuilder#parseMap(java.lang.String)}
* .
*/
@Test
public void testParseMap() {
ExtraAttributesPolicySetupBuilder builder =
new ExtraAttributesPolicySetupBuilder(TestHelpers.createDummyMessages());
builder.parseMap(null);
builder.parseMap("");
String map = "PASSWORD={create=IGNORE,update=FAIL},PASSWORD_EXPIRE={update=IGNORE}";
ExtraAttributesPolicySetup setup = builder.parseMap(map).build();
assertEquals(ExtraAttributesPolicy.IGNORE, setup.getPolicy(OracleUserAttribute.PASSWORD,
CreateOp.class));
assertEquals(ExtraAttributesPolicy.FAIL, setup.getPolicy(OracleUserAttribute.PASSWORD,
UpdateOp.class));
assertEquals(ExtraAttributesPolicy.FAIL, setup.getPolicy(
OracleUserAttribute.PASSWORD_EXPIRE, CreateOp.class));
assertEquals(ExtraAttributesPolicy.IGNORE, setup.getPolicy(
OracleUserAttribute.PASSWORD_EXPIRE, UpdateOp.class));
builder.clearPolicies();
setup = builder.parseMap("default").build();
// All must have default values
for (OracleUserAttribute oua : OracleUserAttribute.values()) {
for (Class<? extends SPIOperation> op : FrameworkUtil.allSPIOperations()) {
Assert.assertEquals(oua.getExtraAttributesPolicy(op), setup.getPolicy(oua, op));
}
}
builder.clearPolicies();
setup = builder.parseMap("ALL={create=IGNORE,update=IGNORE},USER={update=FAIL}").build();
for (OracleUserAttribute oua : OracleUserAttribute.values()) {
for (Class<? extends SPIOperation> op : FrameworkUtil.allSPIOperations()) {
if (OracleUserAttribute.USER.equals(oua) && UpdateOp.class.equals(op)) {
Assert.assertEquals(ExtraAttributesPolicy.FAIL, setup.getPolicy(oua, op));
continue;
}
if (CreateOp.class.equals(op) || UpdateOp.class.equals(op)) {
Assert.assertEquals(ExtraAttributesPolicy.IGNORE, setup.getPolicy(oua, op));
continue;
}
Assert.assertEquals(oua.getExtraAttributesPolicy(op), setup.getPolicy(oua, op));
}
}
try {
builder.parseMap("dummy");
Assert.fail("Must fail for invalid map");
} catch (RuntimeException e) {
}
try {
builder.parseMap("dummy={a=b}");
Assert.fail("Must fail for invalid map");
} catch (RuntimeException e) {
}
try {
builder.parseMap("PASSWORD={a=b}");
Assert.fail("Must fail for invalid map");
} catch (RuntimeException e) {
}
try {
builder.parseMap("PASSWORD={invalid=FAIL}");
Assert.fail("Must fail for invalid map");
} catch (RuntimeException e) {
}
try {
builder.parseMap("PASSWORD={create=invalid}");
Assert.fail("Must fail for invalid map");
} catch (RuntimeException e) {
}
}
@Test
public void testBuild() {
// Test that after build all policies will be default from Attribute
ExtraAttributesPolicySetupBuilder builder =
new ExtraAttributesPolicySetupBuilder(TestHelpers.createDummyMessages());
ExtraAttributesPolicySetup setup = builder.build();
for (OracleUserAttribute oua : OracleUserAttribute.values()) {
for (Class<? extends SPIOperation> op : FrameworkUtil.allSPIOperations()) {
Assert.assertEquals(oua.getExtraAttributesPolicy(op), setup.getPolicy(oua, op));
}
}
}
/**
* Test method for
* {@link org.identityconnectors.oracle.ExtraAttributesPolicySetupBuilder#definePolicy(org.identityconnectors.oracle.OracleUserAttribute, java.lang.Class, org.identityconnectors.oracle.ExtraAttributesPolicy)}
* .
*/
@Test
public void testDefinePolicy() {
ExtraAttributesPolicySetupBuilder builder =
new ExtraAttributesPolicySetupBuilder(TestHelpers.createDummyMessages());
builder.definePolicy(OracleUserAttribute.PASSWORD, CreateOp.class,
ExtraAttributesPolicy.IGNORE);
builder.definePolicy(OracleUserAttribute.PASSWORD_EXPIRE, CreateOp.class,
ExtraAttributesPolicy.IGNORE);
ExtraAttributesPolicySetup setup = builder.build();
for (OracleUserAttribute oua : OracleUserAttribute.values()) {
for (Class<? extends SPIOperation> op : FrameworkUtil.allSPIOperations()) {
AssertJUnit.assertNotNull("ExtraAttributesPolicy not defined", setup.getPolicy(oua,
op));
}
}
assertEquals(ExtraAttributesPolicy.IGNORE, setup.getPolicy(OracleUserAttribute.PASSWORD,
CreateOp.class));
assertEquals(ExtraAttributesPolicy.IGNORE, setup.getPolicy(
OracleUserAttribute.PASSWORD_EXPIRE, CreateOp.class));
}
}