Add a new error code, with the REGISTRY prefix and use it in registry function

returning an error code.
Fix a typo when retrieving a quark string in the registry modulke.
Improve tests for functional mapping.
This commit is contained in:
Benjamin Dauvergne 2008-09-04 11:41:39 +00:00
parent 24430806e6
commit 6edfa7935f
4 changed files with 28 additions and 14 deletions

View File

@ -109,6 +109,8 @@ lasso_strerror(int error_code)
return "Missing SAML artifact";
case LASSO_DS_ERROR_INVALID_SIGALG:
return "Invalid signature algorithm.";
case LASSO_REGISTRY_ERROR_KEY_EXISTS:
return "Key alreadys exists in the registry";
case LASSO_LOGOUT_ERROR_UNSUPPORTED_PROFILE:
return "Unsupported protocol profile";
case LASSO_LOGIN_ERROR_NO_DEFAULT_ENDPOINT:

View File

@ -167,3 +167,5 @@
#define LASSO_DST_ERROR_MODIFY_PARTIALLY_FAILED -1304 /* Modify partially failed : some items were correctly processed */
#define LASSO_DST_ERROR_NEW_DATA_MISSING -1305 /* Missing new data */
/* Lasso registry */
#define LASSO_REGISTRY_ERROR_KEY_EXISTS -1400 /* Key alreadys exists in the registry */

View File

@ -214,9 +214,12 @@ const char* lasso_registry_get_mapping(LassoRegistry *registry, const char *from
const char *ret = NULL;
from_ns_quark = g_quark_try_string(from_namespace);
to_ns_quark = g_quark_try_string(from_name);
to_ns_quark = g_quark_try_string(to_namespace);
if (from_ns_quark == 0 || to_ns_quark == 0) {
return NULL;
}
g_return_val_if_fail(from_ns_quark != 0 && to_ns_quark != 0, NULL);
ret = lasso_registry_get_functional_mapping(registry->functional_mapping, from_ns_quark, from_name, to_ns_quark);
if (ret == NULL) {
ret = lasso_registry_get_direct_mapping(registry->direct_mapping, from_ns_quark, from_name, to_ns_quark);
@ -230,7 +233,8 @@ const char* lasso_registry_get_mapping(LassoRegistry *registry, const char *from
*
* Add a new mapping from a QName to a QName.
*
* Return value: 0 if successfull, -1 if it already exists, -2 if arguments
* Return value: 0 if successfull, LASSO_REGISTRY_ERROR_KEY_EXISTS if it already exists,
* LASSO_PARAM_ERROR_INVALID_VALUE if arguments
* are invalid.
*/
gint lasso_registry_add_direct_mapping(LassoRegistry *registry, const char *from_namespace,
@ -238,10 +242,10 @@ gint lasso_registry_add_direct_mapping(LassoRegistry *registry, const char *from
{
LassoRegistryDirectMappingRecord *a_record;
g_return_val_if_fail(registry && from_namespace && from_name && to_namespace && to_name, -2);
g_return_val_if_fail(registry && from_namespace && from_name && to_namespace && to_name, LASSO_PARAM_ERROR_INVALID_VALUE);
if (lasso_registry_get_mapping(registry, from_namespace, from_name, to_namespace)) {
return -1;
return LASSO_REGISTRY_ERROR_KEY_EXISTS;
}
a_record = g_new0(LassoRegistryDirectMappingRecord, 1);
a_record->from_namespace = g_quark_from_string(from_namespace);
@ -263,7 +267,8 @@ gint lasso_registry_add_direct_mapping(LassoRegistry *registry, const char *from
* translation_function. This functions is not forced to return a value for
* any string, it can return NULL.
*
* Return value: 0 if successfull, -1 otherwise.
* Return value: 0 if successfull, LASSO_REGISTRY_ERROR_KEY_EXISTS if this mapping is already registered,
* LASSO_PARAM_ERROR_INVALID_VALUE if one the argument is invalid.
*/
gint lasso_registry_add_functional_mapping(LassoRegistry *registry, const char *from_namespace,
const char *to_namespace, LassoRegistryTranslationFunction translation_function)
@ -271,11 +276,11 @@ gint lasso_registry_add_functional_mapping(LassoRegistry *registry, const char *
LassoRegistryFunctionalMappingRecord *a_record;
GQuark to_ns_quark, from_ns_quark;
g_return_val_if_fail(registry != NULL && from_namespace != NULL && to_namespace != NULL, -2);
g_return_val_if_fail(registry != NULL && from_namespace != NULL && to_namespace != NULL, LASSO_PARAM_ERROR_INVALID_VALUE);
from_ns_quark = g_quark_from_string(from_namespace);
to_ns_quark = g_quark_from_string(to_namespace);
if (lasso_registry_get_translation_function(registry->functional_mapping, from_ns_quark, to_ns_quark)) {
return -1;
return LASSO_REGISTRY_ERROR_KEY_EXISTS;
}
a_record = g_new0(LassoRegistryFunctionalMappingRecord, 1);
a_record->from_namespace = from_ns_quark;
@ -296,8 +301,8 @@ gint lasso_registry_add_functional_mapping(LassoRegistry *registry, const char *
*
* Add a new mapping from a QName to a QName.
*
* Return value: 0 if successfull, -1 if it already exists, -2 if arguments
* are invalid.
* Return value: 0 if successfull, LASSO_REGISTRY_ERROR_KEY_EXISTS if this mapping is already registered,
* LASSO_PARAM_ERROR_INVALID_VALUE if one the argument is invalid.
*/
gint lasso_registry_default_add_direct_mapping(const char *from_namespace,
const char *from_name, const char *to_namespace, const char *to_name)
@ -318,7 +323,8 @@ gint lasso_registry_default_add_direct_mapping(const char *from_namespace,
* the default mapping. This functions is not forced to return a value for any string, it can return
* NULL.
*
* Return value: 0 if successfull, -1 otherwise.
* Return value: 0 if successfull, LASSO_REGISTRY_ERROR_KEY_EXISTS if this mapping is already registered,
* LASSO_PARAM_ERROR_INVALID_VALUE if one the argument is invalid.
*/
gint lasso_registry_default_add_functional_mapping(const char *from_namespace,
const char *to_namespace, LassoRegistryTranslationFunction translation_function)

View File

@ -83,13 +83,15 @@ 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");
r = lasso_registry_default_add_direct_mapping(LASSO_LIB_HREF, "test", LASSO_LASSO_HREF,
"LassoTestClass");
fail_unless(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);
fail_unless(name != NULL, "lasso_registry_default_get_mapping should return the recent mapping");
fail_unless(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");
fail_unless(r == LASSO_REGISTRY_ERROR_KEY_EXISTS, "lasso_registry_default_add_direct_mapping should return LASSO_REGISTRY_KEY_EXISTS when done two times");
}
END_TEST
@ -117,6 +119,8 @@ START_TEST(test07_registry_functional_mapping)
name = lasso_registry_default_get_mapping(LASSO_LIB_HREF, "Assertion", LASSO_LASSO_HREF);
fail_unless(name != NULL, "lasso_registry_default_get_mapping should return the recent mapping");
fail_unless(strcmp(name, "LassoAssertion") == 0, "lasso_registry_default_get_mapping should return LassoAssertion");
r = lasso_registry_default_add_functional_mapping(LASSO_LIB_HREF, LASSO_LASSO_HREF, trad);
fail_unless(r == LASSO_REGISTRY_ERROR_KEY_EXISTS, "lasso_registry_default_add_functional_mapping should return LASSO_REGISTRY_KEY_EXISTS when done two times");
}
END_TEST