diff options
| author | Emmanuel Raviart <eraviart@entrouvert.com> | 2004-07-23 13:04:44 +0000 |
|---|---|---|
| committer | Emmanuel Raviart <eraviart@entrouvert.com> | 2004-07-23 13:04:44 +0000 |
| commit | 25c73745541cd659babe96bbb9daf6872f409479 (patch) | |
| tree | 40eef3774f99a98b31b5c7d8379d2b1f6d4587b5 /java | |
| parent | 90581b9fb62f66ffadb3415c0200303fa188034c (diff) | |
| download | lasso-25c73745541cd659babe96bbb9daf6872f409479.tar.gz lasso-25c73745541cd659babe96bbb9daf6872f409479.tar.xz lasso-25c73745541cd659babe96bbb9daf6872f409479.zip | |
Added (incomplete) logout tests for Python & Java.
Diffstat (limited to 'java')
| -rw-r--r-- | java/src/c/com_entrouvert_lasso_LassoLogin.c | 2 | ||||
| -rw-r--r-- | java/src/c/com_entrouvert_lasso_LassoLogout.c | 10 | ||||
| -rw-r--r-- | java/src/java/com/entrouvert/lasso/Lasso.java | 13 | ||||
| -rw-r--r-- | java/tests/LoginTest.java | 43 |
4 files changed, 56 insertions, 12 deletions
diff --git a/java/src/c/com_entrouvert_lasso_LassoLogin.c b/java/src/c/com_entrouvert_lasso_LassoLogin.c index fca7d90f..5da86e00 100644 --- a/java/src/c/com_entrouvert_lasso_LassoLogin.c +++ b/java/src/c/com_entrouvert_lasso_LassoLogin.c @@ -140,7 +140,7 @@ JNIEXPORT jint JNICALL Java_com_entrouvert_lasso_LassoLogin_createUser (JNIEnv * env, jobject this, jstring _userDump){ LassoLogin* login; int result; - char *userDump; + char *userDump = NULL; if (_userDump) userDump = (char*)(*env)->GetStringUTFChars(env, _userDump, NULL); diff --git a/java/src/c/com_entrouvert_lasso_LassoLogout.c b/java/src/c/com_entrouvert_lasso_LassoLogout.c index 8dc50012..1d45caf7 100644 --- a/java/src/c/com_entrouvert_lasso_LassoLogout.c +++ b/java/src/c/com_entrouvert_lasso_LassoLogout.c @@ -57,7 +57,7 @@ JNIEXPORT jint JNICALL Java_com_entrouvert_lasso_LassoLogout_buildRequestMsg } -JNIEXPORT jint JNICALL Java_com_entrouvert_lasso_LassoLogout_buildResponseMmsg +JNIEXPORT jint JNICALL Java_com_entrouvert_lasso_LassoLogout_buildResponseMsg (JNIEnv * env, jobject this){ int result; LassoLogout* logout; @@ -73,14 +73,16 @@ JNIEXPORT jint JNICALL Java_com_entrouvert_lasso_LassoLogout_initRequest (JNIEnv * env, jobject this, jstring _providerID){ int result; LassoLogout* logout; - char *providerID; + char *providerID = NULL; - providerID = (char*)(*env)->GetStringUTFChars(env, _providerID, NULL); + if (_providerID) + providerID = (char*)(*env)->GetStringUTFChars(env, _providerID, NULL); logout = getCObject(env, this); result = lasso_logout_init_request(logout, providerID); - (*env)->ReleaseStringUTFChars(env, _providerID, providerID); + if (_providerID) + (*env)->ReleaseStringUTFChars(env, _providerID, providerID); return result; } diff --git a/java/src/java/com/entrouvert/lasso/Lasso.java b/java/src/java/com/entrouvert/lasso/Lasso.java index 73990501..d30ac6e2 100644 --- a/java/src/java/com/entrouvert/lasso/Lasso.java +++ b/java/src/java/com/entrouvert/lasso/Lasso.java @@ -30,25 +30,31 @@ public class Lasso { // Lasso System.loadLibrary("jlasso"); } + /* HTTP methods used by Liberty Alliance */ static final public int httpMethodGet = 1; static final public int httpMethodPost = 2; static final public int httpMethodRedirect = 3; static final public int httpMethodSoap = 4; - /* Consent */ + /* Consent types */ static final public String libConsentObtained = "urn:liberty:consent:obtained"; static final public String libConsentUnavailable = "urn:liberty:consent:unavailable"; static final public String libConsentInapplicable = "urn:liberty:consent:inapplicable"; - /* NameIDPolicyType */ + /* NameIDPolicy types */ static final public String libNameIdPolicyTypeNone = "none"; static final public String libNameIdPolicyTypeOneTime = "onetime"; static final public String libNameIdPolicyTypeFederated = "federated"; static final public String libNameIdPolicyTypeAny = "any"; + /* Login ProtocolProfile types */ static final public int loginProtocolProfileBrwsArt = 1; static final public int loginProtocolProfileBrwsPost = 2; + /* Provider types */ + static final public int providerTypeSp = 1; + static final public int providerTypeIdp = 2; + /* Request types */ static final public int requestTypeLogin = 1; static final public int requestTypeLogout = 2; @@ -56,7 +62,7 @@ public class Lasso { // Lasso static final public int requestTypeRegisterNameIdentifier = 4; static final public int requestTypeNameIdentifierMapping = 5; - /* AuthenticationMethods */ + /* AuthenticationMethod types */ static final public String samlAuthenticationMethodPassword = "urn:oasis:names:tc:SAML:1.0:am:password"; static final public String samlAuthenticationMethodKerberos = "urn:ietf:rfc:1510"; static final public String samlAuthenticationMethodSecureRemotePassword = "urn:ietf:rfc:2945"; @@ -69,6 +75,7 @@ public class Lasso { // Lasso static final public String samlAuthenticationMethodXmlDSig = "urn:ietf:rfc:3075"; static final public String samlAuthenticationMethodUnspecified = "urn:oasis:names:tc:SAML:1.0:am:unspecified"; + /* SignatureMethod types */ static final public int signatureMethodRsaSha1 = 1; static final public int signatureMethodDsaSha1 = 2; diff --git a/java/tests/LoginTest.java b/java/tests/LoginTest.java index 182d8c17..328a0f15 100644 --- a/java/tests/LoginTest.java +++ b/java/tests/LoginTest.java @@ -81,8 +81,10 @@ public class LoginTest extends TestCase { int method, requestType; LassoAuthnRequest authnRequest; LassoLogin idpLoginContext, spLoginContext; + LassoLogout idpLogoutContext, spLogoutContext; LassoResponse response; LassoServer idpContext, spContext; + LassoUser idpUserContext, spUserContext; String artifact, authenticationMethod, authnRequestQuery, authnRequestUrl, idpContextDump, idpUserContextDump, nameIdentifier, relayState, responseQuery, responseUrl, soapEndpoint, soapResponseMsg, soapRequestMsg, spContextDump, spUserContextDump; @@ -139,12 +141,10 @@ public class LoginTest extends TestCase { soapRequestMsg = spLoginContext.getMsgBody(); // Identity provider SOAP endpoint. - idpContextDump = generateIdentityProviderContextDump(); - assertNotNull(idpContextDump); requestType = Lasso.getRequestTypeFromSoapMsg(soapRequestMsg); assertEquals(requestType, Lasso.requestTypeLogin); - // Service provider assertion consumer (step 2). + // Service provider assertion consumer (step 2: process SOAP response). assertEquals(spLoginContext.processResponseMsg(soapResponseMsg), 0); assertEquals(spLoginContext.getNameIdentifier(), nameIdentifier); // The user doesn't have any federation yet. @@ -152,9 +152,44 @@ public class LoginTest extends TestCase { spUserContextDump = spLoginContext.getUser().dump(); assertNotNull(spUserContextDump); response = (LassoResponse) spLoginContext.getResponse(); +// FIXME: I believe the instruction below is not clean enough for a binding. // authenticationMethod = response.get_child( // "AuthenticationStatement").get_attr_value("AuthenticationMethod") -// self.failUnlessEqual(authenticationMethod, lasso.samlAuthenticationMethodPassword) +// assertEquals(authenticationMethod, lasso.samlAuthenticationMethodPassword) + + // Service provider logout. + spContextDump = generateServiceProviderContextDump(); + assertNotNull(spContextDump); + spContext = new LassoServer(spContextDump); + assertNotNull(spContext); + assertNotNull(spUserContextDump); + spUserContext = new LassoUser(spUserContextDump); + assertNotNull(spUserContext); + spLogoutContext = new LassoLogout(spContext, spUserContext, Lasso.providerTypeSp); + assertEquals(spLogoutContext.initRequest(null), 0); + assertEquals(spLogoutContext.buildRequestMsg(), 0); + soapEndpoint = spLogoutContext.getMsgUrl(); + soapRequestMsg = spLogoutContext.getMsgBody(); + + // Identity provider SOAP endpoint. + requestType = Lasso.getRequestTypeFromSoapMsg(soapRequestMsg); + assertEquals(requestType, Lasso.requestTypeLogout); + idpContextDump = generateIdentityProviderContextDump(); + assertNotNull(idpContextDump); + idpContext = new LassoServer(idpContextDump); + assertNotNull(idpContext); + assertNotNull(idpUserContextDump); + idpUserContext = new LassoUser(idpUserContextDump); + assertNotNull(idpUserContext); + idpLogoutContext = new LassoLogout(idpContext, idpUserContext, Lasso.providerTypeIdp); + assertEquals(idpLogoutContext.processRequestMsg(soapRequestMsg, Lasso.httpMethodSoap), 0); + assertEquals(idpLogoutContext.buildResponseMsg(), 0); + soapResponseMsg = idpLogoutContext.getMsgBody(); + + // Service provider logout (step 2: process SOAP response). + assertEquals(spLogoutContext.processResponseMsg(soapResponseMsg, Lasso.httpMethodSoap), 0); + spUserContextDump = spLogoutContext.getUser().dump(); + assertNotNull(spUserContextDump); } public static Test suite() { |
