package test.at.gv.egovernment.moa.id.auth.servlet; import org.w3c.dom.Element; import test.at.gv.egovernment.moa.id.UnitTestCase; import at.gv.egovernment.moa.id.auth.servlet.GetAuthenticationDataService; import at.gv.egovernment.moa.util.Constants; import at.gv.egovernment.moa.util.DOMUtils; import at.gv.egovernment.moa.util.XPathUtils; /** * Test case instantiates GetAuthenticationDataService and calls the Request() method. * It DOES NOT call the web service via Axis. * * @author Paul Ivancsics * @version $Id$ */ public class GetAuthenticationDataServiceTest extends UnitTestCase implements Constants { private GetAuthenticationDataService service; public GetAuthenticationDataServiceTest(String arg0) { super(arg0); } protected void setUp() throws Exception { service = new GetAuthenticationDataService(); } public void testService2Requests() throws Exception { String requestString = "" + "" + "123" + ""; Element request = DOMUtils.parseDocument(requestString, false, ALL_SCHEMA_LOCATIONS, null).getDocumentElement(); Element response = service.Request(new Element[] {request, request})[0]; assertStatus(response, "samlp:Requester", "samlp:TooManyResponses"); } public void testServiceNoSAMLArtifact() throws Exception { String requestString = "" + "" + "123" + ""; Element request = DOMUtils.parseDocument(requestString, false, ALL_SCHEMA_LOCATIONS, null).getDocumentElement(); Element response = service.Request(new Element[] {request})[0]; assertStatus(response, "samlp:Requester", null); } public void testService2SAMLArtifacts() throws Exception { String requestString = "" + "" + "123" + "456" + ""; Element request = DOMUtils.parseDocument(requestString, false, ALL_SCHEMA_LOCATIONS, null).getDocumentElement(); Element response = service.Request(new Element[] {request})[0]; assertStatus(response, "samlp:Requester", "samlp:TooManyResponses"); } public void testServiceWrongFormat() throws Exception { String requestString = "" + "" + ""; Element request = DOMUtils.parseDocument(requestString, false, ALL_SCHEMA_LOCATIONS, null).getDocumentElement(); Element response = service.Request(new Element[] {request})[0]; assertStatus(response, "samlp:Requester", null); } public void testServiceWrongSAMLArtifact() throws Exception { String requestString = "" + "" + "WRONGARTIFACT" + ""; Element request = DOMUtils.parseDocument(requestString, false, ALL_SCHEMA_LOCATIONS, null).getDocumentElement(); Element response = service.Request(new Element[] {request})[0]; assertStatus(response, "samlp:Requester", "samlp:ResourceNotRecognized"); } private void assertStatus(Element response, String statusCodeShould, String subStatusCodeShould) throws Exception { Element statusCodeNode = (Element)XPathUtils.selectSingleNode(response, "//samlp:StatusCode"); String statusCode = statusCodeNode.getAttribute("Value"); Element subStatusCodeNode = (Element)XPathUtils.selectSingleNode(statusCodeNode, "//samlp:StatusCode/samlp:StatusCode"); String subStatusCode = subStatusCodeNode == null ? null : subStatusCodeNode.getAttribute("Value"); System.out.println(statusCode + subStatusCode); assertEquals(statusCodeShould, statusCode); assertEquals(subStatusCodeShould, subStatusCode); } }