hasl/hasl

7ac03df6d1c5
Parents c66851b50bdd
Children f72815f3e93a
Add some additional tests for hasl_context_add_mechanism
--- a/hasl/haslcontext.c Tue Feb 14 21:56:11 2023 -0600
+++ b/hasl/haslcontext.c Tue Feb 14 22:09:23 2023 -0600
@@ -372,7 +372,7 @@
gboolean
hasl_context_add_mechanism(HaslContext *ctx, const char *name, GType type) {
g_return_val_if_fail(HASL_IS_CONTEXT(ctx), FALSE);
- g_return_val_if_fail(name != NULL, FALSE);
+ g_return_val_if_fail(name != NULL && name[0] != '\0', FALSE);
g_return_val_if_fail(g_type_is_a(type, HASL_TYPE_MECHANISM), FALSE);
return g_hash_table_insert(ctx->mechanisms, g_strdup(name),
--- a/hasl/tests/test-context.c Tue Feb 14 21:56:11 2023 -0600
+++ b/hasl/tests/test-context.c Tue Feb 14 22:09:23 2023 -0600
@@ -81,6 +81,36 @@
}
static void
+test_hasl_context_add_mechanism_null(void) {
+ if(g_test_subprocess()) {
+ HaslContext *ctx = hasl_context_new();
+
+ hasl_context_add_mechanism(ctx, NULL, HASL_TYPE_MECHANISM);
+
+ g_clear_object(&ctx);
+ }
+
+ g_test_trap_subprocess(NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
+ g_test_trap_assert_failed();
+ g_test_trap_assert_stderr("*assertion*name*");
+}
+
+static void
+test_hasl_context_add_mechanism_empty(void) {
+ if(g_test_subprocess()) {
+ HaslContext *ctx = hasl_context_new();
+
+ hasl_context_add_mechanism(ctx, "", HASL_TYPE_MECHANISM);
+
+ g_clear_object(&ctx);
+ }
+
+ g_test_trap_subprocess(NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
+ g_test_trap_assert_failed();
+ g_test_trap_assert_stderr("*assertion*name*");
+}
+
+static void
test_hasl_context_supported_mechanisms_default(void) {
HaslContext *ctx = NULL;
char *supported_mechanisms = NULL;
@@ -98,12 +128,16 @@
test_hasl_context_supported_mechanisms_custom(void) {
HaslContext *ctx = NULL;
char *supported_mechanisms = NULL;
+ gboolean r = FALSE;
ctx = hasl_context_new();
/* Add some custom mechanisms. */
- hasl_context_add_mechanism(ctx, "TEST", HASL_TYPE_MECHANISM);
- hasl_context_add_mechanism(ctx, "DEBUG", HASL_TYPE_MECHANISM);
+ r = hasl_context_add_mechanism(ctx, "TEST", HASL_TYPE_MECHANISM);
+ g_assert_true(r);
+
+ r = hasl_context_add_mechanism(ctx, "DEBUG", HASL_TYPE_MECHANISM);
+ g_assert_true(r);
/* Now get the list and check it. */
supported_mechanisms = hasl_context_get_supported_mechanisms(ctx);
@@ -124,6 +158,11 @@
g_test_add_func("/hasl/context/new", test_hasl_context_new);
g_test_add_func("/hasl/context/properties", test_hasl_context_properties);
+ g_test_add_func("/hasl/context/add-mechanism/null",
+ test_hasl_context_add_mechanism_null);
+ g_test_add_func("/hasl/context/add-mechanism/empty",
+ test_hasl_context_add_mechanism_empty);
+
g_test_add_func("/hasl/context/supported-mechanisms/default",
test_hasl_context_supported_mechanisms_default);
g_test_add_func("/hasl/context/supported-mechanisms/custom",