package at.asitplus.eidas.specific.connector.test.task; import java.io.UnsupportedEncodingException; import java.util.Locale; import org.apache.commons.lang3.RandomStringUtils; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.i18n.LocaleContextHolder; 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.test.context.web.WebAppConfiguration; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import at.asitplus.eidas.specific.connector.processes.tasks.GenerateCountrySelectionFrameTask; import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({ "/applicationContext.xml", "/specific_eIDAS_connector.beans.xml", "/eaaf_core.beans.xml", "/eaaf_pvp.beans.xml", "/eaaf_pvp_idp.beans.xml", "/spring/SpringTest-context_simple_storage.xml" }) @WebAppConfiguration public class GenerateCountrySelectionFrameTaskTest { @Autowired private GenerateCountrySelectionFrameTask task; private ExecutionContextImpl executionContext = new ExecutionContextImpl(); private TestRequestImpl pendingReq; private MockHttpServletRequest httpReq; private MockHttpServletResponse httpResp; /** * jUnit class initializer. * */ @BeforeClass public static void classInitializer() { final String current = new java.io.File(".").toURI().toString(); System.setProperty("eidas.ms.configuration", current + "../basicConfig/default_config.properties"); } /** * jUnit test set-up. * */ @Before public void initialize() { httpReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector"); httpResp = new MockHttpServletResponse(); RequestContextHolder.resetRequestAttributes(); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); pendingReq = new TestRequestImpl(); pendingReq.setAuthUrl("https://localhost/ms_connector"); pendingReq.setPendingReqId(RandomStringUtils.randomAlphanumeric(10)); LocaleContextHolder.resetLocaleContext(); } @Test public void validHtmlResponseWithOutLocale() throws TaskExecutionException, UnsupportedEncodingException { task.execute(pendingReq, executionContext); //result validation String html = doBasicValidation(); Assert.assertTrue("No english text", html.contains("Information on Logins with European eIDs")); } @Test public void validHtmlResponseWithDE() throws TaskExecutionException, UnsupportedEncodingException { LocaleContextHolder.setLocale(Locale.GERMAN); httpReq.addHeader("Accept-Language", "de"); task.execute(pendingReq, executionContext); //result validation String html = doBasicValidation(); Assert.assertTrue("No english text", html.contains("Information zur Anmeldung über Europäische eIDs")); } @Test public void validHtmlResponseWithEN() throws TaskExecutionException, UnsupportedEncodingException { LocaleContextHolder.setLocale(Locale.ENGLISH); task.execute(pendingReq, executionContext); //result validation String html = doBasicValidation(); Assert.assertTrue("No english text", html.contains("Information on Logins with European eIDs")); } @Test public void validHtmlResponseWithFR() throws TaskExecutionException, UnsupportedEncodingException { LocaleContextHolder.setLocale(Locale.FRANCE); httpReq.addHeader("Accept-Language", "fr"); task.execute(pendingReq, executionContext); //result validation String html = doBasicValidation(); Assert.assertTrue("No english text", html.contains("Information on Logins with European eIDs")); } private String doBasicValidation() throws UnsupportedEncodingException { Assert.assertEquals("Wrong http StatusCode", 200, httpResp.getStatus()); Assert.assertEquals("Wrong http ContentType", "text/html;charset=UTF-8", httpResp.getContentType()); String html = httpResp.getContentAsString(); Assert.assertNotNull("html result is null", html); Assert.assertFalse("html result is empty", html.isEmpty()); Assert.assertTrue("No language selector with pendingRequestId", html.contains("/myHomeCountry?pendingid=" + pendingReq.getPendingRequestId())); Assert.assertTrue("No country-selection form", html.contains("
")); return html; } }