test/webdav_resource.c

Sun, 25 Jan 2026 17:53:31 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sun, 25 Jan 2026 17:53:31 +0100
branch
dav-2
changeset 903
457faa53fd7e
parent 902
06fa328989ee
permissions
-rw-r--r--

add tests for dav_exists, dav_create and dav_set_content/dav_store

902
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2026 Olaf Wintermann. All rights reserved.
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #include "webdav.h"
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30 #include "webdav_resource.h"
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31
903
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
32 CX_TEST_SUBROUTINE(test_default_properties, DavResource *res) {
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
33 CX_TEST_ASSERT(res->contentlength > 0);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
34 CX_TEST_ASSERT(res->creationdate > 0);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
35 CX_TEST_ASSERT(res->lastmodified > 0);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
36 CX_TEST_ASSERT(res->exists);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
37 CX_TEST_ASSERT(res->contenttype);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
38 CX_TEST_ASSERT(!res->iscollection);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
39 CX_TEST_ASSERT(res->href);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
40 }
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
41
902
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42 CX_TEST(test_dav_load_webdav) {
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43 CX_TEST_DO {
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44 DavSession *sn = get_test_webdav_session();
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 DavResource *res = dav_resource_new(sn, "/hello.txt");
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 CX_TEST_ASSERT(res);
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 int ret = dav_load(res);
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48 CX_TEST_ASSERT(ret == 0);
903
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
49 CX_TEST_CALL_SUBROUTINE(test_default_properties, res);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
50 dav_session_destroy(sn);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
51 }
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
52 }
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
53
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
54 CX_TEST(test_dav_exists_webdav) {
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
55 CX_TEST_DO {
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
56 DavSession *sn = get_test_webdav_session();
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
57 DavResource *res = dav_resource_new(sn, "/hello.txt");
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
58 CX_TEST_ASSERT(res);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
59 int exists = dav_exists(res);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
60 CX_TEST_ASSERT(exists);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
61 CX_TEST_CALL_SUBROUTINE(test_default_properties, res);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
62 dav_session_destroy(sn);
902
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
63 }
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
64 }
903
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
65
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
66 CX_TEST(test_dav_create_webdav) {
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
67 CX_TEST_DO {
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
68 DavSession *sn = get_test_webdav_session();
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
69 // test1: check if the resource exists and create it after that
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
70 DavResource *res = dav_resource_new(sn, "/test_create.txt");
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
71 CX_TEST_ASSERT(res);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
72 int exists = dav_exists(res); // the resource should not exist yet
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
73 CX_TEST_ASSERT(!exists);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
74 int ret = dav_create(res); // create the resource
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
75 CX_TEST_ASSERT(!ret);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
76 exists = dav_exists(res); // the resource should exist now
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
77 CX_TEST_ASSERT(exists);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
78 CX_TEST_ASSERT(res->lastmodified > 0); // some properties should be loaded by dav_exists()
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
79 CX_TEST_ASSERT(res->contenttype);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
80
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
81 // test2: create a resource without calling dav_exists first
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
82 DavResource *res2 = dav_resource_new(sn, "/test_create2.txt");
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
83 ret = dav_create(res2);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
84 CX_TEST_ASSERT(!ret);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
85 CX_TEST_ASSERT(dav_exists(res2));
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
86 CX_TEST_ASSERT(res2->lastmodified > 0);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
87 CX_TEST_ASSERT(res2->contenttype);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
88
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
89 dav_session_destroy(sn);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
90 }
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
91 }
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
92
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
93 CX_TEST(test_dav_store_content_webdav) {
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
94 CX_TEST_DO {
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
95 DavSession *sn = get_test_webdav_session();
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
96 DavResource *res = dav_resource_new(sn, "/test_store_content.txt");
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
97 cxstring content = cx_str("test_store_content test content\n");
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
98 dav_set_content_data(res, content.ptr, content.length);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
99 int ret = dav_store(res);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
100 CX_TEST_ASSERT(!ret);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
101 CX_TEST_ASSERT(!dav_load(res));
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
102 CX_TEST_ASSERT(res->contentlength == content.length);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
103 dav_session_destroy(sn);
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
104 }
457faa53fd7e add tests for dav_exists, dav_create and dav_set_content/dav_store
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
105 }

mercurial