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!
This commit is contained in:
Emmanuel Raviart 2004-07-22 18:38:50 +00:00
parent 55aeba092c
commit 9fafbcd580
9 changed files with 74 additions and 24 deletions

View File

@ -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;
}

View File

@ -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);

View File

@ -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);

View File

@ -62,4 +62,3 @@ public abstract class LassoProfileContext extends LassoObject { // LassoProfileC
native protected void initResponseField();
} // LassoProfileContext

View File

@ -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() {

View File

@ -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,

View File

@ -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 !"

View File

@ -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);

View File

@ -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')