package at.asitplus.eidas.specific.connector.test.attributes; import static at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions.EID_AUTHBLOCK_SIGNED_NAME; import java.util.Base64; 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.AuthBlockAttributeBuilder; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; 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 AuthBlockAttributeBuilderTest extends AbstractAttributeBuilderTest { private final String JSW = "eyJhbGciOiJQUzI1NiIsIng1dCNTMjU2IjoiTjBDZUJRdzlMX1BleEt6SlhVM2w2dkF1aExGb3hkWFlIUjNSX01ubTZnRSJ9.ImF2YWFz" + "YmF2Ig.dpzCcHFlISXyKEZaXgvRj0ja1cenfMuy0VKwK_rmHZLkUCb58V4X5balpQduDTyRfTyFE0zmBjm8_cmDVNOYTIG4NsEtvY" + "qW4ee9JH-VpkU0w5-7HTH81R3JOd9g7XaHGPXYyUuqceZQRmkl1Vw4HSsnIAT3bb0Di0us6zmFkOPmRtbXQAym_ygGFwTVGLskUTm" + "epCxmDQC7OJoIV9oqDavLySP7Ram4NHfi043uF_DmBf6csTjmQu3g2vKJWwlkD8RXDzqksozO8fLDFyVWjA8G1IcvnuHDW1nTTkuG" + "_fBIU6yBZ7kQe9vtjqKiGhGa1zD-F_Lem2zsY7d7dVUvyQ"; private final IAttributeBuilder attrBuilde = new AuthBlockAttributeBuilder(); @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_AUTHBLOCK_SIGNED_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(Constants.SZR_AUTHBLOCK, JSW); final String value = attrBuilde.build(spConfig, authData, gen); Assert.assertNotNull("AuthBlock", value); Assert.assertEquals("Authblock build wrong", JSW, new String(Base64.getDecoder().decode(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(Constants.SZR_AUTHBLOCK, 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", EID_AUTHBLOCK_SIGNED_NAME, ((UnavailableAttributeException) e).getAttributeName()); } } @Test public void emptyTest() { log.info("starting: " + mTestName); try { final IAuthData authData = buildAuthData(); ((AuthenticationData) authData).setGenericData(Constants.SZR_AUTHBLOCK, ""); 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", EID_AUTHBLOCK_SIGNED_NAME, ((UnavailableAttributeException) e).getAttributeName()); } } }