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);
}
}