diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2008-09-04 11:41:39 +0000 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2008-09-04 11:41:39 +0000 |
| commit | 6edfa7935f68fb10282eb878ab1caa6147efc88f (patch) | |
| tree | 7d5c68fdf9f4898b616b2a3dea4f91e8064bb268 | |
| parent | 24430806e6761766e6cd8a309a0c087dd90f178e (diff) | |
| download | lasso-6edfa7935f68fb10282eb878ab1caa6147efc88f.tar.gz lasso-6edfa7935f68fb10282eb878ab1caa6147efc88f.tar.xz lasso-6edfa7935f68fb10282eb878ab1caa6147efc88f.zip | |
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.
| -rw-r--r-- | lasso/errors.c | 2 | ||||
| -rw-r--r-- | lasso/errors.h | 2 | ||||
| -rw-r--r-- | lasso/registry.c | 28 | ||||
| -rw-r--r-- | tests/basic_tests.c | 10 |
4 files changed, 28 insertions, 14 deletions
diff --git a/lasso/errors.c b/lasso/errors.c index ec64168e..671fc1c2 100644 --- a/lasso/errors.c +++ b/lasso/errors.c @@ -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: diff --git a/lasso/errors.h b/lasso/errors.h index b725c4f0..b357b937 100644 --- a/lasso/errors.h +++ b/lasso/errors.h @@ -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 */ diff --git a/lasso/registry.c b/lasso/registry.c index 8d7e6489..7fdc3bde 100644 --- a/lasso/registry.c +++ b/lasso/registry.c @@ -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) diff --git a/tests/basic_tests.c b/tests/basic_tests.c index 83441dec..00880bd3 100644 --- a/tests/basic_tests.c +++ b/tests/basic_tests.c @@ -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 |
