test/webdav.c

Wed, 28 Jan 2026 19:58:08 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 28 Jan 2026 19:58:08 +0100
branch
dav-2
changeset 905
bc4238f9abdb
parent 902
06fa328989ee
permissions
-rw-r--r--

add additional test suite for webdav tests with enabled encryption

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
905
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
31 #include <libidav/utils.h>
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
32
902
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33 static DavContext *test_webdav_context;
905
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
34 static int encryption = 0;
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
35 static DavKey default_encryption_key;
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
36 static char default_encryption_key256[] = {
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
37 0x64, 0x4e, 0x8e, 0x45, 0x38, 0xea, 0x05, 0xae, 0x59, 0xfb, 0x4a, 0x6a, 0xe5, 0x57, 0xed, 0x73,
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
38 0x2d, 0x69, 0x4c, 0xab, 0xce, 0xaa, 0xb3, 0x43, 0x21, 0x11, 0x24, 0xe6, 0x67, 0xfa, 0x87, 0x3c
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
39 };
902
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41 void test_webdav_init(void) {
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42 test_webdav_context = dav_context_new();
905
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
43 default_encryption_key.data = default_encryption_key256;
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
44 default_encryption_key.length = 32;
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
45 default_encryption_key.name = "libidav_testkey";
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
46 default_encryption_key.type = DAV_KEY_AES256;
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
47 dav_context_add_key(test_webdav_context, &default_encryption_key);
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
48 }
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
49
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
50 void test_session_enable_encryption(int enable) {
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
51 encryption = 1;
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
52 }
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
53
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
54 int test_session_is_encrypted(void) {
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
55 return encryption;
902
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
56 }
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
58 DavSession* get_test_webdav_session(void) {
905
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
59 char *base_url = encryption ? "http://localhost:8182/enc" : "http://localhost:8182/";
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
60 DavSession *sn = dav_session_new_auth(test_webdav_context, base_url, "dav", "testdavutils");
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
61 if(encryption) {
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
62 sn->flags = DAV_SESSION_FULL_ENCRYPTION;
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
63 sn->key = &default_encryption_key;
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
64 }
902
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65 return sn;
06fa328989ee integrate wsgidav into test suite
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66 }
905
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
67
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
68 CX_TEST(init_webdav_encryption_tests) {
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
69 CX_TEST_DO {
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
70 encryption = 1;
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
71 DavSession *sn = get_test_webdav_session();
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
72
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
73 DavResource *res = dav_resource_new(sn, "/hello.txt");
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
74 cxstring content = cx_str("Hello World!\n");
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
75 dav_set_content_data(res, content.ptr, content.length);
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
76 int ret = dav_store(res);
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
77 CX_TEST_ASSERT(!ret);
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
78
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
79 ret = dav_load(res);
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
80 CX_TEST_ASSERT(!ret);
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
81 const char *name = util_resource_name(res->href);
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
82 CX_TEST_ASSERT(strcmp(name, "hello.txt"));
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
83 char *crypto_name = dav_get_string_property_ns(res, DAV_NS, "crypto-name");
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
84 char *crypto_key = dav_get_string_property_ns(res, DAV_NS, "crypto-key");
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
85 CX_TEST_ASSERT(crypto_name != NULL && strlen(crypto_name) > 0);
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
86 CX_TEST_ASSERT(!cx_strcmp(crypto_key, "libidav_testkey"));
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
87
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
88 dav_session_destroy(sn);
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
89 }
bc4238f9abdb add additional test suite for webdav tests with enabled encryption
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 902
diff changeset
90 }

mercurial