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

AT_BANNER([XML definitions])

## ------------------------ ##
## region_specific_language ##
## ------------------------ ##

AT_TESTFUN([region_specific_language],
[[
#include "internal_libreport.h"
#include <locale.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>

int main(void)
{
    g_verbose = 3;

    assert(setlocale(LC_ALL, "zh_CN") != NULL || !"setlocale() failed");

    {
        event_config_t *event_config = new_event_config("event_test_definition");
        load_event_description_from_file(event_config, "../../conf/event_test_definition.xml");
        assert(strcmp("screen name", ec_get_screen_name(event_config)) == 0);
        assert(strcmp("description", ec_get_description(event_config)) == 0);
        assert(strcmp("long description", ec_get_long_desc(event_config)) == 0);

        assert(event_config->options != NULL || !"At least one event option was loaded");

        /* typeof(event_config->options) == (GList *) */
        event_option_t *event_option = (event_option_t *)event_config->options->data;
        assert(strcmp("label", event_option->eo_label) == 0);
        assert(strcmp("note_html", event_option->eo_note_html) == 0);

        /* Option description is not supported yet
        assert(strcmp("description", event_option->eo_description) == 0);
        */

        free_event_config(event_config);
    }

    {
        workflow_t *workflow = new_workflow("workflow_test_definition");
        load_workflow_description_from_file(workflow, "../../conf/workflow_test_definition.xml");

        assert(strcmp("screen name", wf_get_screen_name(workflow)) == 0);
        assert(strcmp("description", wf_get_description(workflow)) == 0);

        /* Long description is not supported yet
        assert(strcmp("long description", wf_get_long_desc(workflow)) == 0);
         */

        free_workflow(workflow);
    }

    assert(setlocale(LC_ALL, "zh_CN.utf8") != NULL || !"setlocale() failed");

    {
        event_config_t *event_config = new_event_config("event_test_definition");
        load_event_description_from_file(event_config, "../../conf/event_test_definition.xml");
        assert(strcmp("screen name", ec_get_screen_name(event_config)) == 0);
        assert(strcmp("description", ec_get_description(event_config)) == 0);
        assert(strcmp("long description", ec_get_long_desc(event_config)) == 0);

        assert(event_config->options != NULL || !"At least one event option was loaded");

        /* typeof(event_config->options) == (GList *) */
        event_option_t *event_option = (event_option_t *)event_config->options->data;
        assert(strcmp("label", event_option->eo_label) == 0);
        assert(strcmp("note_html", event_option->eo_note_html) == 0);

        /* Option description is not supported yet
        assert(strcmp("description", event_option->eo_description) == 0);
        */

        free_event_config(event_config);
    }

    {
        workflow_t *workflow = new_workflow("workflow_test_definition");
        load_workflow_description_from_file(workflow, "../../conf/workflow_test_definition.xml");

        assert(strcmp("screen name", wf_get_screen_name(workflow)) == 0);
        assert(strcmp("description", wf_get_description(workflow)) == 0);

        /* Long description is not supported yet
        assert(strcmp("long description", wf_get_long_desc(workflow)) == 0);
         */

        free_workflow(workflow);
    }

    /*
       XML definitions does not contain strings for zh_HK but there are strings
       for zh_CN and followed by zh_TW. libreport should you string for zh_TW
       and these strings are prefixed with "bad " string.
     */
    assert(setlocale(LC_ALL, "zh_HK") != NULL || !"setlocale() failed");

    {
        event_config_t *event_config = new_event_config("event_test_definition");
        load_event_description_from_file(event_config, "../../conf/event_test_definition.xml");
        assert(strcmp("bad screen name", ec_get_screen_name(event_config)) == 0);
        assert(strcmp("bad description", ec_get_description(event_config)) == 0);
        assert(strcmp("bad long description", ec_get_long_desc(event_config)) == 0);

        assert(event_config->options != NULL || !"At least one event option was loaded");

        /* typeof(event_config->options) == (GList *) */
        event_option_t *event_option = (event_option_t *)event_config->options->data;
        assert(strcmp("bad label", event_option->eo_label) == 0);
        assert(strcmp("bad note_html", event_option->eo_note_html) == 0);

        /* Option description is not supported yet
        assert(strcmp("description", event_option->eo_description) == 0);
        */

        free_event_config(event_config);
    }

    {
        workflow_t *workflow = new_workflow("workflow_test_definition");
        load_workflow_description_from_file(workflow, "../../conf/workflow_test_definition.xml");

        assert(strcmp("bad screen name", wf_get_screen_name(workflow)) == 0);
        assert(strcmp("bad description", wf_get_description(workflow)) == 0);

        /* Long description is not supported yet
        assert(strcmp("bad long description", wf_get_long_desc(workflow)) == 0);
         */

        free_workflow(workflow);
    }

    return EXIT_SUCCESS;
}
]])

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

AT_TESTFUN([restricted_access],
[[

#include "testsuite.h"

TS_MAIN
{
    {
        event_config_t *event_config = new_event_config("event_test_definition");
        load_event_description_from_file(event_config, "../../conf/event_no_support_restricted.xml");

        TS_ASSERT_FALSE(event_config->ec_supports_restricted_access);
        TS_ASSERT_PTR_IS_NULL(event_config->ec_restricted_access_option);

        free_event_config(event_config);
    }
    {
        event_config_t *event_config = new_event_config("event_test_definition");
        load_event_description_from_file(event_config, "../../conf/event_implicit_no_support_restricted.xml");

        TS_ASSERT_FALSE(event_config->ec_supports_restricted_access);
        TS_ASSERT_PTR_IS_NULL(event_config->ec_restricted_access_option);

        free_event_config(event_config);
    }
    {
        event_config_t *event_config = new_event_config("event_test_definition");
        load_event_description_from_file(event_config, "../../conf/event_support_restricted_no_option.xml");

        TS_ASSERT_TRUE(event_config->ec_supports_restricted_access);
        TS_ASSERT_PTR_IS_NULL(event_config->ec_restricted_access_option);

        free_event_config(event_config);
    }
    {
        event_config_t *event_config = new_event_config("event_test_definition");
        load_event_description_from_file(event_config, "../../conf/event_support_restricted_with_option.xml");

        TS_ASSERT_TRUE(event_config->ec_supports_restricted_access);
        TS_ASSERT_STRING_EQ(event_config->ec_restricted_access_option, "Bugzilla_RestrictedAccess", "Loaded from configuration");

        free_event_config(event_config);
    }
}
TS_RETURN_MAIN
]])