]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
config null check bool verify ssl
authorBastian Dehn <hhaalo@arcor.de>
Thu, 2 Jan 2025 17:11:39 +0000 (18:11 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Thu, 2 Jan 2025 17:11:39 +0000 (18:11 +0100)
src/kds_s2000w_config.c
src/kds_s2000w_net.conf
tests/kds_s2000w_read_config_tests.c
tests/kds_s2000w_read_config_tests.h
tests/kds_s2000w_read_config_tests_run.c

index bc01ccd5e15a2c199c77c5ee9996ef6c5fcef7a6..6345ce16404f1d8c0af4069b8b75728fe5f31b92 100644 (file)
@@ -42,48 +42,53 @@ const char* read_config_file(const char* filename)
        return config_string;
 }
 
-program_config* load_config(const char* config_stream)
+program_config* load_config(const char* config_string)
 {
        program_config* config = malloc(sizeof(program_config));
-       config->scanner_url = NULL;
-       config->username = NULL;
+       config->scanner_url = malloc(sizeof(char));
+       *config->scanner_url = '\0';
+       config->username = malloc(sizeof(char));
+       *config->username = '\0';
        config->heartbeat = 1;
        config->ssl_verify = 0;
 
+       if (config_string == NULL)
+               return config;
+
        cfg_t* cfg = NULL;
        char* value_str = NULL;
        size_t str_length = 0;
 
-       if (strlen(config_stream) <= 0)
+       if (strlen(config_string) <= 0)
                return config;
 
        cfg_opt_t opts[] = {
                CFG_STR("username", "", CFGF_NONE),
                CFG_STR("scanner_url", "", CFGF_NONE),
-               CFG_INT("heartbeat_seconds", 0, CFGF_NONE),
-               CFG_INT("ssl_verify", 0, CFGF_NONE),
+               CFG_INT("heartbeat_seconds", 1, CFGF_NONE),
+               CFG_BOOL("ssl_verify", 0, CFGF_NONE),
                CFG_END()
        };
 
        cfg = cfg_init(opts, 0);
 
-       cfg_parse_buf(cfg, config_stream);
+       cfg_parse_buf(cfg, config_string);
 
        value_str = cfg_getstr(cfg, "scanner_url");
        str_length = strlen(value_str) + 1;
-       config->scanner_url = malloc(sizeof(char) * str_length);
+       config->scanner_url = realloc(config->scanner_url, sizeof(char) * str_length);
        memcpy(config->scanner_url, value_str, str_length);
 
        value_str = cfg_getstr(cfg, "username");
        str_length = strlen(value_str) + 1;
-       config->username = malloc(sizeof(char) * str_length);
+       config->username = realloc(config->username, sizeof(char) * str_length);
        memcpy(config->username, value_str, str_length);
 
        config->heartbeat = cfg_getint(cfg, "heartbeat_seconds");
        if (config->heartbeat < 1)
                config->heartbeat = 1;
 
-       config->ssl_verify = cfg_getint(cfg, "ssl_verify");
+       config->ssl_verify = cfg_getbool(cfg, "ssl_verify");
 
        cfg_free(cfg);
        cfg = NULL;
index 29ba13edecbb99482a0f437c140ea3d7e81995bd..3168d2dfab3536850794ce3d603a0a24dcdf0f6e 100644 (file)
@@ -2,5 +2,5 @@ scanner_url = "https://scanner.example.com"
 username = "muster"
 # Scanner heart beat is by default 1 seconds before check next scan status,
 # heartbeat_seconds = 1
-# SSL Verification default 0 (OFF)
-# ssl_verify = 1
\ No newline at end of file
+# SSL Verification (default: false)
+# ssl_verify = true
\ No newline at end of file
index 602c2952cf6c7a5f1463ef0415433ada61677714..7f03aee656f6b200652460b0e0b433fc1624cc66 100644 (file)
@@ -11,6 +11,34 @@ void __wrap_wait_a_second()
        return;
 }
 
+void kds_s2000w_config_null()
+{
+       program_config* config = load_config(NULL);
+
+       assert_non_null(config);
+       assert_string_equal(config->scanner_url, "");
+       assert_string_equal(config->username, "");
+       assert_int_equal(config->heartbeat, 1);
+       assert_int_equal(config->ssl_verify, 0);
+
+       free_config(config);
+       config = NULL;
+}
+
+void kds_s2000w_config_read_empty_config()
+{
+       program_config* config = load_config("");
+
+       assert_non_null(config);
+       assert_string_equal(config->scanner_url, "");
+       assert_string_equal(config->username, "");
+       assert_int_equal(config->heartbeat, 1);
+       assert_int_equal(config->ssl_verify, 0);
+
+       free_config(config);
+       config = NULL;
+}
+
 void kds_s2000w_config_read_parameter()
 {
        const char* input_stream = "   scanner_url   =   http://scanner.example.com    \n";
@@ -19,11 +47,7 @@ void kds_s2000w_config_read_parameter()
 
        assert_string_equal(config->scanner_url, "http://scanner.example.com");
 
-       free(config->scanner_url);
-       config->scanner_url = NULL;
-       free(config->username);
-       config->username = NULL;
-       free(config);
+       free_config(config);
        config = NULL;
 }
 
@@ -35,11 +59,7 @@ void kds_s2000w_config_read_parameters_without_trim()
 
        assert_string_equal(config->scanner_url, "http://scanner.example.com");
 
-       free(config->scanner_url);
-       config->scanner_url = NULL;
-       free(config->username);
-       config->username = NULL;
-       free(config);
+       free_config(config);
        config = NULL;
 }
 
@@ -52,70 +72,43 @@ void kds_s2000w_config_multiple_parameters()
        assert_string_equal(config->scanner_url, "http://scanner.example.com");
        assert_string_equal(config->username, "Mustermann");
 
-       free(config->scanner_url);
-       config->scanner_url = NULL;
-       free(config->username);
-       config->username = NULL;
-       free(config);
+       free_config(config);
        config = NULL;
 }
 
-void kds_s2000w_config_read_empty_config()
-{
-       const char* input_stream = "";
-
-       program_config* config = load_config(input_stream);
-
-       assert_null(config->scanner_url);
 
-       free(config->scanner_url);
-       config->scanner_url = NULL;
-       free(config->username);
-       config->username = NULL;
-       free(config);
-       config = NULL;
-}
-
-void kds_s200w_config_default_heartbeat()
+void kds_s200w_config_heartbeat_five_seconds()
 {
-       const char* input_stream = "";
+       const char* input_stream = "heartbeat_seconds = 5\n";
 
        program_config* config = load_config(input_stream);
 
-       assert_int_equal(config->heartbeat, 1);
+       assert_int_equal(config->heartbeat, 5);
 
-       free(config);
+       free_config(config);
        config = NULL;
 }
 
-void kds_s200w_config_default_heartbeat_five_seconds()
+void kds_s200w_config_default_heartbeat_zero_set_default()
 {
-       const char* input_stream = "heartbeat_seconds = 5\n";
+       const char* input_stream = "heartbeat_seconds = 0\n";
 
        program_config* config = load_config(input_stream);
 
-       assert_int_equal(config->heartbeat, 5);
+       assert_int_equal(config->heartbeat, 1);
 
-       free(config->scanner_url);
-       config->scanner_url = NULL;
-       free(config->username);
-       config->username = NULL;
-       free(config);
+       free_config(config);
        config = NULL;
 }
 
-void kds_s200w_config_default_heartbeat_zero_set_default()
+void kds_s200w_config_ssl_verify_on()
 {
-       const char* input_stream = "heartbeat_seconds = 0\n";
+       const char* input_stream = "ssl_verify = true\n";
 
        program_config* config = load_config(input_stream);
 
-       assert_int_equal(config->heartbeat, 1);
+       assert_int_equal(config->ssl_verify, 1);
 
-       free(config->scanner_url);
-       config->scanner_url = NULL;
-       free(config->username);
-       config->username = NULL;
-       free(config);
+       free_config(config);
        config = NULL;
 }
\ No newline at end of file
index ae5e0f8c3f6a245dc117332df7fc6ee79b3ac609..ac5d7f387d55e95ca19a7c167dded746aeeb0223 100644 (file)
@@ -6,12 +6,13 @@
 #include <setjmp.h>
 #include <cmocka.h>
 
+void kds_s2000w_config_null();
 void kds_s2000w_config_read_parameter();
 void kds_s2000w_config_read_parameters_without_trim();
 void kds_s2000w_config_multiple_parameters();
 void kds_s2000w_config_read_empty_config();
-void kds_s200w_config_default_heartbeat();
-void kds_s200w_config_default_heartbeat_five_seconds();
+void kds_s200w_config_heartbeat_five_seconds();
 void kds_s200w_config_default_heartbeat_zero_set_default();
+void kds_s200w_config_ssl_verify_on();
 
 #endif
\ No newline at end of file
index e26b9d5d12c90803531e2f0c838f1591e5e44884..18e088d09d8a5011c1c9f545396e039c611df7a7 100644 (file)
@@ -3,13 +3,14 @@
 int main()
 {
        const struct CMUnitTest read_config[] = {
+               cmocka_unit_test(kds_s2000w_config_null),
+               cmocka_unit_test(kds_s2000w_config_read_empty_config),
                cmocka_unit_test(kds_s2000w_config_read_parameter),
                cmocka_unit_test(kds_s2000w_config_read_parameters_without_trim),
                cmocka_unit_test(kds_s2000w_config_multiple_parameters),
-               cmocka_unit_test(kds_s2000w_config_read_empty_config),
-               cmocka_unit_test(kds_s200w_config_default_heartbeat),
-               cmocka_unit_test(kds_s200w_config_default_heartbeat_five_seconds),
-               cmocka_unit_test(kds_s200w_config_default_heartbeat_zero_set_default)
+               cmocka_unit_test(kds_s200w_config_heartbeat_five_seconds),
+               cmocka_unit_test(kds_s200w_config_default_heartbeat_zero_set_default),
+               cmocka_unit_test(kds_s200w_config_ssl_verify_on)
        };
 
        return cmocka_run_group_tests(read_config, NULL, NULL);