aboutsummaryrefslogtreecommitdiff
path: root/connector/src/test
diff options
context:
space:
mode:
authorThomas Lenz <thomas.lenz@egiz.gv.at>2019-12-11 07:33:04 +0100
committerThomas Lenz <thomas.lenz@egiz.gv.at>2019-12-11 07:33:04 +0100
commitce2250d0e285dfa456072729989f9ac2a498cec1 (patch)
treef944ca0927f3ac08f912ab1715f5a139be733095 /connector/src/test
parent8b0e6296527b6239d3fda64efe1c858e1cca6e3c (diff)
downloadNational_eIDAS_Gateway-ce2250d0e285dfa456072729989f9ac2a498cec1.tar.gz
National_eIDAS_Gateway-ce2250d0e285dfa456072729989f9ac2a498cec1.tar.bz2
National_eIDAS_Gateway-ce2250d0e285dfa456072729989f9ac2a498cec1.zip
add BM.I specific example of country-selection template
add new i18n content add jUnit tests
Diffstat (limited to 'connector/src/test')
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/EvaluateCountrySelectionTaskTest.java191
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java146
-rw-r--r--connector/src/test/resources/spring/SpringTest-context_simple_storage.xml15
3 files changed, 352 insertions, 0 deletions
diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/EvaluateCountrySelectionTaskTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/EvaluateCountrySelectionTaskTest.java
new file mode 100644
index 00000000..44b54366
--- /dev/null
+++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/EvaluateCountrySelectionTaskTest.java
@@ -0,0 +1,191 @@
+package at.asitplus.eidas.specific.connector.test.task;
+
+import java.io.UnsupportedEncodingException;
+
+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.MsEidasNodeConstants;
+import at.asitplus.eidas.specific.connector.processes.tasks.EvaluateCountrySelectionTask;
+import at.gv.egiz.eaaf.core.api.data.EaafConstants;
+import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
+import at.gv.egiz.eaaf.core.impl.idp.controller.tasks.AbstractLocaleAuthServletTask;
+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 EvaluateCountrySelectionTaskTest {
+
+ @Autowired private EvaluateCountrySelectionTask 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 withoutCountrySelection() throws TaskExecutionException, UnsupportedEncodingException {
+
+
+ task.execute(pendingReq, executionContext);
+
+ //result validation
+ Assert.assertFalse("wrong pendingReq auth flag", pendingReq.isAuthenticated());
+ Assert.assertFalse("wrong process-cancelled flag", executionContext.isProcessCancelled());
+ Assert.assertEquals("wrong change-language flag", false,
+ executionContext.get(EaafConstants.PROCESSCONTEXT_SWITCH_LANGUAGE));
+ Assert.assertNull("Country-selection found",
+ executionContext.get(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY));
+ Assert.assertNull("Environment-selection found",
+ executionContext.get(MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT));
+
+ }
+
+ @Test
+ public void withCountrySelection() throws TaskExecutionException, UnsupportedEncodingException {
+ String ccc = RandomStringUtils.randomAlphabetic(2);
+ httpReq.setParameter(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, ccc);
+
+ task.execute(pendingReq, executionContext);
+
+ //result validation
+ Assert.assertFalse("wrong pendingReq auth flag", pendingReq.isAuthenticated());
+ Assert.assertFalse("wrong process-cancelled flag", executionContext.isProcessCancelled());
+ Assert.assertEquals("wrong change-language flag", false,
+ executionContext.get(EaafConstants.PROCESSCONTEXT_SWITCH_LANGUAGE));
+ Assert.assertNotNull("no Country-selection found",
+ executionContext.get(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY));
+ Assert.assertEquals("Wrong country found", ccc,
+ executionContext.get(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY));
+
+ Assert.assertNull("Environment-selection found",
+ executionContext.get(MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT));
+
+ }
+
+ @Test
+ public void withCountrySelectionAndEnvironment()
+ throws TaskExecutionException, UnsupportedEncodingException {
+ String ccc = RandomStringUtils.randomAlphabetic(2);
+ String environment = RandomStringUtils.randomAlphabetic(5);
+ httpReq.setParameter(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, ccc);
+ httpReq.setParameter(MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT, environment);
+
+ task.execute(pendingReq, executionContext);
+
+ //result validation
+ Assert.assertFalse("wrong pendingReq auth flag", pendingReq.isAuthenticated());
+ Assert.assertFalse("wrong process-cancelled flag", executionContext.isProcessCancelled());
+ Assert.assertEquals("wrong change-language flag", false,
+ executionContext.get(EaafConstants.PROCESSCONTEXT_SWITCH_LANGUAGE));
+ Assert.assertNotNull("no Country-selection found",
+ executionContext.get(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY));
+ Assert.assertEquals("Wrong country found", ccc,
+ executionContext.get(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY));
+
+ Assert.assertNotNull("No environment-selection found",
+ executionContext.get(MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT));
+ Assert.assertEquals("Wrong environment-selection", environment,
+ executionContext.get(MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT));
+
+ }
+
+ @Test
+ public void withCountrySelectionAndEnvironmentAndLangSelection()
+ throws TaskExecutionException, UnsupportedEncodingException {
+ String ccc = RandomStringUtils.randomAlphabetic(2);
+ String environment = RandomStringUtils.randomAlphabetic(5);
+ String lang = RandomStringUtils.randomAlphabetic(2);
+ httpReq.setParameter(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, ccc);
+ httpReq.setParameter(MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT, environment);
+ httpReq.setParameter(AbstractLocaleAuthServletTask.PROP_REQ_PARAM_LOCALE, lang);
+
+ task.execute(pendingReq, executionContext);
+
+ //result validation
+ Assert.assertFalse("wrong pendingReq auth flag", pendingReq.isAuthenticated());
+ Assert.assertFalse("wrong process-cancelled flag", executionContext.isProcessCancelled());
+ Assert.assertEquals("wrong change-language flag", true,
+ executionContext.get(EaafConstants.PROCESSCONTEXT_SWITCH_LANGUAGE));
+ Assert.assertNull("Country-selection found",
+ executionContext.get(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY));
+ Assert.assertNull("Environment-selection found",
+ executionContext.get(MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT));
+
+ }
+
+ @Test
+ public void withCountrySelectionAndEnvironmentAndStopSelection()
+ throws TaskExecutionException, UnsupportedEncodingException {
+ String ccc = RandomStringUtils.randomAlphabetic(2);
+ String environment = RandomStringUtils.randomAlphabetic(5);
+ httpReq.setParameter(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, ccc);
+ httpReq.setParameter(MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT, environment);
+ httpReq.setParameter(EaafConstants.PARAM_HTTP_STOP_PROCESS, "true");
+
+ task.execute(pendingReq, executionContext);
+
+ //result validation
+ Assert.assertTrue("wrong process-cancelled flag", executionContext.isProcessCancelled());
+ Assert.assertTrue("wrong pendingReq stop flag", pendingReq.isAbortedByUser());
+ Assert.assertFalse("wrong pendingReq auth flag", pendingReq.isAuthenticated());
+
+ Assert.assertEquals("wrong change-language flag", false,
+ executionContext.get(EaafConstants.PROCESSCONTEXT_SWITCH_LANGUAGE));
+ Assert.assertNull("Country-selection found",
+ executionContext.get(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY));
+ Assert.assertNull("Environment-selection found",
+ executionContext.get(MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT));
+
+ }
+}
diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java
new file mode 100644
index 00000000..61d68774
--- /dev/null
+++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java
@@ -0,0 +1,146 @@
+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("<form class=\"block\" method=\"post\" action=\"/myHomeCountry\">"));
+
+ return html;
+
+ }
+}
diff --git a/connector/src/test/resources/spring/SpringTest-context_simple_storage.xml b/connector/src/test/resources/spring/SpringTest-context_simple_storage.xml
new file mode 100644
index 00000000..5ee3e0b8
--- /dev/null
+++ b/connector/src/test/resources/spring/SpringTest-context_simple_storage.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
+
+ <bean id="SimpleInMemoryTransactionStorage"
+ class="at.asitplus.eidas.specific.connector.storage.SimpleInMemoryTransactionStorage" />
+
+</beans> \ No newline at end of file