package at.asitplus.eidas.specific.connector.test.attributes; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestName; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import at.asitplus.eidas.specific.connector.attributes.EidasBindAttributeBuilder; import at.asitplus.eidas.specific.core.MsEidasNodeConstants; import at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions; import at.gv.egiz.eaaf.core.api.idp.IAttributeBuilder; import at.gv.egiz.eaaf.core.api.idp.IAuthData; import at.gv.egiz.eaaf.core.exceptions.UnavailableAttributeException; import at.gv.egiz.eaaf.core.impl.idp.AuthenticationData; import at.gv.egiz.eaaf.core.impl.idp.auth.attributes.AbstractAttributeBuilderTest; import lombok.extern.slf4j.Slf4j; @Slf4j @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("/SpringTest-context_eaaf_core.xml") public class EidasBindAttributeBuilderTest extends AbstractAttributeBuilderTest { private final IAttributeBuilder attrBuilde = new EidasBindAttributeBuilder(); @Rule public TestName mTestName = new TestName(); @Before public void init() { log.info("setting up"); } @Test public void checkName() { Assert.assertEquals("Wrong attr. name", ExtendedPvpAttributeDefinitions.EID_EIDBIND_NAME, attrBuilde.getName()); } @Test public void checkEmptyAttribute() { Assert.assertNull("empty attr.", attrBuilde.buildEmpty(gen)); } @Test public void okTest() { log.info("starting: " + mTestName); try { final IAuthData authData = buildAuthData(); ((AuthenticationData) authData).setGenericData(MsEidasNodeConstants.AUTH_DATA_EIDAS_BIND, "vuG8w29GT0"); final String value = attrBuilde.build(spConfig, authData, gen); Assert.assertEquals("eDIAS bind build wrong", "vuG8w29GT0", value); } catch (final Exception e) { Assert.assertNull("Attr. builder has an exception", e); } } @Test public void nullTest() { log.info("starting: " + mTestName); try { final IAuthData authData = buildAuthData(); ((AuthenticationData) authData).setGenericData(MsEidasNodeConstants.AUTH_DATA_EIDAS_BIND, null); final String value = attrBuilde.build(spConfig, authData, gen); Assert.fail("Attr. Builder provide no 'UnavailableAttributeException'"); } catch (final Exception e) { Assert.assertTrue("Attr. builder provide wrong exception", e instanceof UnavailableAttributeException); Assert.assertEquals("Attr. name in exception does NOT match", ExtendedPvpAttributeDefinitions.EID_EIDBIND_NAME, ((UnavailableAttributeException) e).getAttributeName()); } } @Test public void emptyTest() { log.info("starting: " + mTestName); try { final IAuthData authData = buildAuthData(); ((AuthenticationData) authData).setGenericData(MsEidasNodeConstants.AUTH_DATA_EIDAS_BIND, ""); final String value = attrBuilde.build(spConfig, authData, gen); Assert.fail("Attr. Builder provide no 'UnavailableAttributeException'"); } catch (final Exception e) { Assert.assertTrue("Attr. builder provide wrong exception", e instanceof UnavailableAttributeException); Assert.assertEquals("Attr. name in exception does NOT match", ExtendedPvpAttributeDefinitions.EID_EIDBIND_NAME, ((UnavailableAttributeException) e).getAttributeName()); } } }