summaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorEmmanuel Raviart <eraviart@entrouvert.com>2004-07-23 13:04:44 +0000
committerEmmanuel Raviart <eraviart@entrouvert.com>2004-07-23 13:04:44 +0000
commit25c73745541cd659babe96bbb9daf6872f409479 (patch)
tree40eef3774f99a98b31b5c7d8379d2b1f6d4587b5 /java
parent90581b9fb62f66ffadb3415c0200303fa188034c (diff)
downloadlasso-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.c2
-rw-r--r--java/src/c/com_entrouvert_lasso_LassoLogout.c10
-rw-r--r--java/src/java/com/entrouvert/lasso/Lasso.java13
-rw-r--r--java/tests/LoginTest.java43
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() {