Sun, 27 Nov 2022 13:33:30 +0100
improve daemon startup
parent will wait until daemon is started and returns error code if startup failed
daemon startup log messages will be printed by parent
287
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1 | /* |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
3 | * |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
4 | * Copyright 2022 Olaf Wintermann. All rights reserved. |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
5 | * |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
8 | * |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
11 | * |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
15 | * |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
a171da778817
prepare build system for postgresql plugin tests
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 |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
26 | * POSSIBILITY OF SUCH DAMAGE. |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
27 | */ |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
28 | |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
29 | #include <stdio.h> |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
30 | #include <inttypes.h> |
287
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
31 | |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
32 | #include "../../util/util.h" |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
33 | #include "../../test/testutils.h" |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
34 | #include "../../test/webdav.h" |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
35 | #include "../../public/nsapi.h" |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
36 | #include "../../public/webdav.h" |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
37 | #include "../../webdav/webdav.h" |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
38 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
39 | #include <cx/string.h> |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
40 | #include <cx/utils.h> |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
41 | #include <cx/buffer.h> |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
42 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
43 | #include "pgtest.h" |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
44 | #include "vfs.h" |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
45 | #include "webdav.h" |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
46 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
47 | #include <libpq-fe.h> |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
48 | |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
49 | #define xstreq(a,b) xmlStrEqual(BAD_CAST a, BAD_CAST b) |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
50 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
51 | #define MAP_GET(map, key) cxMapGet(map, cx_hash_key_str(key)) |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
52 | #define MAP_PUT(map, key, value) cxMapPut(map, cx_hash_key_str(key), value) |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
53 | |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
54 | static char *pg_connstr = "postgresql://localhost/test1"; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
55 | static int abort_pg_tests = 0; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
56 | static PGconn *test_connection; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
57 | static ResourceData resdata; |
374
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
58 | static PgRepository test_repo; |
287
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
59 | |
296
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
60 | void debug_print_resources(void) { |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
61 | PGresult *result = PQexec(test_connection, "select * from Resource;"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
62 | int n = PQntuples(result); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
63 | printf("\nntuples: %d\n-----------------------------------------------\n", n); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
64 | printf("%10s %10s %s\n", "resource_id", "parent_id", "nodename"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
65 | for(int i=0;i<n;i++) { |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
66 | char *res_id = PQgetvalue(result, i, 0); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
67 | char *parent_id = PQgetvalue(result, i, 1); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
68 | char *nodename = PQgetvalue(result, i, 2); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
69 | printf("%10s %10s %s\n", res_id, parent_id, nodename); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
70 | } |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
71 | printf("\n"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
72 | } |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
73 | |
374
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
74 | static void test_root_lookup(void) { |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
75 | memset(&test_repo, 0, sizeof(PgRepository)); |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
76 | |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
77 | int64_t root_id = -1; |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
78 | int err = pg_lookup_root(&resdata, "root", &root_id); |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
79 | test_repo.root_resource_id = root_id; |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
80 | |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
81 | if(err || root_id < 0) { |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
82 | abort_pg_tests = 1; |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
83 | } |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
84 | } |
296
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
85 | |
287
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
86 | void register_pg_tests(int argc, char **argv, UcxTestSuite *suite) { |
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
87 | |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
88 | test_connection = PQconnectdb(pg_connstr); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
89 | if(!test_connection) { |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
90 | abort_pg_tests = 1; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
91 | } |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
92 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
93 | if(PQstatus(test_connection) != CONNECTION_OK) { |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
94 | abort_pg_tests = 1; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
95 | } |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
96 | |
374
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
97 | resdata.data = test_connection; |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
98 | test_root_lookup(); |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
99 | |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
100 | ucx_test_register(suite, test_pg_conn); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
101 | if(!abort_pg_tests) { |
374
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
102 | ucx_test_register(suite, test_pg_lookup_root); |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
103 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
104 | ucx_test_register(suite, test_pg_vfs_open); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
105 | ucx_test_register(suite, test_pg_vfs_io); |
293
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
106 | ucx_test_register(suite, test_pg_vfs_stat); |
294
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
107 | ucx_test_register(suite, test_pg_vfs_mkdir); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
108 | ucx_test_register(suite, test_pg_vfs_unlink); |
296
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
109 | ucx_test_register(suite, test_pg_vfs_rmdir); |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
110 | |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
111 | ucx_test_register(suite, test_pg_webdav_create_from_resdata); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
112 | ucx_test_register(suite, test_pg_prepare_tests); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
113 | ucx_test_register(suite, test_pg_webdav_propfind); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
114 | ucx_test_register(suite, test_pg_webdav_propfind_allprop); |
318
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
115 | ucx_test_register(suite, test_pg_webdav_proppatch_set); |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
116 | |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
117 | PGresult *result = PQexec(test_connection, "BEGIN"); |
293
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
118 | PQclear(result); |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
119 | } |
287
a171da778817
prepare build system for postgresql plugin tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
120 | } |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
121 | |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
122 | static void parse_response_tag(TestMultistatus *ms, xmlNode *node) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
123 | // thanks to dav for some of this code |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
124 | CxAllocator *a = (CxAllocator*)ms->mp->allocator; |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
125 | node = node->children; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
126 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
127 | cxmutstr href = {NULL, 0}; |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
128 | CxMap *properties = cxHashMapCreate(a, 16); |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
129 | |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
130 | while(node) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
131 | if(node->type == XML_ELEMENT_NODE) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
132 | if(xstreq(node->name, "href")) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
133 | xmlNode *href_node = node->children; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
134 | if(href_node->type != XML_TEXT_NODE) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
135 | return; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
136 | } |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
137 | href = cx_strdup_a(a, cx_str((const char*)href_node->content)); |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
138 | } else if(xstreq(node->name, "propstat")) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
139 | xmlNode *n = node->children; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
140 | xmlNode *prop_node = NULL; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
141 | int status_code = 0; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
142 | while(n) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
143 | if(n->type == XML_ELEMENT_NODE) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
144 | if(xstreq(n->name, "prop")) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
145 | prop_node = n; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
146 | } else if(xstreq(n->name, "status")) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
147 | xmlNode *status_node = n->children; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
148 | if(status_node->type != XML_TEXT_NODE) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
149 | return; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
150 | } |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
151 | cxmutstr status_str = cx_mutstr((char*)status_node->content); |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
152 | if(status_str.length < 13) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
153 | return; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
154 | } |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
155 | status_str = cx_strsubsl_m(status_str, 9, 3); |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
156 | cxmutstr status_s = cx_strdup(cx_strcast(status_str)); |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
157 | status_code = atoi(status_s.ptr); |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
158 | free(status_s.ptr); |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
159 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
160 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
161 | n = n->next; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
162 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
163 | |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
164 | n = prop_node->children; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
165 | while(n) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
166 | if(n->type == XML_ELEMENT_NODE) { |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
167 | TestProperty *property = cxCalloc(ms->mp->allocator, 1, sizeof(TestProperty)); |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
168 | if(n->ns) { |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
169 | property->prefix = n->ns->prefix ? cx_strdup_a(a, cx_str((const char*)n->ns->prefix)).ptr : NULL; |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
170 | property->namespace = n->ns->href ? cx_strdup_a(a, cx_str((const char*)n->ns->href)).ptr : NULL; |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
171 | } |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
172 | property->name = cx_strdup_a(a, cx_str((const char*)n->name)).ptr; |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
173 | property->node = n; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
174 | property->status = status_code; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
175 | xmlNode *value = n->children; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
176 | if(value && value->type == XML_TEXT_NODE) { |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
177 | property->value = cx_strdup_a(a, cx_str((const char*)value->content)).ptr; |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
178 | } |
403
0f678595d497
fix multistatus response creating namespace definitions twice in some cases
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
374
diff
changeset
|
179 | if(property->namespace && property->name) { |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
180 | cxmutstr pname = cx_strcat(2, cx_str(property->namespace), cx_str(property->name)); |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
181 | cxMapPut(properties, cx_hash_key(pname.ptr, pname.length), property); |
403
0f678595d497
fix multistatus response creating namespace definitions twice in some cases
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
374
diff
changeset
|
182 | free(pname.ptr); |
0f678595d497
fix multistatus response creating namespace definitions twice in some cases
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
374
diff
changeset
|
183 | } |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
184 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
185 | n = n->next; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
186 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
187 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
188 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
189 | node = node->next; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
190 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
191 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
192 | TestResponse *resp = cxMalloc(a, sizeof(TestResponse)); |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
193 | resp->href = href.ptr; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
194 | resp->properties = properties; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
195 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
196 | cxMapPut(ms->responses, cx_hash_key(href.ptr, href.length), resp); |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
197 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
198 | |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
199 | TestMultistatus* test_parse_multistatus(const char *space, size_t size) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
200 | xmlDoc *doc = xmlReadMemory(space, size, NULL, NULL, 0); |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
201 | if(!doc) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
202 | return NULL; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
203 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
204 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
205 | CxMempool *mp = cxBasicMempoolCreate(64); |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
206 | TestMultistatus *ms = cxMalloc(mp->allocator, sizeof(TestMultistatus)); |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
207 | ms->doc = doc; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
208 | ms->mp = mp; |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
209 | ms->responses = cxHashMapCreate((CxAllocator*)mp->allocator, 8); |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
210 | |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
211 | // parse response |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
212 | xmlNode *xml_root = xmlDocGetRootElement(doc); |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
213 | xmlNode *node = xml_root->children; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
214 | while(node) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
215 | if(node->type == XML_ELEMENT_NODE) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
216 | if(xstreq(node->name, "response")) { |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
217 | parse_response_tag(ms, node); |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
218 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
219 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
220 | node = node->next; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
221 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
222 | |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
223 | return ms; |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
224 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
225 | |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
226 | |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
227 | void test_multistatus_destroy(TestMultistatus *ms) { |
318
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
228 | if(!ms) return; |
315
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
229 | xmlFreeDoc(ms->doc); |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
230 | cxMempoolDestroy(ms->mp); |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
231 | } |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
232 | |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
233 | |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
234 | UCX_TEST(test_pg_conn) { |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
235 | char *msg = test_connection ? PQerrorMessage(test_connection) : "no connection"; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
236 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
237 | UCX_TEST_BEGIN; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
238 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
239 | if(abort_pg_tests) { |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
240 | int msglen = strlen(msg); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
241 | if(msglen > 0 && msg[msglen-1] == '\n') { |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
242 | msglen--; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
243 | } |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
244 | fprintf(stdout, "%.*s: ", msglen, msg); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
245 | UCX_TEST_ASSERT(1 == 0, "skip pg tests"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
246 | } else { |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
247 | UCX_TEST_ASSERT(1 == 1, "ok"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
248 | } |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
249 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
250 | UCX_TEST_END; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
251 | } |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
252 | |
374
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
253 | UCX_TEST(test_pg_lookup_root) { |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
254 | UCX_TEST_BEGIN; |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
255 | |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
256 | // test already done in test_root_lookup() |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
257 | UCX_TEST_ASSERT(!abort_pg_tests, "Lookup failed"); |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
258 | |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
259 | UCX_TEST_END; |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
260 | } |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
261 | |
374
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
262 | |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
263 | static VFS* create_test_pgvfs(Session *sn, Request *rq) { |
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
264 | return pg_vfs_create_from_resourcedata(sn, rq, &test_repo, &resdata); |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
265 | } |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
266 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
267 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
268 | UCX_TEST(test_pg_vfs_open) { |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
269 | Session *sn = testutil_session(); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
270 | Request *rq = testutil_request(sn->pool, "PUT", "/"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
271 | rq->vfs = create_test_pgvfs(sn, rq); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
272 | VFSContext *vfs = vfs_request_context(sn, rq); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
273 | SYS_FILE file; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
274 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
275 | UCX_TEST_BEGIN; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
276 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
277 | file = vfs_open(vfs, "/test_notfound1", O_RDONLY); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
278 | UCX_TEST_ASSERT(!file, "/test_notfound should not exist"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
279 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
280 | file = vfs_open(vfs, "/test_file1", O_RDWR | O_CREAT); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
281 | UCX_TEST_ASSERT(file, "cannot create file 1"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
282 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
283 | vfs_close(file); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
284 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
285 | UCX_TEST_END; |
294
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
286 | |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
287 | testutil_destroy_session(sn); |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
288 | } |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
289 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
290 | UCX_TEST(test_pg_vfs_io) { |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
291 | Session *sn = testutil_session(); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
292 | Request *rq = testutil_request(sn->pool, "PUT", "/"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
293 | rq->vfs = create_test_pgvfs(sn, rq); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
294 | VFSContext *vfs = vfs_request_context(sn, rq); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
295 | SYS_FILE file; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
296 | SYS_FILE file2; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
297 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
298 | UCX_TEST_BEGIN; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
299 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
300 | file = vfs_open(vfs, "/test_f1", O_WRONLY | O_CREAT); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
301 | UCX_TEST_ASSERT(file, "cannot open file1"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
302 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
303 | int w = system_fwrite(file, "test1\n", 6); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
304 | UCX_TEST_ASSERT(w == 6, "fwrite ret (1)"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
305 | w = system_fwrite(file, "2", 1); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
306 | UCX_TEST_ASSERT(w == 1, "fwrite ret (2)"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
307 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
308 | vfs_close(file); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
309 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
310 | file = vfs_open(vfs, "/test_f1", O_RDONLY); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
311 | file2 = vfs_open(vfs, "/test_f2", O_WRONLY | O_CREAT); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
312 | UCX_TEST_ASSERT(file, "cannot open file1"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
313 | UCX_TEST_ASSERT(file2, "cannot open file2"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
314 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
315 | char buf[128]; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
316 | int r = system_fread(file, buf, 128); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
317 | UCX_TEST_ASSERT(r == 7, "cannot read from file1"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
318 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
319 | w = system_fwrite(file2, buf, r); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
320 | UCX_TEST_ASSERT(w == 7, "cannot write to file2"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
321 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
322 | vfs_close(file); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
323 | vfs_close(file2); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
324 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
325 | file2 = vfs_open(vfs, "/test_f2", O_RDONLY); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
326 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
327 | r = system_fread(file, buf, 128); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
328 | UCX_TEST_ASSERT(r == 7, "fread ret"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
329 | UCX_TEST_ASSERT(!memcmp(buf, "test1\n2", 7), "wrong buffer content after read"); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
330 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
331 | vfs_close(file2); |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
332 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
333 | |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
334 | UCX_TEST_END; |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
335 | |
294
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
336 | testutil_destroy_session(sn); |
289
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
337 | } |
285d483db2fb
add first pg vfs tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
287
diff
changeset
|
338 | |
290
efc10acf539f
implement pg vfs mkdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
289
diff
changeset
|
339 | UCX_TEST(test_pg_vfs_stat) { |
efc10acf539f
implement pg vfs mkdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
289
diff
changeset
|
340 | Session *sn = testutil_session(); |
efc10acf539f
implement pg vfs mkdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
289
diff
changeset
|
341 | Request *rq = testutil_request(sn->pool, "PUT", "/"); |
efc10acf539f
implement pg vfs mkdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
289
diff
changeset
|
342 | rq->vfs = create_test_pgvfs(sn, rq); |
efc10acf539f
implement pg vfs mkdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
289
diff
changeset
|
343 | VFSContext *vfs = vfs_request_context(sn, rq); |
efc10acf539f
implement pg vfs mkdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
289
diff
changeset
|
344 | |
efc10acf539f
implement pg vfs mkdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
289
diff
changeset
|
345 | UCX_TEST_BEGIN; |
efc10acf539f
implement pg vfs mkdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
289
diff
changeset
|
346 | |
293
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
347 | // testdata, content doesn't matter |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
348 | char test1[512]; |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
349 | memset(test1, 'x', 512); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
350 | const int test_len1 = 200; |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
351 | const int test_len2 = 432; |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
352 | |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
353 | SYS_FILE f1 = vfs_open(vfs, "/test_s1", O_WRONLY|O_CREAT); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
354 | UCX_TEST_ASSERT(f1, "cannot open test_s1"); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
355 | system_fwrite(f1, test1, test_len1); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
356 | vfs_close(f1); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
357 | |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
358 | SYS_FILE f2 = vfs_open(vfs, "/test_s2", O_RDWR|O_CREAT); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
359 | UCX_TEST_ASSERT(f2, "cannot open test_s2"); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
360 | system_fwrite(f2, test1, test_len2); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
361 | vfs_close(f2); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
362 | |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
363 | struct stat st1, st2; |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
364 | int r1 = vfs_stat(vfs, "/test_s1", &st1); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
365 | int r2 = vfs_stat(vfs, "/test_s2", &st2); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
366 | |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
367 | UCX_TEST_ASSERT(r1 == 0, "stat1 failed"); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
368 | UCX_TEST_ASSERT(r2 == 0, "stat2 failed"); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
369 | |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
370 | UCX_TEST_ASSERT(st1.st_size == test_len1, "s1 wrong length"); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
371 | UCX_TEST_ASSERT(st2.st_size == test_len2, "s2 wrong length"); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
372 | |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
373 | int testfail = vfs_stat(vfs, "/test_stat_fail", &st1); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
374 | UCX_TEST_ASSERT(testfail != 0, "stat 3 should fail"); |
d3899857a81d
add pg stat tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
290
diff
changeset
|
375 | |
290
efc10acf539f
implement pg vfs mkdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
289
diff
changeset
|
376 | UCX_TEST_END; |
294
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
377 | |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
378 | testutil_destroy_session(sn); |
290
efc10acf539f
implement pg vfs mkdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
289
diff
changeset
|
379 | } |
efc10acf539f
implement pg vfs mkdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
289
diff
changeset
|
380 | |
efc10acf539f
implement pg vfs mkdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
289
diff
changeset
|
381 | UCX_TEST(test_pg_vfs_mkdir) { |
295
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
382 | Session *sn = testutil_session(); |
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
383 | Request *rq = testutil_request(sn->pool, "PUT", "/"); |
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
384 | rq->vfs = create_test_pgvfs(sn, rq); |
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
385 | VFSContext *vfs = vfs_request_context(sn, rq); |
290
efc10acf539f
implement pg vfs mkdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
289
diff
changeset
|
386 | |
295
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
387 | UCX_TEST_BEGIN; |
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
388 | |
350
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
389 | struct stat s; |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
390 | |
295
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
391 | SYS_FILE f1 = vfs_open(vfs, "/test_mkdir/file", O_WRONLY|O_CREAT); |
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
392 | UCX_TEST_ASSERT(f1 == NULL, "open should fail"); |
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
393 | |
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
394 | int r = vfs_mkdir(vfs, "/test_mkdir"); |
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
395 | UCX_TEST_ASSERT(r == 0, "mkdir failed"); |
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
396 | |
350
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
397 | r = vfs_stat(vfs, "/test_mkdir", &s); |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
398 | UCX_TEST_ASSERT(r == 0, "stat (1) failed"); |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
399 | |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
400 | UCX_TEST_ASSERT(S_ISDIR(s.st_mode), "/test_mkdir is not a directory"); |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
401 | |
295
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
402 | f1 = vfs_open(vfs, "/test_mkdir/file", O_WRONLY|O_CREAT); |
350
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
403 | vfs_close(f1); |
295
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
404 | UCX_TEST_ASSERT(f1, "open failed"); |
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
405 | |
350
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
406 | r = vfs_stat(vfs, "/test_mkdir/file", &s); |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
407 | UCX_TEST_ASSERT(r == 0, "stat (2) failed"); |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
408 | |
295
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
409 | r = vfs_mkdir(vfs, "/test_mkdir/test_sub"); |
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
410 | UCX_TEST_ASSERT(r == 0, "mkdir failed (2)"); |
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
411 | |
350
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
412 | r = vfs_stat(vfs, "/test_mkdir/test_sub", &s); |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
413 | UCX_TEST_ASSERT(r == 0, "stat (3) failed"); |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
414 | UCX_TEST_ASSERT(S_ISDIR(s.st_mode), "/test_mkdir/test_sub is not a directory"); |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
415 | |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
416 | r = vfs_mkdir(vfs, "/test_mkdir/test_sub/test_sub2/"); |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
417 | UCX_TEST_ASSERT(r == 0, "mkdir failed (4)"); |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
418 | |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
419 | r = vfs_stat(vfs, "/test_mkdir/test_sub/test_sub2/", &s); |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
420 | UCX_TEST_ASSERT(r == 0, "stat (4) failed"); |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
421 | UCX_TEST_ASSERT(S_ISDIR(s.st_mode), "/test_mkdir/test_sub/test_sub2/ is not a directory"); |
abba342112c2
fix that pg mkdir can create directories with trailing path separators in the nodename
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
324
diff
changeset
|
422 | |
295
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
423 | UCX_TEST_END; |
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
424 | |
73a1243fce15
add pg mkdir tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
294
diff
changeset
|
425 | testutil_destroy_session(sn); |
290
efc10acf539f
implement pg vfs mkdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
289
diff
changeset
|
426 | } |
294
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
427 | |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
428 | UCX_TEST(test_pg_vfs_unlink) { |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
429 | Session *sn = testutil_session(); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
430 | Request *rq = testutil_request(sn->pool, "PUT", "/"); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
431 | rq->vfs = create_test_pgvfs(sn, rq); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
432 | VFSContext *vfs = vfs_request_context(sn, rq); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
433 | |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
434 | UCX_TEST_BEGIN; |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
435 | |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
436 | SYS_FILE f1 = vfs_open(vfs, "/test_unlink1", O_WRONLY|O_CREAT); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
437 | UCX_TEST_ASSERT(f1, "cannot create test file"); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
438 | system_fwrite(f1, "test", 4); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
439 | |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
440 | PgFile *pgfile = f1->data; |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
441 | Oid oid = pgfile->oid; |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
442 | |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
443 | vfs_close(f1); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
444 | |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
445 | int r = vfs_unlink(vfs, "/test_unlink1"); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
446 | UCX_TEST_ASSERT(r == 0, "unlink failed"); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
447 | |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
448 | f1 = vfs_open(vfs, "/test_unlink1", O_RDONLY); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
449 | UCX_TEST_ASSERT(f1 == NULL, "test file not deleted"); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
450 | |
298
8f5c556120a5
fix error handling in pg_remove_res
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
297
diff
changeset
|
451 | PGresult *result = PQexec(test_connection, "savepoint sp;"); |
8f5c556120a5
fix error handling in pg_remove_res
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
297
diff
changeset
|
452 | PQclear(result); |
8f5c556120a5
fix error handling in pg_remove_res
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
297
diff
changeset
|
453 | int pgfd = lo_open(test_connection, oid, INV_READ); |
8f5c556120a5
fix error handling in pg_remove_res
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
297
diff
changeset
|
454 | UCX_TEST_ASSERT(pgfd < 0, "large object not deleted"); |
8f5c556120a5
fix error handling in pg_remove_res
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
297
diff
changeset
|
455 | result = PQexec(test_connection, "rollback to savepoint sp;"); |
8f5c556120a5
fix error handling in pg_remove_res
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
297
diff
changeset
|
456 | PQclear(result); |
294
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
457 | |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
458 | r = vfs_unlink(vfs, "/test_unlink1"); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
459 | UCX_TEST_ASSERT(r, "unlink should fail"); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
460 | |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
461 | UCX_TEST_END; |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
462 | |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
463 | testutil_destroy_session(sn); |
277a5896a2ec
implement pg unlink
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
293
diff
changeset
|
464 | } |
296
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
465 | |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
466 | UCX_TEST(test_pg_vfs_rmdir) { |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
467 | Session *sn = testutil_session(); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
468 | Request *rq = testutil_request(sn->pool, "PUT", "/"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
469 | rq->vfs = create_test_pgvfs(sn, rq); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
470 | VFSContext *vfs = vfs_request_context(sn, rq); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
471 | |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
472 | PQexec(test_connection, "delete from Resource where parent_id is not null;"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
473 | |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
474 | UCX_TEST_BEGIN; |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
475 | |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
476 | int r; |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
477 | SYS_FILE f1; |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
478 | |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
479 | // prepare some dirs/files |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
480 | r = vfs_mkdir(vfs, "/rmdir_test"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
481 | UCX_TEST_ASSERT(r == 0, "mkdir failed (1)"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
482 | r = vfs_mkdir(vfs, "/rmdir_test/subdir1"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
483 | UCX_TEST_ASSERT(r == 0, "mkdir failed (2)"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
484 | r = vfs_mkdir(vfs, "/rmdir_test/subdir2"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
485 | UCX_TEST_ASSERT(r == 0, "mkdir failed (3)"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
486 | |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
487 | f1 = vfs_open(vfs, "/rmdir_test/subdir2/file", O_CREAT|O_WRONLY); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
488 | UCX_TEST_ASSERT(f1, "open failed"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
489 | vfs_close(f1); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
490 | |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
491 | // test rmdir |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
492 | r = vfs_rmdir(vfs, "/rmdir_test/subdir1"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
493 | UCX_TEST_ASSERT(r == 0, "rmdir failed");; |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
494 | |
297
14cd7137a3a8
handle sql error in pg_remove_res
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
296
diff
changeset
|
495 | r = vfs_rmdir(vfs, "/rmdir_test/subdir2"); |
14cd7137a3a8
handle sql error in pg_remove_res
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
296
diff
changeset
|
496 | UCX_TEST_ASSERT(r != 0, "rmdir should fail if the dir is not empty"); |
296
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
497 | |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
498 | r = vfs_unlink(vfs, "/rmdir_test/subdir2/file"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
499 | UCX_TEST_ASSERT(r == 0, "unlink failed"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
500 | |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
501 | r = vfs_rmdir(vfs, "/rmdir_test/subdir2"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
502 | UCX_TEST_ASSERT(r == 0, "rmdir failed 2"); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
503 | |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
504 | UCX_TEST_END; |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
505 | |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
506 | testutil_destroy_session(sn); |
78e92337fa4e
implement pg rmdir
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
295
diff
changeset
|
507 | } |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
508 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
509 | /* ----------------------------- WebDAV tests ----------------------------- */ |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
510 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
511 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
512 | static WebdavBackend* create_test_pgdav(Session *sn, Request *rq) { |
374
77506ec632a4
use configured root node from PgRepository in pg vfs/webdav
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
350
diff
changeset
|
513 | return pg_webdav_create_from_resdata(sn, rq, &test_repo, &resdata); |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
514 | } |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
515 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
516 | UCX_TEST(test_pg_webdav_create_from_resdata) { |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
517 | Session *sn = testutil_session(); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
518 | Request *rq = testutil_request(sn->pool, "PROPFIND", "/"); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
519 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
520 | UCX_TEST_BEGIN; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
521 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
522 | WebdavBackend *dav = create_test_pgdav(sn, rq); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
523 | UCX_TEST_ASSERT(dav, "cannot create pg dav backend"); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
524 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
525 | UCX_TEST_END; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
526 | } |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
527 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
528 | UCX_TEST(test_pg_prepare_tests) { |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
529 | Session *sn = testutil_session(); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
530 | Request *rq = testutil_request(sn->pool, "PUT", "/"); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
531 | rq->vfs = create_test_pgvfs(sn, rq); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
532 | VFSContext *vfs = vfs_request_context(sn, rq); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
533 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
534 | UCX_TEST_BEGIN; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
535 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
536 | vfs_mkdir(vfs, "/propfind"); |
318
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
537 | vfs_mkdir(vfs, "/proppatch"); |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
538 | SYS_FILE f1; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
539 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
540 | int64_t res1_id, res2_id; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
541 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
542 | f1 = vfs_open(vfs, "/propfind/res1", O_WRONLY|O_CREAT); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
543 | UCX_TEST_ASSERT(f1, "res1 create failed"); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
544 | res1_id = ((PgFile*)f1->data)->resource_id; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
545 | vfs_close(f1); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
546 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
547 | f1 = vfs_open(vfs, "/propfind/res2", O_WRONLY|O_CREAT); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
548 | UCX_TEST_ASSERT(f1, "res2 create failed"); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
549 | res2_id = ((PgFile*)f1->data)->resource_id; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
550 | vfs_close(f1); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
551 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
552 | f1 = vfs_open(vfs, "/propfind/res3", O_WRONLY|O_CREAT); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
553 | UCX_TEST_ASSERT(f1, "res3 create failed"); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
554 | vfs_close(f1); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
555 | |
315
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
556 | int r = vfs_mkdir(vfs, "/propfind/sub"); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
557 | UCX_TEST_ASSERT(r == 0, "sub create failed"); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
558 | |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
559 | f1 = vfs_open(vfs, "/propfind/sub/res4", O_WRONLY|O_CREAT); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
560 | UCX_TEST_ASSERT(f1, "res4 create failed"); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
561 | vfs_close(f1); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
562 | |
318
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
563 | f1 = vfs_open(vfs, "/proppatch/pp1", O_WRONLY|O_CREAT); |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
564 | UCX_TEST_ASSERT(f1, "pp1 create failed"); |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
565 | vfs_close(f1); |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
566 | |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
567 | // 2 properties for res1 |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
568 | char idstr[32]; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
569 | snprintf(idstr, 32, "%" PRId64, res1_id); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
570 | const char* params[1] = { idstr }; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
571 | PGresult *result = PQexecParams( |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
572 | test_connection, |
317
09676b559091
store property prefix in the database
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
316
diff
changeset
|
573 | "insert into Property(resource_id, prefix, xmlns, pname, pvalue) values ($1, 'x', 'http://example.com/', 'test', 'testvalue');", |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
574 | 1, // number of parameters |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
575 | NULL, |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
576 | params, // parameter value |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
577 | NULL, |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
578 | NULL, |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
579 | 0); // 0: result in text format |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
580 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
581 | UCX_TEST_ASSERT(PQresultStatus(result) == PGRES_COMMAND_OK, "cannot create property 1"); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
582 | PQclear(result); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
583 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
584 | result = PQexecParams( |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
585 | test_connection, |
317
09676b559091
store property prefix in the database
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
316
diff
changeset
|
586 | "insert into Property(resource_id, prefix, xmlns, pname, pvalue) values ($1, 'x', 'http://example.com/', 'prop2', 'value2');", |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
587 | 1, // number of parameters |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
588 | NULL, |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
589 | params, // parameter value |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
590 | NULL, |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
591 | NULL, |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
592 | 0); // 0: result in text format |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
593 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
594 | UCX_TEST_ASSERT(PQresultStatus(result) == PGRES_COMMAND_OK, "cannot create property 1"); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
595 | PQclear(result); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
596 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
597 | // 1 property for res2 |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
598 | snprintf(idstr, 32, "%" PRId64, res2_id); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
599 | result = PQexecParams( |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
600 | test_connection, |
317
09676b559091
store property prefix in the database
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
316
diff
changeset
|
601 | "insert into Property(resource_id, prefix, xmlns, pname, pvalue) values ($1, 'x', 'http://example.com/', 'test', 'res2test');", |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
602 | 1, // number of parameters |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
603 | NULL, |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
604 | params, // parameter value |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
605 | NULL, |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
606 | NULL, |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
607 | 0); // 0: result in text format |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
608 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
609 | UCX_TEST_ASSERT(PQresultStatus(result) == PGRES_COMMAND_OK, "cannot create property 1"); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
610 | PQclear(result); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
611 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
612 | UCX_TEST_END; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
613 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
614 | testutil_destroy_session(sn); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
615 | } |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
616 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
617 | UCX_TEST(test_pg_webdav_propfind) { |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
618 | Session *sn; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
619 | Request *rq; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
620 | TestIOStream *st; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
621 | pblock *pb; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
622 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
623 | UCX_TEST_BEGIN; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
624 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
625 | // test data: |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
626 | // |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
627 | // /propfind/ |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
628 | // /propfind/res1 (2 properties: test, prop2) |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
629 | // /propfind/res2 (1 property: test) |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
630 | // /propfind/res3 |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
631 | // /propfind/sub |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
632 | // /propfind/sub/res4 |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
633 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
634 | int ret; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
635 | // Test 1 |
307
8787cb5ebab3
fix href in pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
306
diff
changeset
|
636 | init_test_webdav_method(&sn, &rq, &st, &pb, "PROPFIND", "/propfind/", PG_TEST_PROPFIND1); |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
637 | rq->davCollection = create_test_pgdav(sn, rq); |
315
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
638 | pblock_nvinsert("depth", "0", rq->headers); |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
639 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
640 | ret = webdav_propfind(pb, sn, rq); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
641 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
642 | UCX_TEST_ASSERT(ret == REQ_PROCEED, "webdav_propfind (1) failed"); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
643 | |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
644 | TestMultistatus *ms = test_parse_multistatus(st->buf->space, st->buf->size); |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
645 | UCX_TEST_ASSERT(ms, "propfind1: response is not valid xml"); |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
646 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
647 | TestResponse *r1 = MAP_GET(ms->responses, "/propfind/"); |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
648 | UCX_TEST_ASSERT(r1, "propfind1: missing /propfind/ response"); |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
649 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
650 | UCX_TEST_ASSERT(ms->responses->size == 1, "propfind1: wrong response count"); |
315
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
651 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
652 | TestProperty *p = MAP_GET(r1->properties, "DAV:resourcetype"); |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
653 | UCX_TEST_ASSERT(p, "propfind1: missing property 'resourcetype'"); |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
654 | UCX_TEST_ASSERT(p->status == 200, "propfind1: wrong status code for property 'resourcetype'"); |
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
655 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
656 | p = MAP_GET(r1->properties, "DAV:getlastmodified"); |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
657 | UCX_TEST_ASSERT(p, "propfind1: missing property 'getlastmodified'"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
658 | UCX_TEST_ASSERT(p->status == 200, "propfind1: wrong status code for property 'getlastmodified'"); |
315
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
659 | |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
660 | testutil_destroy_session(sn); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
661 | test_multistatus_destroy(ms); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
662 | testutil_iostream_destroy(st); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
663 | |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
664 | |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
665 | // Test 2 |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
666 | init_test_webdav_method(&sn, &rq, &st, &pb, "PROPFIND", "/propfind/", PG_TEST_PROPFIND2); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
667 | rq->davCollection = create_test_pgdav(sn, rq); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
668 | pblock_nvinsert("depth", "1", rq->headers); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
669 | |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
670 | ret = webdav_propfind(pb, sn, rq); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
671 | |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
672 | //printf("\n\n%.*s\n", (int)st->buf->size, st->buf->space); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
673 | |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
674 | UCX_TEST_ASSERT(ret == REQ_PROCEED, "webdav_propfind (2) failed"); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
675 | |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
676 | ms = test_parse_multistatus(st->buf->space, st->buf->size); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
677 | UCX_TEST_ASSERT(ms, "propfind2: response is not valid xml"); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
678 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
679 | r1 = MAP_GET(ms->responses, "/propfind/"); |
315
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
680 | UCX_TEST_ASSERT(r1, "propfind2: missing /propfind/ response"); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
681 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
682 | UCX_TEST_ASSERT(ms->responses->size == 5, "propfind2: wrong response count"); |
315
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
683 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
684 | r1 = MAP_GET(ms->responses, "/propfind/res2"); |
315
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
685 | UCX_TEST_ASSERT(r1, "propfind2: missing /propfind/res2 response"); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
686 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
687 | p = MAP_GET(r1->properties, "http://example.com/test"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
688 | UCX_TEST_ASSERT(p, "propfind2: missing property 'test'"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
689 | UCX_TEST_ASSERT(p->status == 200, "propfind2: wrong status code for property 'test'"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
690 | UCX_TEST_ASSERT(!strcmp(p->value, "res2test"), "propfind2: wrong property value"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
691 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
692 | |
315
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
693 | testutil_destroy_session(sn); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
694 | test_multistatus_destroy(ms); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
695 | testutil_iostream_destroy(st); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
696 | |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
697 | |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
698 | |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
699 | // Test 3 |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
700 | init_test_webdav_method(&sn, &rq, &st, &pb, "PROPFIND", "/propfind/", PG_TEST_PROPFIND2); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
701 | rq->davCollection = create_test_pgdav(sn, rq); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
702 | pblock_nvinsert("depth", "infinity", rq->headers); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
703 | |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
704 | ret = webdav_propfind(pb, sn, rq); |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
705 | |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
706 | //printf("\n\n%.*s\n", (int)st->buf->size, st->buf->space); |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
707 | |
315
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
708 | UCX_TEST_ASSERT(ret == REQ_PROCEED, "webdav_propfind (3) failed"); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
709 | |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
710 | ms = test_parse_multistatus(st->buf->space, st->buf->size); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
711 | UCX_TEST_ASSERT(ms, "propfind3: response is not valid xml"); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
712 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
713 | r1 = MAP_GET(ms->responses, "/propfind/"); |
315
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
714 | UCX_TEST_ASSERT(r1, "propfind3: missing /propfind/ response"); |
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
715 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
716 | UCX_TEST_ASSERT(ms->responses->size == 6, "propfind3: wrong response count"); |
315
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
717 | |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
718 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
719 | r1 = MAP_GET(ms->responses, "/propfind/res1"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
720 | UCX_TEST_ASSERT(r1, "propfind3: missing /propfind/sub/res1 response"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
721 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
722 | p = MAP_GET(r1->properties, "http://example.com/test"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
723 | UCX_TEST_ASSERT(p, "propfind3: missing property 'test'"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
724 | UCX_TEST_ASSERT(p->status == 200, "propfind3: wrong status code for property 'test'"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
725 | UCX_TEST_ASSERT(!strcmp(p->value, "testvalue"), "propfind3: wrong property value"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
726 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
727 | p = MAP_GET(r1->properties, "http://example.com/prop2"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
728 | UCX_TEST_ASSERT(p, "propfind3: missing property 'prop2'"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
729 | UCX_TEST_ASSERT(p->status == 200, "propfind3: wrong status code for property 'prop2'"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
730 | UCX_TEST_ASSERT(!strcmp(p->value, "value2"), "propfind3: wrong property value"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
731 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
732 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
733 | r1 = MAP_GET(ms->responses, "/propfind/sub/res4"); |
315
b608b7aa43a6
fix sql query for selecting specific properties
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
313
diff
changeset
|
734 | UCX_TEST_ASSERT(r1, "propfind3: missing /propfind/sub/res4 response"); |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
735 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
736 | testutil_destroy_session(sn); |
313
3ad0b65ec838
test pg propfind response
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
307
diff
changeset
|
737 | test_multistatus_destroy(ms); |
306
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
738 | testutil_iostream_destroy(st); |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
739 | |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
740 | UCX_TEST_END; |
e03737cea6e2
add semi functional pg propfind handler
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
298
diff
changeset
|
741 | } |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
742 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
743 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
744 | UCX_TEST(test_pg_webdav_propfind_allprop) { |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
745 | Session *sn; |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
746 | Request *rq; |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
747 | TestIOStream *st; |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
748 | pblock *pb; |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
749 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
750 | UCX_TEST_BEGIN; |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
751 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
752 | // test data: |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
753 | // |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
754 | // /propfind/ |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
755 | // /propfind/res1 (2 properties: test, prop2) |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
756 | // /propfind/res2 (1 property: test) |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
757 | // /propfind/res3 |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
758 | // /propfind/sub |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
759 | // /propfind/sub/res4 |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
760 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
761 | int ret; |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
762 | TestResponse *r1; |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
763 | TestProperty *p; |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
764 | // Test 1 |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
765 | init_test_webdav_method(&sn, &rq, &st, &pb, "PROPFIND", "/propfind/", PG_TEST_ALLPROP); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
766 | rq->davCollection = create_test_pgdav(sn, rq); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
767 | pblock_nvinsert("depth", "0", rq->headers); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
768 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
769 | ret = webdav_propfind(pb, sn, rq); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
770 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
771 | UCX_TEST_ASSERT(ret == REQ_PROCEED, "webdav_propfind (1) failed"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
772 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
773 | TestMultistatus *ms = test_parse_multistatus(st->buf->space, st->buf->size); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
774 | UCX_TEST_ASSERT(ms, "propfind1: response is not valid xml"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
775 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
776 | r1 = MAP_GET(ms->responses, "/propfind/"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
777 | UCX_TEST_ASSERT(r1, "propfind1: missing /propfind/ response"); |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
778 | UCX_TEST_ASSERT(ms->responses->size == 1, "propfind1: wrong response count"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
779 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
780 | p = MAP_GET(r1->properties, "DAV:resourcetype"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
781 | UCX_TEST_ASSERT(r1, "propfind1: missing resourcetype property"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
782 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
783 | testutil_destroy_session(sn); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
784 | test_multistatus_destroy(ms); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
785 | testutil_iostream_destroy(st); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
786 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
787 | // Test 2 |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
788 | init_test_webdav_method(&sn, &rq, &st, &pb, "PROPFIND", "/propfind/", PG_TEST_ALLPROP); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
789 | rq->davCollection = create_test_pgdav(sn, rq); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
790 | pblock_nvinsert("depth", "1", rq->headers); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
791 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
792 | ret = webdav_propfind(pb, sn, rq); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
793 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
794 | //printf("\n\n%.*s\n", (int)st->buf->size, st->buf->space); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
795 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
796 | UCX_TEST_ASSERT(ret == REQ_PROCEED, "webdav_propfind (2) failed"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
797 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
798 | ms = test_parse_multistatus(st->buf->space, st->buf->size); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
799 | UCX_TEST_ASSERT(ms, "propfind2: response is not valid xml"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
800 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
801 | r1 = MAP_GET(ms->responses, "/propfind/"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
802 | UCX_TEST_ASSERT(r1, "propfind2: missing /propfind/ response"); |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
803 | UCX_TEST_ASSERT(ms->responses->size == 5, "propfind2: wrong response count"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
804 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
805 | r1 = MAP_GET(ms->responses, "/propfind/res1"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
806 | UCX_TEST_ASSERT(r1, "propfind2: missing /propfind/res1 response"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
807 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
808 | p = MAP_GET(r1->properties, "DAV:resourcetype"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
809 | UCX_TEST_ASSERT(r1, "propfind2: missing resourcetype property"); |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
810 | p = MAP_GET(r1->properties, "http://example.com/test"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
811 | UCX_TEST_ASSERT(r1, "propfind2: missing test property"); |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
812 | p = MAP_GET(r1->properties, "http://example.com/prop2"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
813 | UCX_TEST_ASSERT(r1, "propfind2: missing prop2 property"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
814 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
815 | UCX_TEST_ASSERT(MAP_GET(ms->responses, "/propfind/res2"), "propfind2: missing /propfind/res2 response"); |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
816 | UCX_TEST_ASSERT(MAP_GET(ms->responses, "/propfind/res3"), "propfind2: missing /propfind/res3 response"); |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
817 | UCX_TEST_ASSERT(MAP_GET(ms->responses, "/propfind/sub/"), "propfind2: missing /propfind/sub response"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
818 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
819 | testutil_destroy_session(sn); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
820 | test_multistatus_destroy(ms); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
821 | testutil_iostream_destroy(st); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
822 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
823 | // Test 3 |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
824 | init_test_webdav_method(&sn, &rq, &st, &pb, "PROPFIND", "/propfind/", PG_TEST_ALLPROP); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
825 | rq->davCollection = create_test_pgdav(sn, rq); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
826 | pblock_nvinsert("depth", "infinity", rq->headers); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
827 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
828 | ret = webdav_propfind(pb, sn, rq); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
829 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
830 | UCX_TEST_ASSERT(ret == REQ_PROCEED, "webdav_propfind (2) failed"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
831 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
832 | ms = test_parse_multistatus(st->buf->space, st->buf->size); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
833 | UCX_TEST_ASSERT(ms, "propfind3: response is not valid xml"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
834 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
835 | r1 = MAP_GET(ms->responses, "/propfind/"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
836 | UCX_TEST_ASSERT(r1, "propfind3: missing /propfind/ response"); |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
837 | UCX_TEST_ASSERT(ms->responses->size == 6, "propfind3: wrong response count"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
838 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
839 | r1 = MAP_GET(ms->responses, "/propfind/res1"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
840 | UCX_TEST_ASSERT(r1, "propfind3: missing /propfind/res1 response"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
841 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
842 | p = MAP_GET(r1->properties, "DAV:resourcetype"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
843 | UCX_TEST_ASSERT(r1, "propfind3: missing resourcetype property"); |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
844 | p = MAP_GET(r1->properties, "http://example.com/test"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
845 | UCX_TEST_ASSERT(r1, "propfind3: missing test property"); |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
846 | p = MAP_GET(r1->properties, "http://example.com/prop2"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
847 | UCX_TEST_ASSERT(r1, "propfind3: missing prop2 property"); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
848 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
849 | UCX_TEST_ASSERT(MAP_GET(ms->responses, "/propfind/res2"), "propfind3: missing /propfind/res2 response"); |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
850 | UCX_TEST_ASSERT(MAP_GET(ms->responses, "/propfind/res3"), "propfind3: missing /propfind/res3 response"); |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
851 | UCX_TEST_ASSERT(MAP_GET(ms->responses, "/propfind/sub/"), "propfind3: missing /propfind/sub response"); |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
403
diff
changeset
|
852 | UCX_TEST_ASSERT(MAP_GET(ms->responses, "/propfind/sub/res4"), "propfind3: missing /propfind/sub/res4 response"); |
316
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
853 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
854 | testutil_destroy_session(sn); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
855 | test_multistatus_destroy(ms); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
856 | testutil_iostream_destroy(st); |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
857 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
858 | |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
859 | UCX_TEST_END; |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
860 | } |
4090fc1b1c52
add tests for propfind allprop
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
315
diff
changeset
|
861 | |
318
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
862 | UCX_TEST(test_pg_webdav_proppatch_set) { |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
863 | Session *sn; |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
864 | Request *rq; |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
865 | TestIOStream *st; |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
866 | pblock *pb; |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
867 | |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
868 | UCX_TEST_BEGIN; |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
869 | |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
870 | // test data: |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
871 | // |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
872 | // /propfind/ |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
873 | // /propfind/res1 (2 properties: test, prop2) |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
874 | // /propfind/res2 (1 property: test) |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
875 | // /propfind/res3 |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
876 | // /propfind/sub |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
877 | // /propfind/sub/res4 |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
878 | |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
879 | int ret; |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
880 | TestResponse *r1; |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
881 | TestProperty *p; |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
882 | // Test 1 |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
883 | init_test_webdav_method(&sn, &rq, &st, &pb, "PROPPATCH", "/proppatch/pp1", PG_TEST_PROPPATCH1); |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
884 | rq->davCollection = create_test_pgdav(sn, rq); |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
885 | |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
886 | ret = webdav_proppatch(pb, sn, rq); |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
887 | UCX_TEST_ASSERT(ret == REQ_PROCEED, "proppatch1 failed"); |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
888 | |
319
a9b9344875aa
add WebdavNSList <-> string converting functions
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
318
diff
changeset
|
889 | //printf("\n\n%.*s\n", (int)st->buf->size, st->buf->space); |
318
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
890 | |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
891 | TestMultistatus *ms = test_parse_multistatus(st->buf->space, st->buf->size); |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
892 | UCX_TEST_ASSERT(ms, "proppatch1 response is not valid xml"); |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
893 | |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
894 | testutil_destroy_session(sn); |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
895 | test_multistatus_destroy(ms); |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
896 | testutil_iostream_destroy(st); |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
897 | |
324
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
898 | // Test 2: xml property value |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
899 | init_test_webdav_method(&sn, &rq, &st, &pb, "PROPPATCH", "/proppatch/pp1", PG_TEST_PROPPATCH2); |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
900 | rq->davCollection = create_test_pgdav(sn, rq); |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
901 | |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
902 | ret = webdav_proppatch(pb, sn, rq); |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
903 | UCX_TEST_ASSERT(ret == REQ_PROCEED, "proppatch2 failed"); |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
904 | |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
905 | //printf("\n\n%.*s\n", (int)st->buf->size, st->buf->space); |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
906 | |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
907 | ms = test_parse_multistatus(st->buf->space, st->buf->size); |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
908 | UCX_TEST_ASSERT(ms, "proppatch2 response is not valid xml"); |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
909 | |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
910 | testutil_destroy_session(sn); |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
911 | test_multistatus_destroy(ms); |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
912 | testutil_iostream_destroy(st); |
44cf877b3d9f
add support for xml properties in propfind/proppatch requests (pg)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
319
diff
changeset
|
913 | |
318
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
914 | |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
915 | UCX_TEST_END; |
60870dbac94f
add basic pg proppatch implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
317
diff
changeset
|
916 | } |