package test.at.gv.egovernment.moa.id.auth; import java.util.HashMap; import at.gv.egovernment.moa.id.auth.AuthenticationServer; import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants; import at.gv.egovernment.moa.id.data.AuthenticationData; import test.at.gv.egovernment.moa.id.UnitTestCase; /** * @author Paul Ivancsics * @version $Id$ */ public class AuthenticationServerTest extends UnitTestCase { public AuthenticationServerTest(String name) { super(name); } public void testStandard() throws Exception { doTest( "standard", "https://localhost:8443/auth", "gb", "https://localhost:9443/", null, null); } public void doTest(String testdataDirectory, String authURL, String target, String oaURL, String bkuURL, String templateURL) throws Exception { String testdataRoot = TESTDATA_ROOT + "xmldata/" + testdataDirectory + "/"; AuthenticationServer server = AuthenticationServer.getInstance(); String htmlForm = server.startAuthentication(authURL, target, oaURL, templateURL, bkuURL, null); String sessionID = parseSessionIDFromForm(htmlForm); String infoboxReadResponse = readFile(TESTDATA_ROOT + "xmldata/testperson1/" + "InfoboxReadResponse.xml"); HashMap parameters = new HashMap(1); parameters.put(MOAIDAuthConstants.PARAM_XMLRESPONSE, infoboxReadResponse); String createXMLSignatureRequest = server.verifyIdentityLink(sessionID, parameters); String createXMLSignatureRequestShould = readFile(testdataRoot + "CreateXMLSignatureRequest.xml"); assertXmlEquals(createXMLSignatureRequestShould, createXMLSignatureRequest); String createXMLSignatureResponse = readFile(testdataRoot + "CreateXMLSignatureResponse.xml"); String samlArtifact = server.verifyAuthenticationBlock(sessionID, createXMLSignatureResponse); AuthenticationData authData = server.getAuthenticationData(samlArtifact); String authDataShould = readFile(testdataRoot + "AuthenticationDataAssertion.xml"); assertXmlEquals(authDataShould, authData.getSamlAssertion()); } private String parseSessionIDFromForm(String htmlForm) { String parName = "MOASessionID="; assertTrue("HTML Form enthält keine SessionID", htmlForm.indexOf(parName) >= 0); int i1 = htmlForm.indexOf(parName) + parName.length(); int i2 = htmlForm.indexOf("\"", i1); assertTrue("HTML Form enthält keine gültige SessionID", i2 > i1); return htmlForm.substring(i1, i2); } }