SpringBusFactory.setThreadDefaultBus(bus);
URL wsdl = SamlTokenTest.class.getResource("DoubleItSaml.wsdl");
Service service = Service.create(wsdl, SERVICE_QNAME);
QName portQName = new QName(NAMESPACE, "DoubleItSaml2AsymmetricPort");
DoubleItPortType saml2Port =
service.getPort(portQName, DoubleItPortType.class);
updateAddressPort(saml2Port, PORT);
try {
saml2Port.doubleIt(25);
fail("Expected failure on an invocation with no SAML Assertion");
} catch (javax.xml.ws.soap.SOAPFaultException ex) {
assertTrue(ex.getMessage().contains("No SAML CallbackHandler available"));
}
((BindingProvider)saml2Port).getRequestContext().put(
"ws-security.saml-callback-handler", new SamlCallbackHandler(false)
);
try {
saml2Port.doubleIt(25);
fail("Expected failure on an invocation with a SAML1 Assertion");
} catch (javax.xml.ws.soap.SOAPFaultException ex) {
assertTrue(ex.getMessage().contains("Wrong SAML Version"));
}
((BindingProvider)saml2Port).getRequestContext().put(
"ws-security.saml-callback-handler", new SamlCallbackHandler()
);
int result = saml2Port.doubleIt(25);
assertTrue(result == 50);
// Don't send any Token...failure expected
portQName = new QName(NAMESPACE, "DoubleItSaml2AsymmetricPort2");
saml2Port = service.getPort(portQName, DoubleItPortType.class);
updateAddressPort(saml2Port, PORT);
((BindingProvider)saml2Port).getRequestContext().put(
"ws-security.saml-callback-handler", new SamlCallbackHandler()
);
try {
saml2Port.doubleIt(25);
fail("Failure expected on no token");
} catch (javax.xml.ws.soap.SOAPFaultException ex) {
String error = "The received token does not match the token inclusion requirement";
assertTrue(ex.getMessage().contains(error));
}