summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmmanuel Raviart <eraviart@entrouvert.com>2004-07-22 18:38:50 +0000
committerEmmanuel Raviart <eraviart@entrouvert.com>2004-07-22 18:38:50 +0000
commit9fafbcd580f9588a0b10bb430eed7b2acd99233d (patch)
treec284e67a01994dffdfaa4a4966b987ae21f0f1f0
parent55aeba092c8d40053e1dbff6af75176dfee2586d (diff)
downloadlasso-9fafbcd580f9588a0b10bb430eed7b2acd99233d.tar.gz
lasso-9fafbcd580f9588a0b10bb430eed7b2acd99233d.tar.xz
lasso-9fafbcd580f9588a0b10bb430eed7b2acd99233d.zip
Nearly completed Python & Java first non-regression test for login.
But Java test doesn't work: java.lang.UnsatisfiedLinkError: libjlasso: not found Adding its directory to LD_LIBRARY_PATH may help. at LoginTest.main (LoginTest.java:165) And I don't understand why. Please professor, help me!
-rw-r--r--java/src/c/com_entrouvert_lasso_Lasso.c2
-rw-r--r--java/src/c/com_entrouvert_lasso_LassoLogin.c22
-rw-r--r--java/src/java/com/entrouvert/lasso/LassoLogin.java2
-rw-r--r--java/src/java/com/entrouvert/lasso/LassoProfileContext.java1
-rw-r--r--java/tests/LoginTest.java29
-rw-r--r--lasso/id-ff/profile_context.h3
-rw-r--r--python/examples/logout.py2
-rw-r--r--python/lasso.py12
-rw-r--r--python/tests/login_tests.py27
9 files changed, 75 insertions, 25 deletions
diff --git a/java/src/c/com_entrouvert_lasso_Lasso.c b/java/src/c/com_entrouvert_lasso_Lasso.c
index b364631d..80ffd8ad 100644
--- a/java/src/c/com_entrouvert_lasso_Lasso.c
+++ b/java/src/c/com_entrouvert_lasso_Lasso.c
@@ -42,7 +42,7 @@ JNIEXPORT jint JNICALL Java_com_entrouvert_lasso_Lasso_getRequestTypeFromSoapMsg
char *value;
value = (char*)(*env)->GetStringUTFChars(env, _value, NULL);
- result = lasso_get_request_type_from_soap_msg(value);
+ result = lasso_profile_context_get_request_type_from_soap_msg(value);
(*env)->ReleaseStringUTFChars(env, _value, value);
return result;
}
diff --git a/java/src/c/com_entrouvert_lasso_LassoLogin.c b/java/src/c/com_entrouvert_lasso_LassoLogin.c
index b232b145..03cd9161 100644
--- a/java/src/c/com_entrouvert_lasso_LassoLogin.c
+++ b/java/src/c/com_entrouvert_lasso_LassoLogin.c
@@ -133,7 +133,24 @@ JNIEXPORT jint JNICALL Java_com_entrouvert_lasso_LassoLogin_buildRequestMsg
login = getCObject(env, this);
result = lasso_login_build_request_msg(login);
- return result;}
+ return result;
+}
+
+JNIEXPORT jint JNICALL Java_com_entrouvert_lasso_LassoLogin_createUser
+(JNIEnv * env, jobject this, jstring _userDump){
+ LassoLogin* login;
+ int result;
+ char *userDump;
+
+ userDump = (char*)(*env)->GetStringUTFChars(env, _userDump, NULL);
+
+ login = getCObject(env, this);
+ result = lasso_login_init_create_user(login, userDump);
+
+ (*env)->ReleaseStringUTFChars(env, _userDump, userDump);
+
+ return result;
+}
JNIEXPORT jstring JNICALL Java_com_entrouvert_lasso_LassoLogin_dump
(JNIEnv * env, jobject this){
@@ -155,8 +172,7 @@ JNIEXPORT jint JNICALL Java_com_entrouvert_lasso_LassoLogin_initAuthnRequest
providerID = (char*)(*env)->GetStringUTFChars(env, _providerID, NULL);
login = getCObject(env, this);
- result = lasso_login_init_authn_request(login,
- providerID);
+ result = lasso_login_init_authn_request(login, providerID);
(*env)->ReleaseStringUTFChars(env, _providerID, providerID);
diff --git a/java/src/java/com/entrouvert/lasso/LassoLogin.java b/java/src/java/com/entrouvert/lasso/LassoLogin.java
index db1b9209..071d715c 100644
--- a/java/src/java/com/entrouvert/lasso/LassoLogin.java
+++ b/java/src/java/com/entrouvert/lasso/LassoLogin.java
@@ -57,6 +57,8 @@ public class LassoLogin extends LassoProfileContext { // LassoLogin
native public int buildRequestMsg();
+ native public int createUser(String userDump);
+
native public String dump();
native public int initAuthnRequest(String providerId);
diff --git a/java/src/java/com/entrouvert/lasso/LassoProfileContext.java b/java/src/java/com/entrouvert/lasso/LassoProfileContext.java
index fc6c0c04..fff47500 100644
--- a/java/src/java/com/entrouvert/lasso/LassoProfileContext.java
+++ b/java/src/java/com/entrouvert/lasso/LassoProfileContext.java
@@ -62,4 +62,3 @@ public abstract class LassoProfileContext extends LassoObject { // LassoProfileC
native protected void initResponseField();
} // LassoProfileContext
-
diff --git a/java/tests/LoginTest.java b/java/tests/LoginTest.java
index 3b97bd52..0aa18cfe 100644
--- a/java/tests/LoginTest.java
+++ b/java/tests/LoginTest.java
@@ -78,13 +78,14 @@ public class LoginTest extends TestCase {
public void test02_serviceProviderLogin() {
boolean userAuthenticated;
- int method;
+ int method, requestType;
LassoAuthnRequest authnRequest;
LassoLogin idpLoginContext, spLoginContext;
+ LassoResponse response;
LassoServer idpContext, spContext;
String artifact, authenticationMethod, authnRequestQuery, authnRequestUrl, idpContextDump,
- nameIdentifier, relayState, responseMsg, responseQuery, responseUrl, spContextDump,
- soapEndpoint, soapRequestMsg;
+ idpUserContextDump, nameIdentifier, relayState, responseQuery, responseUrl,
+ soapEndpoint, soapResponseMsg, soapRequestMsg, spContextDump, spUserContextDump;
// Service provider login using HTTP redirect.
spContextDump = generateServiceProviderContextDump();
@@ -118,9 +119,11 @@ public class LoginTest extends TestCase {
assertEquals(idpLoginContext.buildArtifactMsg(
userAuthenticated, authenticationMethod, "FIXME: reauthenticateOnOrAfter",
Lasso.httpMethodRedirect), 0);
+ idpUserContextDump = spLoginContext.getUser().dump();
+ assertNotNull(idpUserContextDump);
responseUrl = idpLoginContext.getMsgUrl();
responseQuery = responseUrl.substring(responseUrl.indexOf("?") + 1);
- responseMsg = idpLoginContext.getResponseDump();
+ soapResponseMsg = idpLoginContext.getResponseDump();
artifact = idpLoginContext.getAssertionArtifact();
nameIdentifier = idpLoginContext.getNameIdentifier();
method = Lasso.httpMethodRedirect;
@@ -134,6 +137,24 @@ public class LoginTest extends TestCase {
assertEquals(spLoginContext.buildRequestMsg(), 0);
soapEndpoint = spLoginContext.getMsgUrl();
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).
+ assertEquals(spLoginContext.processResponseMsg(soapResponseMsg), 0);
+ assertEquals(spLoginContext.getNameIdentifier(), nameIdentifier);
+ // The user doesn't have any federation yet.
+ assertEquals(spLoginContext.createUser(null), 0);
+ spUserContextDump = spLoginContext.getUser().dump();
+ assertNotNull(spUserContextDump);
+ response = (LassoResponse) spLoginContext.getResponse();
+// authenticationMethod = response.get_child(
+// "AuthenticationStatement").get_attr_value("AuthenticationMethod")
+// self.failUnlessEqual(authenticationMethod, lasso.samlAuthenticationMethodPassword)
}
public static Test suite() {
diff --git a/lasso/id-ff/profile_context.h b/lasso/id-ff/profile_context.h
index fb2ee12c..939bf4f8 100644
--- a/lasso/id-ff/profile_context.h
+++ b/lasso/id-ff/profile_context.h
@@ -48,13 +48,14 @@ typedef struct _LassoProfileContext LassoProfileContext;
typedef struct _LassoProfileContextClass LassoProfileContextClass;
typedef struct _LassoProfileContextPrivate LassoProfileContextPrivate;
+ /* Request types (used by SOAP endpoint) */
typedef enum {
lassoRequestTypeLogin = 1,
lassoRequestTypeLogout,
lassoRequestTypeFederationTermination,
lassoRequestTypeRegisterNameIdentifier,
lassoRequestTypeNameIdentifierMapping,
-}lassoRequestTypes;
+} lassoRequestTypes;
typedef enum {
lassoHttpMethodGet = 1,
diff --git a/python/examples/logout.py b/python/examples/logout.py
index 789a1e90..efdbcb96 100644
--- a/python/examples/logout.py
+++ b/python/examples/logout.py
@@ -32,7 +32,7 @@ print 'request url : ', msg_url
print 'request body : ', msg_body
request_type = lasso.get_request_type_from_soap_msg(msg_body)
-if request_type==lasso.RequestTypeLogout:
+if request_type == lasso.requestTypeLogout:
print "it's a LogoutRequest !"
diff --git a/python/lasso.py b/python/lasso.py
index c738fb31..000709c3 100644
--- a/python/lasso.py
+++ b/python/lasso.py
@@ -47,12 +47,12 @@ def shutdown():
"""
return lassomod.shutdown()
-# request types :
-RequestTypeLogin = 1
-RequestTypeLogout = 2
-RequestTypeFederationTermination = 3
-RequestRegisterNameIdentifier = 4
-RequestTypeNameIdentifierMapping = 5
+# Request types
+requestTypeLogin = 1
+requestTypeLogout = 2
+requestTypeFederationTermination = 3
+requestTypeRegisterNameIdentifier = 4
+requestTypeNameIdentifierMapping = 5
def get_request_type_from_soap_msg(soap_buffer):
return lassomod.profile_context_get_request_type_from_soap_msg(soap_buffer);
diff --git a/python/tests/login_tests.py b/python/tests/login_tests.py
index f66d0828..0b3325f3 100644
--- a/python/tests/login_tests.py
+++ b/python/tests/login_tests.py
@@ -111,9 +111,11 @@ class LoginTestCase(unittest.TestCase):
self.failUnlessEqual(idpLoginContext.build_artifact_msg(
userAuthenticated, authenticationMethod, "FIXME: reauthenticateOnOrAfter",
lasso.httpMethodRedirect), 0)
+ idpUserContextDump = idpLoginContext.user.dump()
+ self.failUnless(idpUserContextDump)
responseUrl = idpLoginContext.msg_url
responseQuery = responseUrl.split("?", 1)[1]
- responseMsg = idpLoginContext.response_dump
+ soapResponseMsg = idpLoginContext.response_dump
artifact = idpLoginContext.assertionArtifact
nameIdentifier = idpLoginContext.nameIdentifier
method = lasso.httpMethodRedirect
@@ -128,13 +130,22 @@ class LoginTestCase(unittest.TestCase):
soapEndpoint = spLoginContext.msg_url
soapRequestMsg = spLoginContext.msg_body
-## soapResponseMsg = self.callSoap(loginContext.msg_url, loginContext.msg_body)
-## logs.debug("soapResponseMsg = %s" % soapResponseMsg)
-## errorCode = loginContext.process_response_msg(soapResponseMsg)
-## if errorCode:
-## raise Exception("Lasso login error %s" % errorCode)
-## nameIdentifier = loginContext.nameIdentifier
-
+ # Identity provider SOAP endpoint.
+ idpContextDump = self.generateIdentityProviderContextDump()
+ self.failUnless(idpContextDump)
+ requestType = lasso.get_request_type_from_soap_msg(soapRequestMsg)
+ self.failUnlessEqual(requestType, lasso.requestTypeLogin)
+
+ # Service provider assertion consumer (step 2).
+ self.failUnlessEqual(spLoginContext.process_response_msg(soapResponseMsg), 0)
+ self.failUnlessEqual(spLoginContext.nameIdentifier, nameIdentifier)
+ # The user doesn't have any federation yet.
+ self.failUnlessEqual(spLoginContext.create_user(None), 0)
+ spUserContextDump = spLoginContext.user.dump()
+ self.failUnless(spUserContextDump)
+ authenticationMethod = spLoginContext.response.get_child(
+ "AuthenticationStatement").get_attr_value("AuthenticationMethod")
+ self.failUnlessEqual(authenticationMethod, lasso.samlAuthenticationMethodPassword)
suite1 = unittest.makeSuite(LoginTestCase, 'test')