package at.gv.egovernment.moa.id.auth.modules.ehvd.test.attributes; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.apache.commons.lang3.RandomStringUtils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.BlockJUnit4ClassRunner; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import at.gv.egiz.eaaf.core.api.idp.IAttributeGenerator; import at.gv.egiz.eaaf.core.api.idp.IAuthData; import at.gv.egiz.eaaf.core.api.idp.IConfiguration; import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration; import at.gv.egiz.eaaf.core.exceptions.AttributeBuilderException; import at.gv.egiz.eaaf.core.impl.idp.AuthenticationData; import at.gv.egiz.eaaf.core.impl.idp.builder.SimpleStringAttributeGenerator; import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySPConfiguration; import at.gv.egiz.eaaf.modules.pvp2.impl.builder.PVPAttributeBuilder; import at.gv.egovernment.moa.id.auth.modules.ehvd.attributes.PvpRoleAttributeBuilder; import at.gv.egovernment.moa.id.data.AuthenticationRole; import at.gv.egovernment.moa.id.data.AuthenticationRoleFactory; import at.gv.egovernment.moa.id.data.MOAAuthenticationData; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({ "/test_ehvd_service_auth.beans.xml" }) public class PvpRoleAttributeBuilderTest { @Autowired private IConfiguration basicConfig; private PvpRoleAttributeBuilder toTest = new PvpRoleAttributeBuilder(); private IAttributeGenerator g = new SimpleStringAttributeGenerator(); private ISPConfiguration oaParam; @Before public void initialize() { oaParam = new DummySPConfiguration(Collections.emptyMap(), basicConfig); } @Test public void checkAttributeRegistration() { assertNotNull("Attribute: urn:oid:1.2.40.0.10.2.1.1.261.30 not registrated", PVPAttributeBuilder.getAttributeBuilder("urn:oid:1.2.40.0.10.2.1.1.261.30")); } @Test public void checkName() { assertEquals("wrong attr. name", "urn:oid:1.2.40.0.10.2.1.1.261.30", toTest.getName()); } @Test public void checkEmptyAttribute() { assertNull("wrong empty attr.", toTest.buildEmpty(g)); } @Test public void wrongAuthData() throws AttributeBuilderException { IAuthData authData = new AuthenticationData(); assertNull("wrong attr. value", toTest.build(oaParam, authData, g)); } @Test public void noRoles() throws AttributeBuilderException { IAuthData authData = generateAuthData(null); assertNull("wrong attr. value", toTest.build(oaParam, authData, g)); } @Test public void emptyRoles() throws AttributeBuilderException { IAuthData authData = generateAuthData(Collections.emptyList()); assertNull("wrong attr. value", toTest.build(oaParam, authData, g)); } @Test public void randomRoles() throws AttributeBuilderException { String role1 = RandomStringUtils.randomAlphabetic(5); String role2 = RandomStringUtils.randomAlphabetic(5); String role3 = RandomStringUtils.randomAlphabetic(5); String role4 = RandomStringUtils.randomAlphabetic(5); IAuthData authData = generateAuthData(Arrays.asList( new AuthenticationRole(role1, role1), new AuthenticationRole(role2, role2), new AuthenticationRole(role3, role3 + "()"), new AuthenticationRole(role4, role4 + "(\"aaa\"=\"bbb\")") )); // perform test String attrValue = toTest.build(oaParam, authData, g); // validate state assertNotNull("wrong attr. value", attrValue); assertFalse("List delimiter after last element" ,attrValue.endsWith(";")); String[] el = attrValue.split(";"); assertEquals("wrong role count", 4, el.length); assertEquals("wrong 1. role", role1, el[0]); assertEquals("wrong 2. role", role2, el[1]); assertEquals("wrong 3. role", role3 + "()", el[2]); assertEquals("wrong 4. role", role4 + "(\"aaa\"=\"bbb\")", el[3]); } @Test public void brzProductionRole() throws AttributeBuilderException { IAuthData authData = generateAuthData(Arrays.asList( AuthenticationRoleFactory.buildFormPVPole("EPI-GDA()"))); // perform test String attrValue = toTest.build(oaParam, authData, g); // validate state assertNotNull("wrong attr. value", attrValue); assertFalse("List delimiter after last element" ,attrValue.endsWith(";")); String[] el = attrValue.split(";"); assertEquals("wrong role count", 1, el.length); assertEquals("wrong 1. role", "EPI-GDA()", el[0]); assertEquals("wrong role attr. value", "EPI-GDA()", attrValue); } private IAuthData generateAuthData(List roles) { MOAAuthenticationData authData = new MOAAuthenticationData(null); if (roles != null) { roles.forEach(el -> authData.addAuthenticationRole(el)); } return authData; } }