| 27 */ |
27 */ |
| 28 |
28 |
| 29 #include "rewrite.h" |
29 #include "rewrite.h" |
| 30 |
30 |
| 31 #include "../daemon/rewrite.h" |
31 #include "../daemon/rewrite.h" |
| |
32 #include "../daemon/config.h" |
| 32 #include <cx/mempool.h> |
33 #include <cx/mempool.h> |
| |
34 #include <cx/linked_list.h> |
| 33 #include <string.h> |
35 #include <string.h> |
| 34 |
36 |
| 35 CX_TEST(test_rewrite_rule_create) { |
37 CX_TEST(test_rewrite_rule_create) { |
| 36 CxMempool *mp = cxMempoolCreate(100, CX_MEMPOOL_TYPE_ADVANCED); |
38 CxMempool *mp = cxMempoolCreate(100, CX_MEMPOOL_TYPE_ADVANCED); |
| 37 const CxAllocator *a = mp->allocator; |
39 const CxAllocator *a = mp->allocator; |
| 38 |
40 |
| |
41 ServerConfiguration cfg = { NULL }; |
| |
42 cfg.a = a; |
| |
43 cfg.destr = cxLinkedListCreate(a, NULL, sizeof(ScfgDestr)); |
| |
44 |
| 39 CX_TEST_DO { |
45 CX_TEST_DO { |
| 40 RewriteRule *rule = rewrite_rule_create(a, cx_mutstr(NULL), cx_mutstr("/rewrite")); |
46 RewriteRule *rule = rewrite_rule_create(&cfg, cx_mutstr(NULL), cx_mutstr("/rewrite")); |
| 41 CX_TEST_ASSERT(rule != NULL); |
47 CX_TEST_ASSERT(rule != NULL); |
| 42 CX_TEST_ASSERT(!rule->has_regex); |
48 CX_TEST_ASSERT(!rule->has_regex); |
| 43 CX_TEST_ASSERT(rule->url != NULL); |
49 CX_TEST_ASSERT(rule->url != NULL); |
| 44 |
50 |
| 45 cxmutstr newuri = string_template_build_string(rule->url, a, NULL, NULL); |
51 cxmutstr newuri = string_template_build_string(rule->url, a, NULL, NULL); |
| 46 CX_TEST_ASSERT(!cx_strcmp(newuri, "/rewrite")); |
52 CX_TEST_ASSERT(!cx_strcmp(newuri, "/rewrite")); |
| 47 |
53 |
| 48 RewriteRule *rule2 = rewrite_rule_create(a, cx_mutstr("/path/(.*)/files/"), cx_mutstr("/rewrite/$1/")); |
54 RewriteRule *rule2 = rewrite_rule_create(&cfg, cx_mutstr("/path/(.*)/files/"), cx_mutstr("/rewrite/$1/")); |
| 49 CX_TEST_ASSERT(rule2 != NULL); |
55 CX_TEST_ASSERT(rule2 != NULL); |
| 50 CX_TEST_ASSERT(rule2->has_regex); |
56 CX_TEST_ASSERT(rule2->has_regex); |
| 51 CX_TEST_ASSERT(rule2->url != NULL); |
57 CX_TEST_ASSERT(rule2->url != NULL); |
| 52 } |
58 } |
| 53 |
59 |
| |
60 server_config_destroy(&cfg); |
| 54 cxMempoolFree(mp); |
61 cxMempoolFree(mp); |
| 55 } |
62 } |
| 56 |
63 |
| 57 CX_TEST(test_rewrite_url_no_regex) { |
64 CX_TEST(test_rewrite_url_no_regex) { |
| 58 CxMempool *mp = cxMempoolCreate(100, CX_MEMPOOL_TYPE_ADVANCED); |
65 CxMempool *mp = cxMempoolCreate(100, CX_MEMPOOL_TYPE_ADVANCED); |
| 59 const CxAllocator *a = mp->allocator; |
66 const CxAllocator *a = mp->allocator; |
| |
67 |
| |
68 ServerConfiguration cfg = { NULL }; |
| |
69 cfg.a = a; |
| |
70 cfg.destr = cxLinkedListCreate(a, NULL, sizeof(ScfgDestr)); |
| 60 |
71 |
| 61 RewriteRule rule; |
72 RewriteRule rule; |
| 62 memset(&rule, 0, sizeof(RewriteRule)); |
73 memset(&rule, 0, sizeof(RewriteRule)); |
| 63 rule.url = string_template_compile(a, cx_str("/static/")); |
74 rule.url = string_template_compile(a, cx_str("/static/")); |
| 64 |
75 |