summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2004-07-26 10:16:10 +0000
committerFrederic Peters <fpeters@entrouvert.com>2004-07-26 10:16:10 +0000
commit3d67b7c87a669315244885d5d64d9cfd458e2fbc (patch)
tree755193a7cfdcddb2becda30f9135fe08372bfddd /tests
parent1b4a4680d679427959450985bb64024f3d623b59 (diff)
downloadlasso-3d67b7c87a669315244885d5d64d9cfd458e2fbc.tar.gz
lasso-3d67b7c87a669315244885d5d64d9cfd458e2fbc.tar.xz
lasso-3d67b7c87a669315244885d5d64d9cfd458e2fbc.zip
end of test port to C; developers, please test it (or the python login_tests;
results should be identical). There is a problem in memory management and *sometimes* it works. *Sometimes* it doesn't: (process:12643): lasso-CRITICAL **: file xml.c: line 64 (lasso_node_copy): assertion `LASSO_IS_NODE(node)' failed (process:12643): lasso-CRITICAL **: file xml.c: line 1024 (lasso_node_impl_add_child): assertion `LASSO_IS_NODE(child)' failed And *sometimes* it is even worse (segfault): Running suite(s): Login 50%: Checks: 2, Failures: 0, Errors: 1 login_tests.c:81:P:Generate Server Contexts:test01_generateServersContextDumps:Passed login_tests.c:229:E:Login initiated by service provider:test02_serviceProviderLogin: (after this point) Received signal 11 I believe this is caused by something in http://buildbox.entrouvert.org/logs/20040726/lupin.0320.changelog.xml
Diffstat (limited to 'tests')
-rw-r--r--tests/login_tests.c50
1 files changed, 48 insertions, 2 deletions
diff --git a/tests/login_tests.c b/tests/login_tests.c
index 8e89eef3..fd618d44 100644
--- a/tests/login_tests.c
+++ b/tests/login_tests.c
@@ -87,6 +87,8 @@ START_TEST(test02_serviceProviderLogin)
char *serviceProviderContextDump, *identityProviderContextDump;
LassoServer *spContext, *idpContext;
LassoLogin *spLoginContext, *idpLoginContext;
+ LassoLogout *spLogoutContext, *idpLogoutContext;
+ LassoUser *spUserContext;
LassoLibAuthnRequest *request;
int rc;
char *relayState;
@@ -94,6 +96,7 @@ START_TEST(test02_serviceProviderLogin)
char *responseUrl, *responseQuery;
char *idpUserContextDump;
char *soapResponseMsg;
+ char *spUserContextDump;
int requestType;
serviceProviderContextDump = generateServiceProviderContextDump();
@@ -177,12 +180,55 @@ START_TEST(test02_serviceProviderLogin)
fail_unless(strcmp(LASSO_PROFILE_CONTEXT(spLoginContext)->nameIdentifier,
LASSO_PROFILE_CONTEXT(idpLoginContext)->nameIdentifier) == 0,
"nameIdentifiers should be identical");
+ rc = lasso_login_create_user(spLoginContext, NULL);
+ fail_unless(rc == 0, "lasso_login_create_user failed");
+ fail_unless(LASSO_PROFILE_CONTEXT(spLoginContext)->user != NULL,
+ "spLoginContext has no user");
+ spUserContextDump = lasso_user_dump(LASSO_PROFILE_CONTEXT(spLoginContext)->user);
+ fail_unless(spUserContextDump != NULL, "lasso_user_dump failed");
+ /* Service provider logout */
+ lasso_server_destroy(spContext);
+ lasso_login_destroy(spLoginContext);
+ spContext = lasso_server_new_from_dump(serviceProviderContextDump);
+ spUserContext = lasso_user_new_from_dump(spUserContextDump);
+ fail_unless(spUserContext != NULL, "spUserContext should not be NULL");
+ spLogoutContext = lasso_logout_new(lassoProviderTypeSp,
+ spContext, spUserContext);
+ fail_unless(spLogoutContext != NULL, "spLogoutContext should not be NULL");
+ rc = lasso_logout_init_request(spLogoutContext, NULL);
+ fail_unless(rc == 0, "lasso_logout_init_request failed");
+ rc = lasso_logout_build_request_msg(spLogoutContext);
+ fail_unless(rc == 0, "lasso_logout_build_request_msg failed");
+ /* Identity provider SOAP endpoint */
+ lasso_server_destroy(idpContext);
+ requestType = lasso_profile_context_get_request_type_from_soap_msg(
+ LASSO_PROFILE_CONTEXT(spLogoutContext)->msg_body);
+ idpContext = lasso_server_new_from_dump(identityProviderContextDump);
+ idpLogoutContext = lasso_logout_new(lassoProviderTypeIdp, idpContext, NULL);
+ fail_unless(idpLogoutContext != NULL, "lasso_logout_new failed");
+ rc = lasso_logout_load_request_msg(
+ idpLogoutContext,
+ LASSO_PROFILE_CONTEXT(spLogoutContext)->msg_body,
+ lassoHttpMethodSoap);
+ fail_unless(rc == 0, "lasso_logout_load_request_msg failed");
+ rc = lasso_logout_load_user_dump(idpLogoutContext, idpUserContextDump);
+ fail_unless(rc == 0, "lasso_logout_load_user_dump failed");
+ rc = lasso_logout_process_request(idpLogoutContext);
+ fail_unless(rc == 0, "lasso_logout_process_request failed");
+ fail_unless(lasso_logout_get_next_providerID(idpLogoutContext) == NULL,
+ "lasso_logout_get_next_providerID failed");
+ lasso_logout_build_response_msg(idpLogoutContext);
+ soapResponseMsg = LASSO_PROFILE_CONTEXT(idpLogoutContext)->msg_body;
-
-
+ /* Service provider logout (step 2: process SOAP response) */
+ rc = lasso_logout_process_response_msg(spLogoutContext,
+ soapResponseMsg, lassoHttpMethodSoap);
+ fail_unless(rc == 0, "lasso_logout_process_response_msg failed");
+ spUserContextDump = lasso_user_dump(LASSO_PROFILE_CONTEXT(spLogoutContext)->user);
+ fail_unless(spUserContextDump != NULL, "lasso_user_dump failed");
}
END_TEST