diff options
| author | Emmanuel Raviart <eraviart@entrouvert.com> | 2004-07-22 18:38:50 +0000 |
|---|---|---|
| committer | Emmanuel Raviart <eraviart@entrouvert.com> | 2004-07-22 18:38:50 +0000 |
| commit | 9fafbcd580f9588a0b10bb430eed7b2acd99233d (patch) | |
| tree | c284e67a01994dffdfaa4a4966b987ae21f0f1f0 | |
| parent | 55aeba092c8d40053e1dbff6af75176dfee2586d (diff) | |
| download | lasso-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.c | 2 | ||||
| -rw-r--r-- | java/src/c/com_entrouvert_lasso_LassoLogin.c | 22 | ||||
| -rw-r--r-- | java/src/java/com/entrouvert/lasso/LassoLogin.java | 2 | ||||
| -rw-r--r-- | java/src/java/com/entrouvert/lasso/LassoProfileContext.java | 1 | ||||
| -rw-r--r-- | java/tests/LoginTest.java | 29 | ||||
| -rw-r--r-- | lasso/id-ff/profile_context.h | 3 | ||||
| -rw-r--r-- | python/examples/logout.py | 2 | ||||
| -rw-r--r-- | python/lasso.py | 12 | ||||
| -rw-r--r-- | python/tests/login_tests.py | 27 |
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') |
