Example #1
0
void
test_app_add_url_rule(void)
{
    balde_app_t *app = balde_app_init();
    balde_app_add_url_rule(app, "arcoiro", "/arcoiro/", BALDE_HTTP_POST,
        arcoiro_view);
    g_assert(g_slist_length(app->priv->views) == 2);
    balde_view_t *view = app->priv->views->next->data;
    g_assert(view != NULL);
    g_assert(view->url_rule != NULL);
    g_assert_cmpstr(view->url_rule->endpoint, ==, "arcoiro");
    g_assert_cmpstr(view->url_rule->rule, ==, "/arcoiro/");
    g_assert_cmpstr(g_regex_get_pattern(view->url_rule->match->regex), ==,
        "^/arcoiro/$");
    g_assert(view->url_rule->method & BALDE_HTTP_POST);
    g_assert(view->url_rule->method & BALDE_HTTP_OPTIONS);
    g_assert(!(view->url_rule->method & BALDE_HTTP_GET));
    g_assert(!(view->url_rule->method & BALDE_HTTP_HEAD));
    g_assert(!(view->url_rule->method & BALDE_HTTP_PUT));
    g_assert(!(view->url_rule->method & BALDE_HTTP_DELETE));
    i = 0;
    view->view_func(app, NULL);
    g_assert(i == 1);
    balde_app_free(app);
}
Example #2
0
void
test_app_url_for(void)
{
    g_setenv("PATH_INFO", "/", TRUE);
    g_setenv("REQUEST_METHOD", "GET", TRUE);
    // FIXME: this thing is too weak :(
    balde_app_t *app = balde_app_init();
    balde_request_t *request = balde_make_request(app, NULL);
    balde_app_add_url_rule(app, "arcoiro", "/arcoiro/<bola>/<guda>/",
        BALDE_HTTP_GET, arcoiro_view);
    balde_app_add_url_rule(app, "arcoiro2", "/arco/<iro>", BALDE_HTTP_GET,
        arcoiro_view);
    gchar *url = balde_app_url_for(app, request, "arcoiro", FALSE, "chunda", "guto");
    g_assert_cmpstr(url, ==, "/arcoiro/chunda/guto/");
    g_free(url);
    url = balde_app_url_for(app, request, "arcoiro2", FALSE, "bola");
    g_assert_cmpstr(url, ==, "/arco/bola");
    g_free(url);
    url = balde_app_url_for(app, request, "arcoiro2", FALSE, "bo\"la");
    g_assert_cmpstr(url, ==, "/arco/bo%22la");
    g_free(url);
    url = balde_app_url_for(app, request, "static", FALSE, "foo/jquery-min.js");
    g_assert_cmpstr(url, ==, "/static/foo/jquery-min.js");
    g_free(url);
    balde_request_free(request);
    balde_app_free(app);
    g_unsetenv("REQUEST_METHOD");
    g_unsetenv("PATH_INFO");
}
Example #3
0
void
test_make_request(void)
{
    g_setenv("HTTP_LOL_HEHE", "12345", TRUE);
    g_setenv("HTTP_XD_KKK", "asdf", TRUE);
    g_setenv("HTTP_COOKIE", "asd=\"qwe\"; bola=guda", TRUE);
    g_setenv("HTTP_AUTHORIZATION", "Basic Ym9sYTpndWRhOmxvbA==", TRUE);
    g_setenv("PATH_INFO", "/", TRUE);
    g_setenv("REQUEST_METHOD", "GET", TRUE);
    g_setenv("QUERY_STRING", "asd=lol&xd=hehe", TRUE);
    // FIXME: this thing is too weak :(
    balde_app_t *app = balde_app_init();
    balde_request_t *request = balde_make_request(app);
    g_assert_cmpstr(request->path, ==, "/");
    g_assert(request->method == BALDE_HTTP_GET);
    g_assert(g_hash_table_size(request->headers) == 4);
    g_assert(g_hash_table_size(request->args) == 2);
    g_assert(g_hash_table_size(request->cookies) == 2);
    g_assert(request->authorization != NULL);
    g_assert_cmpstr(request->authorization->username, ==, "bola");
    g_assert_cmpstr(request->authorization->password, ==, "guda:lol");
    g_assert(request->view_args == NULL);
    balde_request_free(request);
    balde_app_free(app);
}
Example #4
0
void
test_before_request_ctx_reload(void)
{
    name = "bola.md";
    title = "my title";
    content = "bolac";
    parsed_content = "parsed content";
    parsed_content_css = "my css";
    slug = "bola";
    headline = "head";
    commit = "guda";
    unix_utc = -1;
    needs_reload = TRUE;
    expected_ttl = 5.0;

    balde_app_t *app = balde_app_init();
    balde_app_set_user_data_destroy_func(app, (GDestroyNotify) bluster_gist_ctx_free);

    bluster_before_request(app, NULL);

    bluster_gist_ctx_t *ctx = balde_app_get_user_data(app);
    g_assert(ctx != NULL);
    g_assert(ctx->files != NULL);
    bluster_gist_file_t *file = ctx->files->data;
    g_assert_cmpstr(file->name, ==, "bola.md");
    g_assert_cmpstr(file->content, ==, "bolac");
    g_assert_cmpstr(file->slug, ==, "bola");
    g_assert(ctx->files->next == NULL);
    g_assert_cmpstr(ctx->commit, ==, "guda");
    g_assert(ctx->datetime != NULL);
    g_assert(ctx == balde_app_get_user_data(app));

    balde_app_free(app);
}
Example #5
0
void
test_tmpl_url_for_with_script_name(void)
{
    g_setenv("PATH_INFO", "/", TRUE);
    g_setenv("REQUEST_METHOD", "GET", TRUE);
    g_setenv("SCRIPT_NAME", "/foo/bar", TRUE);
    // FIXME: this thing is too weak :(
    balde_app_t *app = balde_app_init();
    balde_request_t *request = balde_make_request(app, balde_sapi_cgi_parse_request(app));
    balde_app_add_url_rule(app, "arcoiro", "/arcoiro/<bola>/<guda>/",
        BALDE_HTTP_GET, arcoiro_view);
    balde_app_add_url_rule(app, "arcoiro2", "/arco/<iro>", BALDE_HTTP_GET,
        arcoiro_view);
    gchar *url = balde_tmpl_url_for(app, request, "arcoiro", FALSE, "chunda", "guto");
    g_assert_cmpstr(url, ==, "/foo/bar/arcoiro/chunda/guto/");
    g_free(url);
    url = balde_tmpl_url_for(app, request, "arcoiro2", FALSE, "bola");
    g_assert_cmpstr(url, ==, "/foo/bar/arco/bola");
    g_free(url);
    url = balde_tmpl_url_for(app, request, "static", FALSE, "foo/jquery-min.js");
    g_assert_cmpstr(url, ==, "/foo/bar/static/foo/jquery-min.js");
    g_free(url);
    balde_request_free(request);
    balde_app_free(app);
    g_unsetenv("SCRIPT_NAME");
    g_unsetenv("REQUEST_METHOD");
    g_unsetenv("PATH_INFO");
}
Example #6
0
void
test_app_get_config(void)
{
    balde_app_t *app = balde_app_init();
    g_hash_table_replace(app->priv->config, g_strdup("bola"), g_strdup("guda"));
    g_assert_cmpstr(balde_app_get_config(app, "BoLa"), ==, "guda");
    balde_app_free(app);
}
Example #7
0
void
test_app_set_user_data(void)
{
    balde_app_t *app = balde_app_init();
    balde_app_set_user_data(app, GINT_TO_POINTER(10));
    g_assert_cmpint(GPOINTER_TO_INT(app->priv->user_data), ==, 10);
    balde_app_free(app);
}
Example #8
0
void
test_before_request_ctx_reload_with_old_ctx(void)
{
    name = "bola.md";
    title = "my title";
    content = "bolac";
    parsed_content = "<p>parsed content</p>";
    parsed_content_css = "my css";
    slug = "bola";
    headline = "head";
    commit = "guda";
    unix_utc = -1;
    needs_reload = TRUE;
    expected_ttl = 10.0;

    bluster_gist_ctx_t *old_ctx = g_new(bluster_gist_ctx_t, 1);
    old_ctx->files = NULL;
    old_ctx->headline = NULL;

    bluster_gist_file_t *f = g_new(bluster_gist_file_t, 1);
    f->name = g_strdup("bola.md");
    f->title = g_strdup("my old title");
    f->content = g_strdup("chunda");
    f->parsed_content = g_new(bluster_markdown_t, 1);
    f->parsed_content->content = g_strdup("<p>chunda</p>");
    f->parsed_content->css = NULL;
    f->slug = g_strdup("bola");

    old_ctx->files = g_slist_append(old_ctx->files, f);
    old_ctx->commit = g_strdup("arcoiro");
    old_ctx->datetime = NULL;

    balde_app_t *app = balde_app_init();
    balde_app_set_user_data_destroy_func(app, (GDestroyNotify) bluster_gist_ctx_free);
    balde_app_set_config(app, "gist_ttl", "10");
    balde_app_set_user_data(app, old_ctx);

    bluster_before_request(app, NULL);

    bluster_gist_ctx_t *ctx = balde_app_get_user_data(app);
    g_assert(ctx != NULL);
    g_assert(ctx->files != NULL);
    g_assert_cmpstr(ctx->headline, ==, "head");
    bluster_gist_file_t *file = ctx->files->data;
    g_assert_cmpstr(file->name, ==, "bola.md");
    g_assert_cmpstr(file->title, ==, "my title");
    g_assert_cmpstr(file->content, ==, "bolac");
    g_assert_cmpstr(file->parsed_content->content, ==, "<p>parsed content</p>");
    g_assert_cmpstr(file->parsed_content->css, ==, "my css");
    g_assert_cmpstr(file->slug, ==, "bola");
    g_assert(ctx->files->next == NULL);
    g_assert_cmpstr(ctx->commit, ==, "guda");
    g_assert(ctx->datetime != NULL);
    g_assert(ctx == balde_app_get_user_data(app));
    g_assert(ctx != old_ctx);

    balde_app_free(app);
}
Example #9
0
int
main(int argc, char **argv)
{
    balde_app_t *app = balde_app_init();
    balde_app_add_url_rule(app, "hello", "/", BALDE_HTTP_GET, hello);
    balde_app_run(app, argc, argv);
    balde_app_free(app);
    return 0;
}
Example #10
0
int
main(int argc, char **argv)
{
    balde_app_t *app = balde_app_init();
    balde_resources_load(app, static_resources_get_resource());
    balde_app_run(app);
    balde_app_free(app);
    return 0;
}
Example #11
0
void
test_app_set_config(void)
{
    balde_app_t *app = balde_app_init();
    balde_app_set_config(app, "BolA", "guda");
    g_assert(g_hash_table_size(app->priv->config) == 1);
    g_assert_cmpstr(g_hash_table_lookup(app->priv->config, "bola"), ==, "guda");
    balde_app_free(app);
}
Example #12
0
void
test_markdown_parse(void)
{
    balde_app_t *app = balde_app_init();
    gchar *mkd = bp_markdown_parse(app, "### Foo ###\n");
    g_assert_cmpstr(mkd, ==, "<h3>Foo</h3>");
    g_free(mkd);
    balde_app_free(app);
}
Example #13
0
void
test_app_set_config_from_envvar(void)
{
    g_setenv("BOLA_CONFIG_ENVVAR", "guda", TRUE);
    balde_app_t *app = balde_app_init();
    balde_app_set_config_from_envvar(app, "foo", "BOLA_CONFIG_ENVVAR", FALSE);
    g_assert(g_hash_table_size(app->priv->config) == 1);
    g_assert_cmpstr(g_hash_table_lookup(app->priv->config, "foo"), ==, "guda");
    balde_app_free(app);
}
Example #14
0
void
test_app_set_config_from_envvar_not_found_silent(void)
{
    balde_app_t *app = balde_app_init();
    balde_app_set_config_from_envvar(app, "foo", "BOLA_CONFIG_ENVVAR3", TRUE);
    g_assert(app->error == NULL);
    g_assert(g_hash_table_size(app->priv->config) == 1);
    g_assert(g_hash_table_lookup(app->priv->config, "foo") == NULL);
    balde_app_free(app);
}
Example #15
0
int
main(int argc, char **argv)
{
    balde_app_t *app = balde_app_init();
    balde_app_add_url_rule(app, "home", "/", BALDE_HTTP_GET, home);
    balde_app_add_url_rule(app, "profile", "/profile/<name>/", BALDE_HTTP_GET, profile);
    balde_app_run(app, argc, argv);
    balde_app_free(app);
    return 0;
}
Example #16
0
void
test_body(void) {
    set_headers();
    balde_app_t *app = balde_app_init();
    balde_request_t *request = balde_make_request(app, NULL);
    g_assert_cmpstr(request->priv->body->str, ==, "guda=bola&moises=arcoiro");
    g_assert_cmpint(request->priv->body->len, ==, 24);
    balde_request_free(request);
    balde_app_free(app);
}
Example #17
0
void
test_read(void) {
    set_headers();
    balde_app_t *app = balde_app_init();
    GString *body = balde_cgi_stdin_read(app);
    g_assert_cmpstr(body->str, ==, "guda=bola&moises=arcoiro");
    g_assert_cmpint(body->len, ==, 24);
    g_string_free(body, TRUE);
    balde_app_free(app);
}
Example #18
0
void
test_app_get_view_from_endpoint_not_found(void)
{
    balde_app_t *app = balde_app_init();
    balde_app_add_url_rule(app, "arcoiro", "/arcoiro/", BALDE_HTTP_GET,
        arcoiro_view);
    balde_view_t *view = balde_app_get_view_from_endpoint(app, "bola");
    g_assert(view == NULL);
    balde_app_free(app);
}
Example #19
0
void
test_app_free_user_data(void)
{
    balde_app_t *app = balde_app_init();
    balde_app_set_user_data_destroy_func(app, g_free);
    balde_app_set_user_data(app, g_strdup("bola"));
    g_assert_cmpstr(balde_app_get_user_data(app), ==, "bola");
    balde_app_free_user_data(app);
    g_assert(balde_app_get_user_data(app) == NULL);
    balde_app_free(app);
}
Example #20
0
void
test_request_get_cookie(void)
{
    balde_app_t *app = balde_app_init();
    balde_request_t *request = balde_make_request(app);
    g_hash_table_replace(request->cookies, g_strdup("foo"), g_strdup("bar"));
    g_assert_cmpstr(balde_request_get_cookie(request, "foo"), == , "bar");
    g_assert(balde_request_get_cookie(request, "xd") == NULL);
    balde_request_free(request);
    balde_app_free(app);
}
Example #21
0
void
test_request_get_view_arg(void)
{
    balde_app_t *app = balde_app_init();
    balde_request_t *request = balde_make_request(app);
    request->view_args = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
    g_hash_table_replace(request->view_args, g_strdup("foo"), g_strdup("bar"));
    g_assert_cmpstr(balde_request_get_view_arg(request, "foo"), == , "bar");
    g_assert(balde_request_get_view_arg(request, "xd") == NULL);
    balde_request_free(request);
    balde_app_free(app);
}
Example #22
0
void
test_request_get_arg(void)
{
    g_setenv("QUERY_STRING", "lol=hehe", TRUE);
    // FIXME: this thing is too weak :(
    balde_app_t *app = balde_app_init();
    balde_request_t *request = balde_make_request(app);
    g_assert_cmpstr(balde_request_get_arg(request, "lol"), == , "hehe");
    g_assert(balde_request_get_header(request, "xd") == NULL);
    balde_request_free(request);
    balde_app_free(app);
}
Example #23
0
void
test_form(void) {
    set_headers();
    balde_app_t *app = balde_app_init();
    balde_request_t *request = balde_make_request(app, NULL);
    g_assert(request->priv->form != NULL);
    g_assert(g_hash_table_size(request->priv->form) == 2);
    g_assert_cmpstr(g_hash_table_lookup(request->priv->form, "guda"), ==, "bola");
    g_assert_cmpstr(g_hash_table_lookup(request->priv->form, "moises"), ==, "arcoiro");
    balde_request_free(request);
    balde_app_free(app);
}
Example #24
0
void
test_request_get_form(void)
{
    g_setenv("REQUEST_METHOD", "GET", TRUE);
    // FIXME: this thing is too weak :(
    balde_app_t *app = balde_app_init();
    balde_request_t *request = balde_make_request(app);
    g_assert(request->stream == NULL);
    g_assert(request->form == NULL);
    g_assert(balde_request_get_form(request, "lol") == NULL);
    balde_request_free(request);
    balde_app_free(app);
}
Example #25
0
void
test_app_init(void)
{
    balde_app_t *app = balde_app_init();
    g_assert(app != NULL);
    g_assert(app->priv != NULL);
    g_assert(app->priv->config != NULL);
    g_assert(g_hash_table_size(app->priv->config) == 0);
    g_assert(app->priv->views != NULL);
    g_assert(app->priv->views->next == NULL);
    g_assert(app->error == NULL);
    balde_app_free(app);
}
Example #26
0
void
test_request_get_form_with_empty_body(void)
{
    g_setenv("REQUEST_METHOD", "POST", TRUE);
    // FIXME: this thing is too weak :(
    balde_app_t *app = balde_app_init();
    // ommited CONTENT_LENGTH
    balde_request_t *request = balde_make_request(app);
    g_assert(request->stream == NULL);
    g_assert(g_hash_table_size(request->form) == 0);
    g_assert(balde_request_get_form(request, "lol") == NULL);
    balde_request_free(request);
    balde_app_free(app);
}
Example #27
0
void
test_request_get_header(void)
{
    g_setenv("HTTP_LOL_HEHE", "12345", TRUE);
    g_setenv("HTTP_XD_KKK", "asdf", TRUE);
    // FIXME: this thing is too weak :(
    balde_app_t *app = balde_app_init();
    balde_request_t *request = balde_make_request(app);
    g_assert_cmpstr(balde_request_get_header(request, "Lol-Hehe"), ==, "12345");
    g_assert_cmpstr(balde_request_get_header(request, "XD-KKK"), ==, "asdf");
    g_assert(balde_request_get_header(request, "foo") == NULL);
    balde_request_free(request);
    balde_app_free(app);
}
Example #28
0
void
test_app_set_config_from_envvar_not_found(void)
{
    balde_app_t *app = balde_app_init();
    balde_app_set_config_from_envvar(app, "foo", "BOLA_CONFIG_ENVVAR2", FALSE);
    g_assert(app->error != NULL);
    g_assert_cmpstr(app->error->message, ==,
        "The server encountered an internal error and was unable to complete "
        "your request. Either the server is overloaded or there is an error in "
        "the application.\n"
        "\n"
        "BOLA_CONFIG_ENVVAR2 environment variable must be set");
    g_assert(g_hash_table_size(app->priv->config) == 0);
    balde_app_free(app);
}
Example #29
0
void
test_app_add_before_request(void)
{
    balde_app_t *app = balde_app_init();
    balde_app_add_before_request(app, arcoiro_hook);
    g_assert(app->priv->before_requests != NULL);
    g_assert(app->priv->before_requests->next == NULL);
    i = 0;
    balde_before_request_t *hook = app->priv->before_requests->data;
    g_assert(hook != NULL);
    g_assert(hook->before_request_func == arcoiro_hook);
    hook->before_request_func(app, NULL);
    g_assert(i == 1);
    balde_app_free(app);
}
Example #30
0
void
test_make_response_from_exception(void)
{
    balde_app_t *app = balde_app_init();
    balde_abort_set_error(app, 404);
    balde_response_t *res = balde_make_response_from_exception(app->error);
    g_assert(res != NULL);
    g_assert(res->status_code == 404);
    g_assert(g_hash_table_size(res->headers) == 1);
    GSList *tmp = g_hash_table_lookup(res->headers, "content-type");
    g_assert_cmpstr(tmp->data, ==, "text/plain; charset=utf-8");
    g_assert_cmpstr(res->body->str, ==,
        "404 Not Found\n\nThe requested URL was not found on the server. "
        "If you entered the URL manually please check your spelling and try again.\n");
    balde_response_free(res);
    balde_app_free(app);
}