src/server/test/testutils.c

branch
webdav
changeset 211
2160585200ac
child 232
499711b2a970
equal deleted inserted replaced
210:21274e5950af 211:2160585200ac
1 /*
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3 *
4 * Copyright 2019 Olaf Wintermann. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 #include <stdio.h>
30 #include <stdlib.h>
31
32 #include <ucx/string.h>
33 #include <ucx/utils.h>
34
35 #include "../util/pblock.h"
36
37 #include "testutils.h"
38
39 Session* testutil_session(void) {
40 pool_handle_t *pool = pool_create();
41 NSAPISession *sn = nsapisession_create(pool);
42
43 return &sn->sn;
44 }
45
46 Request* testutil_request(pool_handle_t *pool, const char *method, const char *uri) {
47 NSAPIRequest *rq = pool_malloc(pool, sizeof(NSAPIRequest));
48
49 HTTPRequest httprequest;
50 ZERO(&httprequest, sizeof(HTTPRequest));
51 request_initialize(pool, &httprequest, rq);
52
53 sstr_t clf = ucx_sprintf("%s %s HTTP/1.1", method, uri);
54 pblock_kvinsert(
55 pb_key_clf_request,
56 clf.ptr,
57 clf.length,
58 rq->rq.reqpb);
59 free(clf.ptr);
60
61 pblock_nvinsert(
62 "method",
63 method,
64 rq->rq.reqpb);
65
66 pblock_nvinsert(
67 "protocol",
68 "HTTP/1.1",
69 rq->rq.reqpb);
70
71 pblock_nvinsert("uri", uri, rq->rq.reqpb);
72
73 return &rq->rq;
74 }
75
76 void testutil_request_body(Session *sn, Request *rq, const char *body, size_t len) {
77 sstr_t cl = ucx_sprintf("%d", (int)len);
78 pblock_nvreplace("content-length", cl.ptr, rq->headers);
79 free(cl.ptr);
80
81 netbuf *inbuf = pool_malloc(sn->pool, sizeof(netbuf));
82 inbuf->sd = NULL;
83 inbuf->inbuf = pool_malloc(sn->pool, len);
84 inbuf->pos = 0;
85 inbuf->maxsize = len;
86 inbuf->cursize = len;
87 sn->inbuf = inbuf;
88
89 memcpy(inbuf->inbuf, body, len);
90 }
91
92 void testutil_destroy_session(Session *sn) {
93 pool_destroy(sn->pool);
94 }

mercurial