Blob Blame History Raw
# -*- Autotest -*-

AT_BANNER([Event config])

## ----------------- ##
## restricted_access ##
## ----------------- ##

AT_TESTFUN([restricted_access],
[[

#include "testsuite.h"

TS_MAIN
{
    event_config_t *ect = new_event_config("restricted_access");

    TS_ASSERT_FALSE(ect->ec_supports_restricted_access);
    TS_ASSERT_PTR_IS_NULL(ect->ec_restricted_access_option);
    TS_ASSERT_FALSE(ec_restricted_access_enabled(ect));

    ect->ec_supports_restricted_access = true;

    TS_ASSERT_PTR_IS_NULL(ect->ec_restricted_access_option);
    TS_ASSERT_FALSE(ec_restricted_access_enabled(ect));

    ect->ec_restricted_access_option = xstrdup("PrivateTicket");

    TS_ASSERT_FALSE(ec_restricted_access_enabled(ect));

    event_option_t *eot = new_event_option();
    eot->eo_name = xstrdup("PrivateTicket");
    eot->eo_value = NULL;

    ect->options = g_list_prepend(ect->options, eot);

    TS_ASSERT_FALSE(ec_restricted_access_enabled(ect));

    eot->eo_type = OPTION_TYPE_BOOL;
    eot->eo_value = xstrdup("no");

    TS_ASSERT_FALSE(ec_restricted_access_enabled(ect));

    free(eot->eo_value);
    eot->eo_value = xstrdup("yes");

    TS_ASSERT_TRUE(ec_restricted_access_enabled(ect));

    eot->eo_type = OPTION_TYPE_NUMBER;

    TS_ASSERT_FALSE(ec_restricted_access_enabled(ect));

    ect->ec_supports_restricted_access = false;

    TS_ASSERT_FALSE(ec_restricted_access_enabled(ect));

    free_event_config(ect);
}
TS_RETURN_MAIN
]])

## ------------------------ ##
## get_options_with_err_msg ##
## ------------------------ ##

AT_TESTFUN([get_options_with_err_msg], [[
#include "testsuite.h"
#include "internal_libreport.h"

event_option_t* create_new_option(const char *n, const char *v, option_type_t t, int ae)
{
    event_option_t *op = new_event_option();
    op->eo_name = xstrdup(n);
    op->eo_value = NULL;
    if(v != NULL)
        op->eo_value = xstrdup(v);

    op->eo_type = t;
    op->eo_allow_empty = ae;

    return op;
}

TS_MAIN
{
    GList *errors = NULL, *iter = NULL;
    invalid_option_t *e_op;

    if (!g_event_config_list)
        g_event_config_list = g_hash_table_new_full(
            g_str_hash, g_str_equal, free, (GDestroyNotify) free_event_config
        );

    {
        event_config_t *evnt = new_event_config("Bugster0");
        event_option_t *opt_login = create_new_option("Bugtest_Login", NULL, OPTION_TYPE_TEXT, 0);
        event_option_t *opt_passwd = create_new_option("Bugtest_Password", NULL, OPTION_TYPE_PASSWORD, 0);
        event_option_t *opt_url = create_new_option("Bugtest_URL", "bug.test", OPTION_TYPE_TEXT, 0);

        evnt->options = g_list_append(evnt->options, opt_login);
        evnt->options = g_list_append(evnt->options, opt_passwd);
        evnt->options = g_list_append(evnt->options, opt_url);
        g_hash_table_insert(g_event_config_list, xstrdup("Bugster0"), evnt);

        errors = get_options_with_err_msg("Bugster0");
        e_op = (invalid_option_t *)errors->data;

        TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Login", "Show login first");

        iter = g_list_next(errors);
        e_op = (invalid_option_t *)iter->data;

        TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Password", "Show password second");
        TS_ASSERT_PTR_IS_NULL(g_list_next(iter));

        g_list_free_full(errors, (GDestroyNotify)free_invalid_options);
    }

    {
        event_config_t *evnt = new_event_config("Bugster1");
        event_option_t *opt_login = create_new_option("Bugtest_Login", NULL, OPTION_TYPE_TEXT, 0);
        event_option_t *opt_passwd = create_new_option("Bugtest_Password", NULL, OPTION_TYPE_PASSWORD, 0);
        event_option_t *opt_url = create_new_option("Bugtest_URL", "bug.test", OPTION_TYPE_TEXT, 0);

        evnt->options = g_list_append(evnt->options, opt_passwd);
        evnt->options = g_list_append(evnt->options, opt_login);
        evnt->options = g_list_append(evnt->options, opt_url);
        g_hash_table_insert(g_event_config_list, xstrdup("Bugster1"), evnt);

        errors = get_options_with_err_msg("Bugster1");
        e_op = (invalid_option_t *)errors->data;

        TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Password", "Show password first");

        iter = g_list_next(errors);
        e_op = (invalid_option_t *)iter->data;

        TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Login", "Show login second");
        TS_ASSERT_PTR_IS_NULL(g_list_next(iter));

        g_list_free_full(errors, (GDestroyNotify)free_invalid_options);
    }

    {
        event_config_t *evnt = new_event_config("Bugster2");
        event_option_t *opt_login = create_new_option("Bugtest_Login", "login", OPTION_TYPE_TEXT, 0);
        event_option_t *opt_passwd = create_new_option("Bugtest_Password", "password", OPTION_TYPE_PASSWORD, 0);
        event_option_t *opt_url = create_new_option("Bugtest_URL", "bug.test", OPTION_TYPE_TEXT, 0);

        evnt->options = g_list_append(evnt->options, opt_login);
        evnt->options = g_list_append(evnt->options, opt_passwd);
        evnt->options = g_list_append(evnt->options, opt_url);
        g_hash_table_insert(g_event_config_list, xstrdup("Bugster2"), evnt);

        errors = get_options_with_err_msg("Bugster2");

        TS_ASSERT_PTR_IS_NULL(errors);
    }

    free_event_config_data();
}
TS_RETURN_MAIN
]])