summaryrefslogtreecommitdiff
path: root/BKUOnline/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'BKUOnline/src/test')
-rw-r--r--BKUOnline/src/test/java/at/gv/egiz/bku/online/conf/SSLConfigTest.java40
-rw-r--r--BKUOnline/src/test/java/at/gv/egiz/stal/service/STALRequestBrokerTest.java534
-rw-r--r--BKUOnline/src/test/resources/appletTest.html29
-rw-r--r--BKUOnline/src/test/resources/applicationContext.xml55
-rw-r--r--BKUOnline/src/test/resources/commons-logging.properties16
-rw-r--r--BKUOnline/src/test/resources/log4j.properties29
6 files changed, 703 insertions, 0 deletions
diff --git a/BKUOnline/src/test/java/at/gv/egiz/bku/online/conf/SSLConfigTest.java b/BKUOnline/src/test/java/at/gv/egiz/bku/online/conf/SSLConfigTest.java
new file mode 100644
index 00000000..eefaf5b6
--- /dev/null
+++ b/BKUOnline/src/test/java/at/gv/egiz/bku/online/conf/SSLConfigTest.java
@@ -0,0 +1,40 @@
+package at.gv.egiz.bku.online.conf;
+
+import java.net.URL;
+
+import javax.net.ssl.HttpsURLConnection;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+@Ignore
+public class SSLConfigTest {
+
+ private SpringConfigurator cfg;
+ private ApplicationContext ctx;
+
+ @Before
+ public void setUp() throws Exception {
+ ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
+
+ }
+
+ @Ignore
+ @Test
+ public void testConnect() throws Exception {
+ String url = "https://apps.egiz.gv.at/exchange-moa-id-auth/VerifyIdentityLink?MOASessionID=8151862969943601574";
+ URL u = new URL(url);
+ HttpsURLConnection uc = (HttpsURLConnection) u.openConnection();
+ uc.connect();
+ System.out.println(uc.getCipherSuite());
+ }
+
+ @After
+ public void shutDown() {
+
+ }
+}
diff --git a/BKUOnline/src/test/java/at/gv/egiz/stal/service/STALRequestBrokerTest.java b/BKUOnline/src/test/java/at/gv/egiz/stal/service/STALRequestBrokerTest.java
new file mode 100644
index 00000000..741974eb
--- /dev/null
+++ b/BKUOnline/src/test/java/at/gv/egiz/stal/service/STALRequestBrokerTest.java
@@ -0,0 +1,534 @@
+/*
+* Copyright 2008 Federal Chancellery Austria and
+* Graz University of Technology
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package at.gv.egiz.stal.service;
+
+import at.gv.egiz.stal.service.impl.STALRequestBrokerImpl;
+import at.gv.egiz.stal.service.impl.RequestBrokerSTALFactory;
+import at.gv.egiz.stal.service.impl.STALRequestBroker;
+import at.gv.egiz.stal.ErrorResponse;
+import at.gv.egiz.stal.HashDataInput;
+import at.gv.egiz.stal.InfoboxReadRequest;
+import at.gv.egiz.stal.InfoboxReadResponse;
+import at.gv.egiz.stal.QuitRequest;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+import at.gv.egiz.stal.SignResponse;
+import at.gv.egiz.stal.SignRequest;
+import at.gv.egiz.stal.service.types.InfoboxReadRequestType;
+import at.gv.egiz.stal.service.types.InfoboxReadResponseType;
+import at.gv.egiz.stal.service.types.ObjectFactory;
+import at.gv.egiz.stal.service.types.QuitRequestType;
+import at.gv.egiz.stal.service.types.RequestType;
+import at.gv.egiz.stal.service.types.ResponseType;
+import at.gv.egiz.stal.service.types.SignRequestType;
+import at.gv.egiz.stal.service.types.SignResponseType;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author clemens
+ */
+@Ignore
+public class STALRequestBrokerTest {
+
+ private static final Log log = LogFactory.getLog(STALRequestBrokerTest.class);
+ protected static STALRequestBroker stal;
+
+ @BeforeClass
+ public static void setUp() {
+ RequestBrokerSTALFactory fac = new RequestBrokerSTALFactory();
+ stal = (STALRequestBrokerImpl) fac.createSTAL();
+ log.debug("Created STAL " + stal.getClass().getName());
+ }
+
+ @Ignore
+ public void testInfoboxRead() {
+// try {
+
+ log.debug("*************** test ReadInfoboxRequest for two infoboxes");
+ List<STALRequest> requests = new ArrayList<STALRequest>();
+ InfoboxReadRequest r1 = new InfoboxReadRequest();
+ r1.setInfoboxIdentifier("infobox1");
+ requests.add(r1);
+ InfoboxReadRequest r2 = new InfoboxReadRequest();
+ r2.setInfoboxIdentifier("infobox2");
+ requests.add(r2);
+
+ BindingProcessorSimulator bp = new BindingProcessorSimulator();
+ bp.setRequests(Collections.singletonList(requests));
+
+ new Thread(new ServiceSimulator(), "STALService1").start();
+ new Thread(bp, "BindingProcessor").start();
+ new Thread(new ServiceSimulator(), "STALService2").start();
+
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException ex) {
+ log.error("interrupted: " + ex.getMessage());
+ }
+ }
+
+ @Test
+ public void testSign() {
+ log.debug("**************** test SignRequest");
+ List<STALRequest> requests = new ArrayList<STALRequest>();
+ SignRequest r1 = new SignRequest();
+ r1.setKeyIdentifier("keybox1");
+ r1.setSignedInfo("1234".getBytes());
+ HashDataInput hdi = new HashDataInput() {
+
+ @Override
+ public String getReferenceId() {
+ return "refId1234";
+ }
+
+ @Override
+ public String getMimeType() {
+ return "text/plain";
+ }
+
+ @Override
+ public InputStream getHashDataInput() {
+ return new ByteArrayInputStream("hashdatainput1234".getBytes());
+ }
+ @Override
+ public String getEncoding() {
+ return "UTF-8";
+ }
+
+
+ @Override
+ public String getFilename() {
+ return "file.txt";
+ }
+ };
+ r1.setHashDataInput(Collections.singletonList(hdi));
+ requests.add(r1);
+
+ BindingProcessorSimulator bp = new BindingProcessorSimulator();
+ bp.setRequests(Collections.singletonList(requests));
+
+ new Thread(bp, "BindingProcessor").start();
+// new Thread(bp2, "BindingProcessor2").start();
+ new Thread(new ServiceSimulator(), "STALService").start();
+ new Thread(new ZombieServiceSimulator(), "STALServiceZombie").start();
+
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException ex) {
+ log.error("interrupted: " + ex.getMessage());
+ }
+ }
+
+ @Ignore
+ public void testResponseTimeout() {
+ log.debug("**************** test SignRequest with responses timeout");
+ List<STALRequest> requests = new ArrayList<STALRequest>();
+ SignRequest r1 = new SignRequest();
+ r1.setKeyIdentifier("keybox1");
+ r1.setSignedInfo("1234".getBytes());
+ HashDataInput hdi = new HashDataInput() {
+
+ @Override
+ public String getReferenceId() {
+ return "refId1234";
+ }
+
+ @Override
+ public String getMimeType() {
+ return "text/plain";
+ }
+
+ @Override
+ public InputStream getHashDataInput() {
+ return new ByteArrayInputStream("hashdatainput1234".getBytes());
+ }
+ @Override
+ public String getEncoding() {
+ return "UTF-8";
+ }
+
+ @Override
+ public String getFilename() {
+ return "file.txt";
+ }
+ };
+ r1.setHashDataInput(Collections.singletonList(hdi));
+ requests.add(r1);
+
+ BindingProcessorSimulator bp = new BindingProcessorSimulator();
+ bp.setRequests(Collections.singletonList(requests));
+
+ new Thread(bp, "BindingProcessor").start();
+ new Thread(new TimeoutServiceSimulator(), "STALService").start();
+
+ try {
+ Thread.sleep(STALRequestBroker.DEFAULT_TIMEOUT_MS + 1);
+ } catch (InterruptedException ex) {
+ log.error("interrupted: " + ex.getMessage());
+ }
+ }
+
+ @Ignore
+ public void testRequestTimeout() {
+ log.debug("**************** test requests timeout");
+ TimeoutBindingProcessorSimulator bp = new TimeoutBindingProcessorSimulator();
+
+ new Thread(bp, "BindingProcessor").start();
+ new Thread(new ServiceSimulator(), "STALService").start();
+
+ try {
+ Thread.sleep(STALRequestBroker.DEFAULT_TIMEOUT_MS + 1);
+ } catch (InterruptedException ex) {
+ log.error("interrupted: " + ex.getMessage());
+ }
+ }
+
+ @Ignore
+ public void testMultipleServices() {
+ log.debug("**************** test multiple SignRequests");
+ List<STALRequest> requests = new ArrayList<STALRequest>();
+ SignRequest r1 = new SignRequest();
+ r1.setKeyIdentifier("keybox1");
+ r1.setSignedInfo("1234".getBytes());
+ HashDataInput hdi = new HashDataInput() {
+
+ @Override
+ public String getReferenceId() {
+ return "refId1234";
+ }
+
+ @Override
+ public String getMimeType() {
+ return "text/plain";
+ }
+
+ @Override
+ public InputStream getHashDataInput() {
+ return new ByteArrayInputStream("hashdatainput1234".getBytes());
+ }
+ @Override
+ public String getEncoding() {
+ return "UTF-8";
+ }
+
+ @Override
+ public String getFilename() {
+ return "file.txt";
+ }
+ };
+ r1.setHashDataInput(Collections.singletonList(hdi));
+ requests.add(r1);
+
+ List<STALRequest> requests2 = new ArrayList<STALRequest>();
+ SignRequest r2 = new SignRequest();
+ r2.setKeyIdentifier("keybox2");
+ r2.setSignedInfo("6789".getBytes());
+ HashDataInput hdi2 = new HashDataInput() {
+
+ @Override
+ public String getReferenceId() {
+ return "refId6789";
+ }
+
+ @Override
+ public String getMimeType() {
+ return "text/xml";
+ }
+
+ @Override
+ public InputStream getHashDataInput() {
+ return new ByteArrayInputStream("<xml>hashdatainput6789</xml>".getBytes());
+ }
+ @Override
+ public String getEncoding() {
+ return "UTF-8";
+ }
+
+ @Override
+ public String getFilename() {
+ return "file.xml";
+ }
+ };
+ r2.setHashDataInput(Collections.singletonList(hdi2));
+ requests2.add(r2);
+
+ BindingProcessorSimulator bp = new BindingProcessorSimulator();
+ List<List<STALRequest>> requestList = new ArrayList<List<STALRequest>>();
+ requestList.add(requests);
+ requestList.add(requests2);
+ bp.setRequests(requestList);
+
+ new Thread(bp, "BindingProcessor").start();
+// new Thread(bp2, "BindingProcessor2").start();
+ new Thread(new ServiceSimulator(), "STALService1").start();
+ new Thread(new ServiceSimulator(), "STALService2").start();
+
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException ex) {
+ log.error("interrupted: " + ex.getMessage());
+ }
+ }
+
+ class ZombieServiceSimulator implements Runnable {
+
+ @Override
+ public void run() {
+ try {
+ ObjectFactory of= new ObjectFactory();
+
+ log.debug("calling stal.nextRequest(oldResponse)");
+ InfoboxReadResponseType oldResp = of.createInfoboxReadResponseType();
+ ArrayList<JAXBElement<? extends ResponseType>> oldResponses = new ArrayList<JAXBElement<? extends ResponseType>>();
+ oldResponses.add(of.createGetNextRequestTypeInfoboxReadResponse(oldResp));
+
+ List<JAXBElement<? extends RequestType>> requests = stal.nextRequest(oldResponses);
+ log.debug("got " + requests.size() + " requests. processing...");
+ Thread.sleep(1);
+ List<JAXBElement<? extends ResponseType>> responses = new ArrayList<JAXBElement<? extends ResponseType>>();
+ for (JAXBElement<? extends RequestType> requestElt : requests) {
+ RequestType request = requestElt.getValue();
+ if (request instanceof InfoboxReadRequestType) {
+ log.debug("received UNEXPECTED READINFOBOX request");
+
+ InfoboxReadResponseType r = of.createInfoboxReadResponseType();
+ r.setInfoboxValue("dummyInfobox".getBytes());
+ responses.add(of.createGetNextRequestTypeInfoboxReadResponse(r));
+ } else if (request instanceof SignRequestType) {
+
+ log.debug("received UNEXPECTED SIGN request");
+
+ log.debug("calling stal.getCurrentHashDataInputCallback");
+ List<HashDataInput> hdis = stal.getHashDataInput();
+ assertNotNull(hdis);
+ assertEquals(hdis.size(), 1);
+ HashDataInput hdi = hdis.get(0);// cb.getHashDataInput("1234");
+ InputStream hd = hdi.getHashDataInput();
+ byte[] data = new byte[hd.available()];
+ hd.read(data);
+ log.debug("got HashDataInput " + new String(data));
+
+
+ SignResponseType r = of.createSignResponseType();
+ r.setSignatureValue("dummySignature".getBytes());
+ responses.add(of.createGetNextRequestTypeSignResponse(r));
+ } else if (request instanceof QuitRequestType) {
+ log.debug("received EXPECTED QUIT request");
+ return;
+ }
+ }
+
+// if (requests.size() > 0) {
+// log.debug("calling stal.setResponse with " + requests.size() + " responses");
+// stal.setResponse(responses);
+// }
+ log.debug("calling stal.nextRequest with " + responses.size() + " responses");
+ requests = stal.nextRequest(responses);
+ for (JAXBElement<? extends RequestType> requestElt : requests) {
+ RequestType request = requestElt.getValue();
+ if (request instanceof QuitRequestType) {
+ log.debug("got QUIT request");
+ } else {
+ log.debug("expected QUIT request, got " + request.getClass().getName());
+ }
+ }
+ } catch (IOException ex) {
+ log.error(ex.getMessage());
+ } catch (InterruptedException ex) {
+ log.error(ex.getMessage());
+ }
+ }
+
+ }
+
+ class ServiceSimulator implements Runnable {
+
+ @Override
+ public void run() {
+ try {
+ ObjectFactory of = new ObjectFactory();
+ // first call w/ empty response list
+ log.debug("calling stal.nextRequest");
+ List<JAXBElement<? extends RequestType>> requests = stal.nextRequest(null); //new ArrayList<ResponseType>());
+ log.debug("got " + requests.size() + " requests. processing...");
+ Thread.sleep(1);
+ List<JAXBElement<? extends ResponseType>> responses = new ArrayList<JAXBElement<? extends ResponseType>>();
+ for (JAXBElement<? extends RequestType> requestElt : requests) {
+ RequestType request = requestElt.getValue();
+ if (request instanceof InfoboxReadRequestType) {
+ InfoboxReadResponseType r = of.createInfoboxReadResponseType();
+ r.setInfoboxValue("dummyInfobox".getBytes());
+ responses.add(of.createGetNextRequestTypeInfoboxReadResponse(r));
+ } else if (request instanceof SignRequestType) {
+
+ log.debug("calling stal.getCurrentHashDataInputCallback");
+ List<HashDataInput> hdis = stal.getHashDataInput();
+ assertNotNull(hdis);
+ assertEquals(hdis.size(), 1);
+ HashDataInput hdi = hdis.get(0);// cb.getHashDataInput("1234");
+ InputStream hd = hdi.getHashDataInput();
+ byte[] data = new byte[hd.available()];
+ hd.read(data);
+ log.debug("got HashDataInput " + new String(data));
+
+
+ SignResponseType r = of.createSignResponseType();
+ r.setSignatureValue("dummySignature".getBytes());
+ responses.add(of.createGetNextRequestTypeSignResponse(r));
+ } else if (request instanceof QuitRequestType) {
+ log.debug("received UNEXPECTED QUIT request");
+ return;
+ }
+ }
+
+// if (requests.size() > 0) {
+// log.debug("calling stal.setResponse with " + requests.size() + " responses");
+// stal.setResponse(responses);
+// }
+ log.debug("calling stal.nextRequest with " + responses.size() + " responses");
+ requests = stal.nextRequest(responses);
+ for (JAXBElement<? extends RequestType> requestElt : requests) {
+ RequestType request = requestElt.getValue();
+ if (request instanceof QuitRequestType) {
+ log.debug("got QUIT request");
+ } else {
+ log.debug("expected QUIT request, got " + request.getClass().getName());
+ }
+ }
+ } catch (IOException ex) {
+ log.error(ex.getMessage());
+ } catch (InterruptedException ex) {
+ log.error(ex.getMessage());
+ }
+ }
+ }
+
+ class TimeoutServiceSimulator implements Runnable {
+
+ @Override
+ public void run() {
+ try {
+ // first call w/ empty response list
+ log.debug("calling stal.nextRequest");
+ List<JAXBElement<? extends RequestType>> requests = stal.nextRequest(null); //new ArrayList<ResponseType>());
+ log.debug("got " + requests.size() + " requests. processing...");
+ Thread.sleep(1);
+ for (JAXBElement<? extends RequestType> requestElt : requests) {
+ RequestType request = requestElt.getValue();
+// if (request instanceof InfoboxReadRequest) {
+ if (request instanceof SignRequestType) {
+ log.debug("calling stal.getCurrentHashDataInputCallback");
+ List<HashDataInput> hdis = stal.getHashDataInput();
+ assertNotNull(hdis);
+ assertEquals(hdis.size(), 1);
+ HashDataInput hdi = hdis.get(0);// cb.getHashDataInput("1234");
+ InputStream hd = hdi.getHashDataInput();
+ byte[] data = new byte[hd.available()];
+ hd.read(data);
+ log.debug("got HashDataInput " + new String(data));
+ } else if (request instanceof QuitRequestType) {
+ log.debug("received UNEXPECTED QUIT requests");
+ return;
+ }
+ }
+ log.debug("simulating timeout ...");
+ } catch (IOException ex) {
+ log.error(ex.getMessage());
+ } catch (InterruptedException ex) {
+ log.error(ex.getMessage());
+ }
+ }
+ }
+
+ class BindingProcessorSimulator implements Runnable {
+
+ List<List<STALRequest>> requestsLists;
+
+ public void setRequests(List<List<STALRequest>> requests) {
+ this.requestsLists = requests;
+ }
+
+ @Override
+ public void run() {
+
+ //simulate SLCommand execution
+ for (List<STALRequest> requests : requestsLists) {
+ execSLCommand(requests);
+
+ log.debug("SLCommand finished, calling stal.handleReqeusts(QUIT)");
+ stal.handleRequest(Collections.singletonList((STALRequest) new QuitRequest()));
+ log.debug("QUIT returned (waiting for applet reload)");
+ }
+
+ }
+
+ public void execSLCommand(List<STALRequest> requests) {
+ int numReq = requests.size();
+ log.debug("SLCommand calling stal.handleRequests " + numReq + " requests");
+ List<STALResponse> responses = stal.handleRequest(requests);
+ assertEquals(numReq, responses.size());
+ for (int i = 0; i < numReq; i++) {
+ STALRequest request = requests.get(i);
+ STALResponse response = responses.get(i);
+
+ if (response instanceof ErrorResponse) {
+ log.warn("SLCommand received unexpected error response from STAL: " + ((ErrorResponse) response).getErrorCode());
+ } else if (request instanceof InfoboxReadRequest) {
+ assertTrue(response instanceof InfoboxReadResponse);
+ String infobox = new String(((InfoboxReadResponse) response).getInfoboxValue());
+ log.debug("SLCommand received expected InfoboxReadResponse from STAL: " + infobox);
+ } else if (request instanceof SignRequest) {
+ assertTrue(response instanceof SignResponse);
+ String signVal = new String(((SignResponse) response).getSignatureValue());
+ log.debug("SLCommand received expected SignResponse from STAL: " + signVal);
+ } else {
+ log.error("***** RequestType: " + request.getClass() + " TODO");
+ }
+ //TODO
+ }
+
+ }
+ }
+
+ class TimeoutBindingProcessorSimulator implements Runnable {
+
+ @Override
+ public void run() {
+
+ //simulate SLCommand execution
+ log.debug("simulating timeout ...");
+ }
+ }
+}
diff --git a/BKUOnline/src/test/resources/appletTest.html b/BKUOnline/src/test/resources/appletTest.html
new file mode 100644
index 00000000..71f09a93
--- /dev/null
+++ b/BKUOnline/src/test/resources/appletTest.html
@@ -0,0 +1,29 @@
+<!--
+ Copyright 2008 Federal Chancellery Austria and
+ Graz University of Technology
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html>
+ <body>
+ <center>
+ <applet code="at.gv.egiz.bku.online.applet.BKUApplet.class"
+ archive="../BKUOnline-1.0-SNAPSHOT/applet/BKUApplet-1.0-SNAPSHOT.jar , ../BKUOnline-1.0-SNAPSHOT/applet/commons-logging-1.1.1.jar , ../BKUOnline-1.0-SNAPSHOT/applet/iaik_jce_me4se-3.04.jar"
+ width=380 height=160>
+ <param name="WSDL_URL" value="http://localhost:3495/BKUOnline-1.0-SNAPSHOT/stal?wsdl"/>
+ <param name="SessionId" value="TestSession"/>
+ <param name="redirectURL" value="http://localhost:3495/BKUOnline-1.0-SNAPSHOT/bkuResult"/>
+ </applet>
+ </center>
+ </body>
+</html> \ No newline at end of file
diff --git a/BKUOnline/src/test/resources/applicationContext.xml b/BKUOnline/src/test/resources/applicationContext.xml
new file mode 100644
index 00000000..5f2487bf
--- /dev/null
+++ b/BKUOnline/src/test/resources/applicationContext.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ Copyright 2008 Federal Chancellery Austria and Graz University of
+ Technology Licensed under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance with the
+ License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+ applicable law or agreed to in writing, software distributed under the
+ License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+ CONDITIONS OF ANY KIND, either express or implied. See the License for
+ the specific language governing permissions and limitations under the
+ License.
+ -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
+
+ <bean id="STALFactory" class="at.gv.egiz.stal.service.impl.RequestBrokerSTALFactory"
+ scope="singleton" />
+
+ <bean id="accessController" class="at.gv.egiz.bku.online.accesscontroller.SpringSecurityManager"
+ scope="singleton" init-method="init">
+ <property name="config" ref="configurator"/>
+ </bean>
+
+ <bean id="commandInvoker" class="at.gv.egiz.bku.binding.SLCommandInvokerImpl">
+ <property name="securityManager" ref="accessController" />
+ </bean>
+
+ <bean id="bindingProcessorManager" class="at.gv.egiz.bku.binding.BindingProcessorManagerImpl"
+ scope="singleton">
+ <constructor-arg ref="STALFactory"></constructor-arg>
+ <constructor-arg ref="commandInvoker"></constructor-arg>
+ </bean>
+
+ <bean
+ class="org.springframework.web.context.support.ServletContextAttributeExporter">
+ <property name="attributes">
+ <map>
+ <entry key="bindingProcessorManager">
+ <ref bean="bindingProcessorManager" />
+ </entry>
+ </map>
+ </property>
+ </bean>
+
+ <!-- Configure Configuration -->
+ <bean id="certValidator" class="at.gv.egiz.bku.conf.CertValidatorImpl"></bean>
+ <bean id="configurator" class="at.gv.egiz.bku.online.conf.SpringConfigurator"
+ scope="singleton" init-method="configure">
+ <property name="resource" value="classpath:at/gv/egiz/bku/online/conf/defaultConf.properties"/>
+ <property name="certValidator" ref="certValidator"></property>
+ </bean>
+
+</beans> \ No newline at end of file
diff --git a/BKUOnline/src/test/resources/commons-logging.properties b/BKUOnline/src/test/resources/commons-logging.properties
new file mode 100644
index 00000000..0d497b1b
--- /dev/null
+++ b/BKUOnline/src/test/resources/commons-logging.properties
@@ -0,0 +1,16 @@
+# Copyright 2008 Federal Chancellery Austria and
+# Graz University of Technology
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
diff --git a/BKUOnline/src/test/resources/log4j.properties b/BKUOnline/src/test/resources/log4j.properties
new file mode 100644
index 00000000..b30aa40a
--- /dev/null
+++ b/BKUOnline/src/test/resources/log4j.properties
@@ -0,0 +1,29 @@
+# Copyright 2008 Federal Chancellery Austria and
+# Graz University of Technology
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+#log4j.rootLogger=INFO, STDOUT, file
+log4j.rootLogger=DEBUG, STDOUT
+log4j.logger.at.gv.egiz.bku.slcommands=TRACE, STDOUT
+log4j.logger.at.gv.egiz.bku.binding=TRACE, STDOUT
+#log4j.logger.at.gv = INFO
+
+
+# STDOUT appender
+log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
+log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
+#log4j.appender.STDOUT.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %20c | %10t | %m%n
+#log4j.appender.STDOUT.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+log4j.appender.STDOUT.layout.ConversionPattern=%-5p | %t | %c %x - %m%n