package org.azzyzt.jee.runtime.meta;
import static org.junit.Assert.*;
import org.junit.Test;
public class CredentialsTest {
private static final String CRED_ONE = "one";
private static final String CRED_TWO = "two";
@Test
public void testNull() {
Credentials cred = Credentials.fromString(null);
assertEmptyCredentials(cred);
}
@Test
public void testEmpty() {
Credentials cred = Credentials.fromString("");
assertEmptyCredentials(cred);
}
@Test
public void testSepOnly() {
Credentials cred = Credentials.fromString(";");
assertEmptyCredentials(cred);
}
@Test
public void testOneSimple() {
Credentials cred = Credentials.fromString(CRED_ONE);
assertHasOnlyCredOne(cred);
}
@Test
public void testOneSimpleParen() {
Credentials cred = Credentials.fromString(CRED_ONE+"()");
assertHasOnlyCredOne(cred);
}
@Test
public void testTwoSimple() {
Credentials cred = Credentials.fromString(CRED_ONE+";"+CRED_TWO);
assertHasOneAndTwo(cred);
}
@Test
public void testTwoSimpleIrregular() {
Credentials cred = Credentials.fromString(" "+CRED_ONE+" ; "+CRED_TWO+"() ; ");
assertHasOneAndTwo(cred);
}
@Test
public void testTwoWithProperties() {
Credentials cred = Credentials.fromString(CRED_ONE+"(A=x,B=y);"+CRED_TWO+"(C=z)");
assertHasOneAndTwo(cred);
assertHasProp(cred.getCredential(CRED_ONE), "A", "x");
assertHasProp(cred.getCredential(CRED_ONE), "B", "y");
assertHasProp(cred.getCredential(CRED_TWO), "C", "z");
}
@Test
public void testOneWithPropertiesAndDefault() {
Credentials cred = Credentials.fromString(CRED_ONE+"(A,B)");
assertHasOnlyCredOne(cred);
Credential c = cred.getCredential(CRED_ONE);
// general way
assertHasProp(c, "A", Credential.PROPVAL_TRUE);
assertHasProp(c, "B", Credential.PROPVAL_TRUE);
// check trueness
assertTrue(c.isPropertyTrue("A"));
assertTrue(c.isPropertyTrue("B"));
}
@Test
public void testTwoWithPropertiesIrregular() {
Credentials cred = Credentials.fromString(CRED_ONE+"( A = x , B = y );"+CRED_TWO+"(C)");
assertHasOneAndTwo(cred);
assertHasProp(cred.getCredential(CRED_ONE), "A", "x");
assertHasProp(cred.getCredential(CRED_ONE), "B", "y");
assertHasProp(cred.getCredential(CRED_TWO), "C", Credential.PROPVAL_TRUE);
}
private void assertEmptyCredentials(Credentials cred) {
assertNotNull(cred);
assertTrue(cred.isEmpty());
}
private void assertHasOnlyCredOne(Credentials cred) {
assertHasNCreds(cred, 1);
assertHasCred(cred, CRED_ONE);
}
private void assertHasNCreds(Credentials cred, int n) {
assertNotNull(cred);
assertFalse(cred.isEmpty());
assertEquals(n, cred.numberOfCredentials());
}
private void assertHasCred(Credentials cred, String name) {
assertTrue(cred.credentialNameSet().contains(name));
Credential c = cred.getCredential(name);
assertNotNull(c);
assertEquals(name, c.getName());
}
private void assertHasOneAndTwo(Credentials cred) {
assertHasNCreds(cred, 2);
assertHasCred(cred, CRED_ONE);
assertHasCred(cred, CRED_TWO);
}
private void assertHasProp(Credential c, String propName, String propVal) {
assertTrue(c.hasProperty(propName));
assertEquals(propVal, c.getPropertyValue(propName));
}
}