1101 lines
50 KiB
C
1101 lines
50 KiB
C
/*
|
|
* Lasso library C unit tests
|
|
*
|
|
* Copyright (C) 2004-2007 Entr'ouvert
|
|
* http://lasso.entrouvert.org
|
|
*
|
|
* Authors: See AUTHORS file in top-level directory.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include <check.h>
|
|
|
|
#include "../lasso/lasso.h"
|
|
#include "../lasso/xml/strings.h"
|
|
#include "../lasso/xml/xml_idff.h"
|
|
#include "../lasso/xml/saml-2.0/xml_saml2.h"
|
|
#include "../lasso/xml/soap-1.1/xml_soap11.h"
|
|
#include "../lasso/utils.h"
|
|
#include "../lasso/xml/private.h"
|
|
#include <libxml/tree.h>
|
|
#include "tests.h"
|
|
|
|
START_TEST(test01_server_load_dump_empty_string)
|
|
{
|
|
LassoServer *serverContext;
|
|
serverContext = lasso_server_new_from_dump("");
|
|
ck_assert_msg(serverContext == NULL,
|
|
"serverContext was created from an empty string dump");
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(test02_server_load_dump_random_string)
|
|
{
|
|
LassoServer *serverContext;
|
|
begin_check_do_log("libxml2", G_LOG_LEVEL_DEBUG, "libxml2: Start tag expected, '<' not found\n", FALSE);
|
|
serverContext = lasso_server_new_from_dump("foo");
|
|
end_check_do_log("libxml2");
|
|
ck_assert_msg(serverContext == NULL,
|
|
"serverContext was created from a fake dump");
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(test03_server_load_dump_random_xml)
|
|
{
|
|
LassoServer *serverContext;
|
|
begin_check_do_log(NULL, G_LOG_LEVEL_CRITICAL, " Unable to build a LassoNode from a xmlNode", TRUE);
|
|
serverContext = lasso_server_new_from_dump("<?xml version=\"1.0\"?><foo/>");
|
|
end_check_do_log(NULL);
|
|
ck_assert_msg(serverContext == NULL,
|
|
"serverContext was created from fake (but valid XML) dump");
|
|
}
|
|
END_TEST
|
|
|
|
|
|
START_TEST(test04_identity_load_dump_null)
|
|
{
|
|
LassoIdentity *identity;
|
|
|
|
identity = lasso_identity_new_from_dump(NULL);
|
|
ck_assert_msg(identity == NULL, "identity was created from NULL dump");
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(test05_identity_load_dump_empty)
|
|
{
|
|
LassoIdentity *identity;
|
|
|
|
identity = lasso_identity_new_from_dump("");
|
|
ck_assert_msg(identity == NULL, "identity was created from empty dump");
|
|
}
|
|
END_TEST
|
|
|
|
#include "../lasso/registry.h"
|
|
|
|
START_TEST(test06_registry_direct_mapping)
|
|
{
|
|
const char *name;
|
|
gint r;
|
|
|
|
r = lasso_registry_default_add_direct_mapping(LASSO_LIB_HREF, "test", LASSO_LASSO_HREF,
|
|
"LassoTestClass");
|
|
ck_assert_msg(r == 0, "lasso_registry_default_add_direct_mapping should return 0 for new mappings");
|
|
name = lasso_registry_default_get_mapping(LASSO_LIB_HREF, "test", LASSO_LASSO_HREF);
|
|
ck_assert_msg(name != NULL, "lasso_registry_default_get_mapping should return the recent mapping");
|
|
ck_assert_msg(strcmp(name, "LassoTestClass") == 0, "lasso_registry_default_get_mapping should return LassoTestClass");
|
|
r = lasso_registry_default_add_direct_mapping(LASSO_LIB_HREF, "test", LASSO_LASSO_HREF,
|
|
"LassoTestClass");
|
|
ck_assert_msg(r == LASSO_REGISTRY_ERROR_KEY_EXISTS, "lasso_registry_default_add_direct_mapping should return LASSO_REGISTRY_KEY_EXISTS when done two times");
|
|
}
|
|
END_TEST
|
|
|
|
const char *trad(const char *from_namespace, const char *from_name, const char* to_namespace)
|
|
{
|
|
if (strcmp(from_namespace, "coin") == 0 &&
|
|
strcmp(to_namespace, LASSO_LASSO_HREF) == 0)
|
|
{
|
|
char *temp = g_strconcat("Lasso", from_name, NULL);
|
|
const char *ret = g_intern_string(temp);
|
|
g_free(temp);
|
|
return ret;
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
|
|
START_TEST(test07_registry_functional_mapping)
|
|
{
|
|
const char *name;
|
|
gint r;
|
|
|
|
r = lasso_registry_default_add_functional_mapping("coin", LASSO_LASSO_HREF, trad);
|
|
ck_assert_msg(r == 0, "lasso_registry_default_add_functional mapping should return 0 for new mapping");
|
|
name = lasso_registry_default_get_mapping("coin", "Assertion", LASSO_LASSO_HREF);
|
|
ck_assert_msg(name != NULL, "lasso_registry_default_get_mapping should return the recent mapping");
|
|
ck_assert_msg(strcmp(name, "LassoAssertion") == 0, "lasso_registry_default_get_mapping should return LassoAssertion");
|
|
r = lasso_registry_default_add_functional_mapping("coin", LASSO_LASSO_HREF, trad);
|
|
ck_assert_msg(r == LASSO_REGISTRY_ERROR_KEY_EXISTS, "lasso_registry_default_add_functional_mapping should return LASSO_REGISTRY_KEY_EXISTS when done two times");
|
|
}
|
|
END_TEST
|
|
|
|
static struct XmlSnippet schema_snippets[] = {
|
|
{NULL, 0, 0, NULL, NULL, NULL}
|
|
};
|
|
|
|
static void
|
|
class_init(LassoNodeClass *klass, gpointer class_data G_GNUC_UNUSED)
|
|
{
|
|
LassoNodeClass *nclass = LASSO_NODE_CLASS(klass);
|
|
|
|
nclass->node_data = g_new0(LassoNodeClassData, 1);
|
|
lasso_node_class_set_nodename(nclass, "Assertion");
|
|
lasso_node_class_set_ns(nclass,LASSO_SAML2_ASSERTION_HREF, LASSO_SAML2_ASSERTION_PREFIX);
|
|
lasso_node_class_add_snippets(nclass, schema_snippets);
|
|
|
|
}
|
|
|
|
START_TEST(test08_test_new_from_xmlNode)
|
|
{
|
|
gint r;
|
|
LassoNode *node = NULL;
|
|
|
|
static const GTypeInfo this_info = {
|
|
sizeof (LassoNodeClass),
|
|
NULL,
|
|
NULL,
|
|
(GClassInitFunc) class_init,
|
|
NULL,
|
|
NULL,
|
|
sizeof(LassoNode),
|
|
0,
|
|
NULL,
|
|
NULL
|
|
};
|
|
|
|
g_type_register_static(LASSO_TYPE_NODE,
|
|
"LassoTest", &this_info, 0);
|
|
r = lasso_registry_default_add_direct_mapping("http://example.com", "Test1", LASSO_LASSO_HREF, "LassoTest");
|
|
ck_assert_msg(r == 0, "no mapping for http://example.com:Test1 should exist");
|
|
begin_check_do_log(NULL, G_LOG_LEVEL_WARNING, " Class LassoTest has no node_data so no initialization is possible", TRUE);
|
|
node = lasso_node_new_from_dump("<Test1 xmlns=\"http://example.com\"></Test1>");
|
|
end_check_do_log(NULL);
|
|
ck_assert_msg(node != NULL, "parsing <Test1/> should return an object");
|
|
ck_assert_msg(strcmp(G_OBJECT_TYPE_NAME(node), "LassoTest") == 0, "node classname should be LassoTest");
|
|
g_object_unref(node);
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(test09_test_deserialization)
|
|
{
|
|
char *content = NULL;
|
|
size_t len = 0;
|
|
LassoNode *node;
|
|
|
|
g_file_get_contents(TESTSDATADIR "/response-1", &content, &len, NULL);
|
|
|
|
ck_assert_msg(content != NULL, "content should be read");
|
|
node = lasso_node_new_from_dump(content);
|
|
ck_assert_msg(node != NULL, "node should be parsed");
|
|
g_object_unref(node);
|
|
g_free(content);
|
|
}
|
|
END_TEST
|
|
|
|
/* try to test all new functions and their associated deserialization codes */
|
|
START_TEST(test10_test_alldumps)
|
|
{
|
|
LassoNode *node, *node2;
|
|
char *node_dump;
|
|
|
|
node = LASSO_NODE(lasso_identity_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_identity_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_session_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_session_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_ds_key_info_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_ds_key_info_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_ds_key_value_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_ds_key_value_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_ds_rsa_key_value_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_ds_rsa_key_value_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
/* ID-FF 1.2 */
|
|
node = LASSO_NODE(lasso_lib_assertion_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_assertion_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_authn_context_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_authn_context_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_authn_request_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_authn_request_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_authn_request_envelope_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_authn_request_envelope_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_federation_termination_notification_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_federation_termination_notification_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_idp_entries_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_idp_entries_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_idp_entry_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_idp_entry_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_idp_list_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_idp_list_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_logout_request_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_logout_request_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_logout_response_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_logout_response_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_name_identifier_mapping_request_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_name_identifier_mapping_request_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_name_identifier_mapping_response_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_name_identifier_mapping_response_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_register_name_identifier_request_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_register_name_identifier_request_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_register_name_identifier_response_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_register_name_identifier_response_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_request_authn_context_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_request_authn_context_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_scoping_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_scoping_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_lib_subject_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_lib_subject_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_misc_text_node_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg(node_dump && strcmp(node_dump, "<XXX/>") == 0, "LassoMiscTextNode dump failed");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node);
|
|
/* SAML 2.0 */
|
|
node = LASSO_NODE(lasso_saml2_action_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_action_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_advice_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_advice_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_assertion_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_assertion_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_attribute_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_attribute_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_attribute_statement_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_attribute_statement_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_attribute_value_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_attribute_value_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_audience_restriction_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_audience_restriction_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_authn_context_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_authn_context_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_authn_statement_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_authn_statement_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_authz_decision_statement_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_authz_decision_statement_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_base_idabstract_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_base_idabstract_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_condition_abstract_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_condition_abstract_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_conditions_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_conditions_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_encrypted_element_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_encrypted_element_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_evidence_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_evidence_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_key_info_confirmation_data_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_key_info_confirmation_data_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_name_id_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_name_id_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_one_time_use_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_one_time_use_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_proxy_restriction_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_proxy_restriction_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_statement_abstract_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_statement_abstract_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_subject_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_subject_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_subject_confirmation_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_subject_confirmation_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_subject_confirmation_data_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_subject_confirmation_data_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml2_subject_locality_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml2_subject_locality_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_artifact_resolve_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_artifact_resolve_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_artifact_response_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_artifact_response_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_assertion_id_request_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_assertion_id_request_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_attribute_query_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_attribute_query_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_authn_query_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_authn_query_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_authn_request_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_authn_request_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_authz_decision_query_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_authz_decision_query_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_extensions_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_extensions_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_idp_entry_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_idp_entry_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_idp_list_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_idp_list_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
/* node = LASSO_NODE(lasso_samlp2_logout_request_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_logout_request_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node); */
|
|
node = LASSO_NODE(lasso_samlp2_logout_response_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_logout_response_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
/* node = LASSO_NODE(lasso_samlp2_manage_name_id_request_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_manage_name_id_request_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node); */
|
|
node = LASSO_NODE(lasso_samlp2_manage_name_id_response_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_manage_name_id_response_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_name_id_mapping_request_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_name_id_mapping_request_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_name_id_mapping_response_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_name_id_mapping_response_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_name_id_policy_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_name_id_policy_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_request_abstract_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_request_abstract_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_requested_authn_context_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_requested_authn_context_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_response_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_response_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_scoping_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_scoping_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_status_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_status_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_status_code_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_status_code_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_status_detail_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_status_detail_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_status_response_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_status_response_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_subject_query_abstract_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_subject_query_abstract_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp2_terminate_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp2_terminate_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
/* SAML 1.0 */
|
|
node = LASSO_NODE(lasso_saml_advice_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml_advice_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml_assertion_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml_assertion_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml_attribute_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml_attribute_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml_attribute_designator_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml_attribute_designator_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml_attribute_statement_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml_attribute_statement_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml_attribute_value_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml_attribute_value_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml_audience_restriction_condition_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml_audience_restriction_condition_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml_authentication_statement_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml_authentication_statement_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml_authority_binding_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml_authority_binding_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml_conditions_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml_conditions_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml_name_identifier_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml_name_identifier_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml_subject_confirmation_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml_subject_confirmation_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_saml_subject_statement_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_saml_subject_statement_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp_request_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp_request_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp_response_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp_response_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp_status_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp_status_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_samlp_status_code_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_samlp_status_code_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
/* SOAP */
|
|
node = LASSO_NODE(lasso_soap_body_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_soap_body_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_soap_detail_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_soap_detail_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_soap_fault_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_soap_fault_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
node = LASSO_NODE(lasso_soap_header_new());
|
|
node_dump = lasso_node_dump(node);
|
|
ck_assert_msg((node2 = lasso_node_new_from_dump(node_dump)) != NULL, "restoring dump failed after lasso_soap_header_new");
|
|
lasso_release_string(node_dump);
|
|
lasso_release_gobject(node2);
|
|
lasso_release_gobject(node);
|
|
/* test deserialization of saml2:EncryptedAssertion" */
|
|
const char *encrypted_element_xml[] = {
|
|
"<EncryptedAssertion xmlns=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:xmlenc=\"http://www.w3.org/2001/04/xmlenc#\">\n\
|
|
<xmlenc:EncryptedData/>\
|
|
<xmlenc:EncryptedKey/>\
|
|
</EncryptedAssertion>",
|
|
"<EncryptedID xmlns=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:xmlenc=\"http://www.w3.org/2001/04/xmlenc#\">\n\
|
|
<xmlenc:EncryptedData/>\
|
|
<xmlenc:EncryptedKey/>\
|
|
</EncryptedID>",
|
|
"<EncryptedAttribute xmlns=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:xmlenc=\"http://www.w3.org/2001/04/xmlenc#\">\n\
|
|
<xmlenc:EncryptedData/>\
|
|
<xmlenc:EncryptedKey/>\
|
|
</EncryptedAttribute>",
|
|
"<NewEncryptedID xmlns=\"urn:oasis:names:tc:SAML:2.0:protocol\" xmlns:xmlenc=\"http://www.w3.org/2001/04/xmlenc#\">\n\
|
|
<xmlenc:EncryptedData/>\
|
|
<xmlenc:EncryptedKey/>\
|
|
</NewEncryptedID>", NULL };
|
|
const char **iter = encrypted_element_xml;
|
|
while (*iter) {
|
|
xmlDoc *xmldoc;
|
|
LassoNode *node;
|
|
|
|
xmldoc = xmlParseDoc (BAD_CAST (*iter));
|
|
ck_assert_msg(xmldoc != NULL, "Failed to parse %s: no xmldoc", *iter);
|
|
ck_assert_msg(xmlDocGetRootElement (xmldoc) != NULL, "Failed to parse %s: no root node element", *iter);
|
|
node = lasso_node_new_from_xmlNode(xmlDocGetRootElement(xmldoc));
|
|
ck_assert_msg(LASSO_IS_SAML2_ENCRYPTED_ELEMENT (node), "Parsing of %s did not return a saml2:EncryptedElement, %s", (char*)*iter, g_type_name(G_TYPE_FROM_INSTANCE(node)));
|
|
g_object_unref(node);
|
|
lasso_release_doc(xmldoc);
|
|
++iter;
|
|
}
|
|
}
|
|
END_TEST
|
|
|
|
/* test NameIDFormat extraction */
|
|
START_TEST(test11_get_default_name_id_format)
|
|
{
|
|
LassoProvider *provider;
|
|
char *name_id_format;
|
|
const GList *name_id_formats;
|
|
|
|
provider = lasso_provider_new(LASSO_PROVIDER_ROLE_SP, TESTSDATADIR "/sp5-saml2/metadata.xml", NULL, NULL);
|
|
ck_assert_msg(provider != NULL, "lasso_provider_new failed on metadata file: %s", TESTSDATADIR "/sp5-saml2/metadata.xml");
|
|
name_id_format = lasso_provider_get_default_name_id_format(provider);
|
|
ck_assert_msg(name_id_format != NULL, "no default name id format found!");
|
|
ck_assert_msg(strcmp(name_id_format, LASSO_SAML2_NAME_IDENTIFIER_FORMAT_EMAIL) == 0, "default name id format is not email, it is: %s", name_id_format);
|
|
lasso_release_string(name_id_format);
|
|
name_id_formats = lasso_provider_get_metadata_list(provider, "NameIDFormat");
|
|
ck_assert_msg(g_list_length((GList*)name_id_formats) == 1, "lasso_provider_get_metadata_list returned more or less than 1 NameIDFormat: %u", g_list_length((GList*)name_id_formats));
|
|
ck_assert_msg(name_id_formats->data != NULL, "first name id format is NULL");
|
|
ck_assert_msg(strcmp((char*)name_id_formats->data, LASSO_SAML2_NAME_IDENTIFIER_FORMAT_EMAIL) == 0, "first name id format is not email, it is %s", (char*)name_id_formats->data);
|
|
/* cleanup */
|
|
lasso_release_gobject(provider);
|
|
}
|
|
END_TEST
|
|
|
|
#include <stdio.h>
|
|
|
|
/* test load federation */
|
|
START_TEST(test13_test_lasso_server_load_metadata)
|
|
{
|
|
LassoServer *server = NULL;
|
|
GList *loaded_entity_ids = NULL;
|
|
GList blacklisted_1 = { .data = "https://identities.univ-jfc.fr/idp/prod", .next = NULL };
|
|
const gchar *trusted_roots = TESTSDATADIR "/rootCA.crt";
|
|
|
|
/* The IDP metadata file is signed with rsa-sha1, so verifying it would
|
|
* fail incase sha1 is not available
|
|
*/
|
|
if (lasso_get_default_signature_method() != LASSO_SIGNATURE_METHOD_RSA_SHA1) {
|
|
trusted_roots = NULL;
|
|
}
|
|
|
|
check_not_null(server = lasso_server_new(
|
|
TESTSDATADIR "/idp5-saml2/metadata.xml",
|
|
TESTSDATADIR "/idp5-saml2/private-key.pem",
|
|
NULL, /* Secret key to unlock private key */
|
|
NULL));
|
|
block_lasso_logs;
|
|
check_good_rc(lasso_server_load_metadata(server, LASSO_PROVIDER_ROLE_IDP,
|
|
TESTSDATADIR "/metadata/renater-metadata.xml",
|
|
trusted_roots,
|
|
&blacklisted_1, &loaded_entity_ids,
|
|
LASSO_SERVER_LOAD_METADATA_FLAG_DEFAULT));
|
|
unblock_lasso_logs;
|
|
check_equals(g_hash_table_size(server->providers), 110);
|
|
check_equals(g_list_length(loaded_entity_ids), 110);
|
|
|
|
lasso_release_list_of_strings(loaded_entity_ids);
|
|
|
|
lasso_release_gobject(server);
|
|
}
|
|
END_TEST
|
|
|
|
#include "../lasso/key.h"
|
|
|
|
/* test load federation */
|
|
START_TEST(test14_lasso_key)
|
|
{
|
|
LassoKey *key;
|
|
char *buffer;
|
|
gsize length;
|
|
char *base64_encoded;
|
|
|
|
check_true(g_file_get_contents(TESTSDATADIR "sp1-la/private-key-raw.pem", &buffer, &length, NULL));
|
|
check_not_null(key = lasso_key_new_for_signature_from_memory(buffer,
|
|
length, NULL, lasso_get_default_signature_method(),
|
|
NULL));
|
|
lasso_release_gobject(key);
|
|
check_not_null(key = lasso_key_new_for_signature_from_file(TESTSDATADIR
|
|
"sp1-la/private-key-raw.pem", NULL, lasso_get_default_signature_method(),
|
|
NULL));
|
|
lasso_release_gobject(key);
|
|
base64_encoded = g_base64_encode(BAD_CAST buffer, length);
|
|
check_not_null(key = lasso_key_new_for_signature_from_base64_string(base64_encoded, NULL,
|
|
lasso_get_default_signature_method(), NULL));
|
|
lasso_release_string(base64_encoded);
|
|
lasso_release_string(buffer);
|
|
lasso_release_gobject(key);
|
|
}
|
|
END_TEST
|
|
|
|
/* test load federation */
|
|
START_TEST(test15_ds_key_info)
|
|
{
|
|
LassoDsKeyInfo *ds_key_info = lasso_ds_key_info_new();
|
|
LassoDsKeyValue *ds_key_value = lasso_ds_key_value_new();
|
|
LassoDsX509Data *x509_data = lasso_ds_x509_data_new();
|
|
char *dump;
|
|
GList list;
|
|
LassoNode *node;
|
|
|
|
lasso_ds_x509_data_set_certificate(x509_data, "coucou");
|
|
lasso_ds_key_value_set_x509_data(ds_key_value, x509_data);
|
|
ds_key_info->KeyValue = g_object_ref(ds_key_value);
|
|
dump = lasso_node_debug((LassoNode*)ds_key_info, 10);
|
|
lasso_release_gobject(ds_key_info);
|
|
lasso_release_gobject(ds_key_value);
|
|
lasso_release_gobject(x509_data);
|
|
ds_key_info = (LassoDsKeyInfo*)lasso_node_new_from_dump(dump);
|
|
lasso_release_string(dump);
|
|
check_not_null(ds_key_info);
|
|
check_true(LASSO_IS_DS_KEY_INFO(ds_key_info));
|
|
check_not_null(ds_key_info->KeyValue);
|
|
check_true(LASSO_IS_DS_KEY_VALUE(ds_key_info->KeyValue));
|
|
x509_data = lasso_ds_key_value_get_x509_data(ds_key_info->KeyValue);
|
|
check_not_null(x509_data);
|
|
check_true(LASSO_IS_DS_X509_DATA(x509_data));
|
|
check_str_equals(lasso_ds_x509_data_get_certificate(x509_data), "coucou");
|
|
/* LassoSaml2SubjectConfirmation */
|
|
LassoSaml2SubjectConfirmation *sc = (LassoSaml2SubjectConfirmation*) \
|
|
lasso_saml2_subject_confirmation_new();
|
|
LassoSaml2KeyInfoConfirmationDataType *kicdt = (LassoSaml2KeyInfoConfirmationDataType*) \
|
|
lasso_saml2_key_info_confirmation_data_type_new();
|
|
lasso_assign_string(sc->Method, LASSO_SAML2_CONFIRMATION_METHOD_HOLDER_OF_KEY);
|
|
lasso_assign_new_gobject(sc->SubjectConfirmationData, &kicdt->parent);
|
|
list = (GList){ .data = ds_key_info, .next = NULL, .prev = NULL };
|
|
lasso_saml2_key_info_confirmation_data_type_set_key_info(kicdt, &list);
|
|
dump = lasso_node_debug((LassoNode*)sc, 10);
|
|
lasso_release_gobject(sc);
|
|
lasso_release_gobject(ds_key_info);
|
|
node = lasso_node_new_from_dump(dump);
|
|
lasso_release_string(dump);
|
|
dump = lasso_node_debug(node, 10);
|
|
lasso_release_string(dump);
|
|
lasso_release_gobject(node);
|
|
}
|
|
END_TEST
|
|
|
|
/* test get issuer */
|
|
START_TEST(test16_test_get_issuer)
|
|
{
|
|
char *content = NULL;
|
|
size_t len = 0;
|
|
char *issuer = NULL;
|
|
char *in_response_to = NULL;
|
|
LassoServer *spServerContext = NULL;
|
|
LassoServer *idpServerContext = NULL;
|
|
LassoLogin *spLoginContext = NULL;
|
|
LassoLogin *idpLoginContext = NULL;
|
|
LassoSamlp2AuthnRequest *request = NULL;
|
|
char *authnRequestUrl = NULL;
|
|
char *qs = NULL;
|
|
|
|
g_file_get_contents(TESTSDATADIR "/response-1", &content, &len, NULL);
|
|
issuer = lasso_profile_get_issuer(content);
|
|
check_str_equals(issuer, "gefssstg");
|
|
lasso_release_string(issuer);
|
|
in_response_to = lasso_profile_get_in_response_to(content);
|
|
check_str_equals(in_response_to, "xx");
|
|
lasso_release_string(in_response_to);
|
|
lasso_release_string(content);
|
|
|
|
spServerContext = lasso_server_new(
|
|
TESTSDATADIR "/sp5-saml2/metadata.xml",
|
|
TESTSDATADIR "/sp5-saml2/private-key.pem",
|
|
NULL, /* Secret key to unlock private key */
|
|
NULL);
|
|
lasso_server_add_provider(
|
|
spServerContext,
|
|
LASSO_PROVIDER_ROLE_IDP,
|
|
TESTSDATADIR "/idp5-saml2/metadata.xml",
|
|
NULL,
|
|
NULL);
|
|
idpServerContext = lasso_server_new(
|
|
TESTSDATADIR "/idp5-saml2/metadata.xml",
|
|
TESTSDATADIR "/idp5-saml2/private-key.pem",
|
|
NULL, /* Secret key to unlock private key */
|
|
NULL);
|
|
lasso_server_add_provider(
|
|
idpServerContext,
|
|
LASSO_PROVIDER_ROLE_SP,
|
|
TESTSDATADIR "/sp5-saml2/metadata.xml",
|
|
NULL,
|
|
NULL);
|
|
spLoginContext = lasso_login_new(spServerContext);
|
|
check_good_rc(lasso_login_init_authn_request(spLoginContext, "http://idp5/metadata",
|
|
LASSO_HTTP_METHOD_REDIRECT));
|
|
request = LASSO_SAMLP2_AUTHN_REQUEST(LASSO_PROFILE(spLoginContext)->request);
|
|
request->IsPassive = 0;
|
|
lasso_assign_string(request->NameIDPolicy->Format, LASSO_SAML2_NAME_IDENTIFIER_FORMAT_PERSISTENT);
|
|
request->NameIDPolicy->AllowCreate = 1;
|
|
lasso_assign_string(request->ProtocolBinding, LASSO_SAML2_METADATA_BINDING_POST);
|
|
check_good_rc(lasso_login_build_authn_request_msg(spLoginContext));
|
|
authnRequestUrl = LASSO_PROFILE(spLoginContext)->msg_url;
|
|
qs = strchr(authnRequestUrl, '?') + 1;
|
|
issuer = lasso_profile_get_issuer(qs);
|
|
check_true(lasso_strisequal(issuer, "http://sp5/metadata"));
|
|
lasso_release_string(issuer);
|
|
|
|
idpLoginContext = lasso_login_new(idpServerContext);
|
|
|
|
check_good_rc(lasso_login_process_authn_request_msg(idpLoginContext, qs));
|
|
check_good_rc(lasso_login_validate_request_msg(idpLoginContext, 1, 0));
|
|
check_good_rc(lasso_login_build_assertion(idpLoginContext,
|
|
LASSO_SAML_AUTHENTICATION_METHOD_PASSWORD,
|
|
"FIXME: authenticationInstant",
|
|
"FIXME: reauthenticateOnOrAfter",
|
|
"FIXME: notBefore",
|
|
"FIXME: notOnOrAfter"));
|
|
check_good_rc(lasso_login_build_authn_response_msg(idpLoginContext));
|
|
check_not_null(idpLoginContext->parent.msg_body);
|
|
check_not_null(idpLoginContext->parent.msg_url);
|
|
|
|
issuer = lasso_profile_get_issuer(idpLoginContext->parent.msg_body);
|
|
in_response_to = lasso_profile_get_in_response_to(idpLoginContext->parent.msg_body);
|
|
check_not_null(in_response_to);
|
|
check_str_equals(issuer, "http://idp5/metadata");
|
|
check_str_equals(in_response_to, request->parent.ID);
|
|
lasso_release_string(issuer);
|
|
|
|
lasso_release_gobject(idpLoginContext);
|
|
lasso_release_gobject(idpServerContext);
|
|
lasso_release_gobject(spLoginContext);
|
|
lasso_release_gobject(spServerContext);
|
|
|
|
begin_check_do_log("Lasso", G_LOG_LEVEL_DEBUG, "could not decode POST SAML message", TRUE);
|
|
check_null(lasso_profile_get_issuer(""));
|
|
end_check_do_log("Lasso");
|
|
begin_check_do_log("Lasso", G_LOG_LEVEL_DEBUG, "message is not base64", TRUE);
|
|
check_null(lasso_profile_get_issuer("SAMLRequest=!!hello!!"));
|
|
end_check_do_log("Lasso");
|
|
}
|
|
END_TEST
|
|
|
|
Suite*
|
|
basic_suite()
|
|
{
|
|
Suite *s = suite_create("Basic");
|
|
TCase *tc_server_load_dump_empty_string = tcase_create("Create server from empty string");
|
|
TCase *tc_server_load_dump_random_string = tcase_create("Create server from random string");
|
|
TCase *tc_server_load_dump_random_xml = tcase_create("Create server from random XML");
|
|
TCase *tc_identity_load_dump_null = tcase_create("Create identity from NULL");
|
|
TCase *tc_identity_load_dump_empty = tcase_create("Create identity from empty string");
|
|
TCase *tc_registry_direct_mapping = tcase_create("Test QName registry with direct mapping");
|
|
TCase *tc_registry_functional_mapping = tcase_create("Test QName registry with functional mapping");
|
|
TCase *tc_registry_new_from_xmlNode = tcase_create("Test parsing a node that has a mapping to Lasso Object in the registry");
|
|
TCase *tc_response_new_from_xmlNode = tcase_create("Test parsing a message from Ping Federate");
|
|
TCase *tc_all_dumps = tcase_create("Test dumping all kind of nodes");
|
|
TCase *tc_get_default_name_id_format = tcase_create("Test getting default name id format");
|
|
TCase *tc_custom_namespace = tcase_create("Test custom namespace handling");
|
|
TCase *tc_load_metadata = tcase_create("Test loading a federation metadata file");
|
|
TCase *tc_key = tcase_create("Test loading and manipulating LassoKey objects");
|
|
TCase *tc_key_info = tcase_create("Test creating and dumping ds:KeyInfo nodes");
|
|
TCase *tc_get_issuer = tcase_create("Test get_issuer and get_request_id");
|
|
|
|
suite_add_tcase(s, tc_server_load_dump_empty_string);
|
|
suite_add_tcase(s, tc_server_load_dump_random_string);
|
|
suite_add_tcase(s, tc_server_load_dump_random_xml);
|
|
suite_add_tcase(s, tc_identity_load_dump_null);
|
|
suite_add_tcase(s, tc_identity_load_dump_empty);
|
|
suite_add_tcase(s, tc_registry_direct_mapping);
|
|
suite_add_tcase(s, tc_registry_functional_mapping);
|
|
suite_add_tcase(s, tc_registry_new_from_xmlNode);
|
|
suite_add_tcase(s, tc_response_new_from_xmlNode);
|
|
suite_add_tcase(s, tc_all_dumps);
|
|
suite_add_tcase(s, tc_get_default_name_id_format);
|
|
suite_add_tcase(s, tc_custom_namespace);
|
|
suite_add_tcase(s, tc_load_metadata);
|
|
suite_add_tcase(s, tc_key);
|
|
suite_add_tcase(s, tc_key_info);
|
|
suite_add_tcase(s, tc_get_issuer);
|
|
|
|
tcase_add_test(tc_server_load_dump_empty_string, test01_server_load_dump_empty_string);
|
|
tcase_add_test(tc_server_load_dump_random_string, test02_server_load_dump_random_string);
|
|
tcase_add_test(tc_server_load_dump_random_xml, test03_server_load_dump_random_xml);
|
|
tcase_add_test(tc_identity_load_dump_null, test04_identity_load_dump_null);
|
|
tcase_add_test(tc_identity_load_dump_empty, test05_identity_load_dump_empty);
|
|
tcase_add_test(tc_registry_direct_mapping, test06_registry_direct_mapping);
|
|
tcase_add_test(tc_registry_functional_mapping, test07_registry_functional_mapping);
|
|
tcase_add_test(tc_registry_new_from_xmlNode, test08_test_new_from_xmlNode);
|
|
tcase_add_test(tc_response_new_from_xmlNode, test09_test_deserialization);
|
|
tcase_add_test(tc_all_dumps, test10_test_alldumps);
|
|
tcase_add_test(tc_get_default_name_id_format, test11_get_default_name_id_format);
|
|
tcase_add_test(tc_load_metadata, test13_test_lasso_server_load_metadata);
|
|
tcase_add_test(tc_key, test14_lasso_key);
|
|
tcase_add_test(tc_key_info, test15_ds_key_info);
|
|
tcase_add_test(tc_get_issuer, test16_test_get_issuer);
|
|
tcase_set_timeout(tc_load_metadata, 10);
|
|
return s;
|
|
}
|
|
|