package at.gv.egovernment.moa.id.auth.modules.auth.dummy.test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.RandomStringUtils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import at.gv.egiz.eaaf.core.api.IRequest; import at.gv.egiz.eaaf.core.api.IRequestStorage; import at.gv.egiz.eaaf.core.api.data.EAAFConfigConstants; import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration; import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; import at.gv.egiz.eaaf.core.exceptions.PendingReqIdValidationException; import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySPConfiguration; import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; import at.gv.egovernment.moa.id.auth.data.AuthenticationSessionWrapper; import at.gv.egovernment.moa.id.auth.modules.auth.dummy.task.InjectDummyIdentityInformationTask; import at.gv.egovernment.moa.id.auth.modules.auth.dummy.test.dummy.DummyAuthConfigMap; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({ "/test_dummy_identity_auth.beans.xml" }) public class InjectDummyIdentityInformationTaskTest { @Autowired InjectDummyIdentityInformationTask task; @Autowired DummyAuthConfigMap config; @Autowired IRequestStorage storage; protected MockHttpServletRequest httpReq; protected MockHttpServletResponse httpResp; private ExecutionContext context; private TestRequestImpl pendingReq; private Map spConfigMap; @Before public void initialize() { httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler"); httpResp = new MockHttpServletResponse(); RequestContextHolder.resetRequestAttributes(); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); context = new ExecutionContextImpl(); spConfigMap = new HashMap<>(); spConfigMap.put(EAAFConfigConstants.SERVICE_UNIQUEIDENTIFIER, RandomStringUtils.randomAlphanumeric(10)); ISPConfiguration spConfig = new DummySPConfiguration(spConfigMap, config); pendingReq = new TestRequestImpl(); pendingReq.setPendingReqId(RandomStringUtils.randomAlphanumeric(10)); pendingReq.setSpConfig(spConfig); // re-set config config.putConfigValue("modules.dummyauth.enabled", String.valueOf(true)); } @Test public void injectIdentityData() throws TaskExecutionException, PendingReqIdValidationException { task.execute(pendingReq, context); // validate state IRequest storedReq = storage.getPendingRequest(pendingReq.getPendingRequestId()); assertNotNull("pendingReq not stored", storedReq); final AuthenticationSessionWrapper moaSession = storedReq.getSessionData( AuthenticationSessionWrapper.class); assertFalse("foreign", moaSession.isForeigner()); assertFalse("mandate", moaSession.isMandateUsed()); assertNotNull("bkuUrl", moaSession.getBkuURL()); assertEquals("missing attributes", 4, moaSession.getGenericSessionDataStorage().size()); } }