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_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); }
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); }
static balde_response_t* main_view(balde_app_t *app, balde_request_t *request) { bluster_gist_ctx_t *ctx = balde_app_get_user_data(app); if (ctx == NULL) return balde_abort(app, 404); const gchar *slug = balde_request_get_view_arg(request, "slug"); if ((slug != NULL) ^ (ctx->files != NULL && ctx->files->next == NULL)) { bluster_gist_file_t *file = NULL; if (ctx->files != NULL && ctx->files->next == NULL) { file = ctx->files->data; } else { for (GSList *tmp = ctx->files; tmp != NULL; tmp = tmp->next) { bluster_gist_file_t *tmp_file = tmp->data; if (g_strcmp0(tmp_file->slug, slug) == 0) { file = tmp_file; break; } } } if (file == NULL) return balde_abort(app, 404); balde_response_t* response = create_response(ctx); balde_response_set_tmpl_var(response, "css", file->parsed_content->css == NULL ? "" : file->parsed_content->css); gchar *content; gchar *title; if (file->title != NULL) { title = file->title; content = g_strdup(file->parsed_content->content); } else { title = ctx->headline; content = g_strdup_printf("<h1>%s</h1>\n%s", ctx->headline, file->parsed_content->content); } balde_response_set_tmpl_var(response, "title", title); balde_response_set_tmpl_var(response, "content", content); balde_template_base(app, request, response); g_free(content); return response; } if (slug == NULL) { balde_response_t* response = create_response(ctx); balde_response_set_tmpl_var(response, "title", ctx->headline); GString *list = g_string_new(""); for (GSList *tmp = ctx->files; tmp != NULL; tmp = tmp->next) { bluster_gist_file_t *tmp_file = tmp->data; balde_response_set_tmpl_var(response, "slug", tmp_file->slug); balde_response_set_tmpl_var(response, "link_title", tmp_file->title); g_string_append(list, balde_str_template_list(app, request, response)); } balde_response_set_tmpl_var(response, "list", list->str); g_string_free(list, TRUE); balde_template_base(app, request, response); return response; } return balde_abort(app, 404); }