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); }
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"); }
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); }
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); }
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"); }
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); }
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); }
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); }
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; }
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; }
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); }
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); }
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); }
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); }
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; }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }