1 #include <gtest/gtest.h>
2 #include <davix.hpp>
3 #include <neon/neonsessionfactory.hpp>
4 #include <core/RedirectionResolver.hpp>
5
6 using namespace Davix;
7
TEST(testRedirectCache,testCacheSimple)8 TEST(testRedirectCache, testCacheSimple){
9 davix_set_log_level(DAVIX_LOG_ALL);
10
11
12 std::shared_ptr<Uri> dest(new Uri("http://sffsdfsd.com/dsffds/fsdfsdsdf"));
13 std::shared_ptr<Uri> dest2(new Uri("http://sffsdfsd.com/dsffds/fsdfsdsdf"));
14 Uri u("http://higgs.boson/is/watchingus");
15
16 Uri u_sec("https://higgs.boson/is/watchingus");
17 Uri u_port("http://higgs.boson:8668/is/watchingus");
18
19 RedirectionResolver f(true);
20 f.addRedirection("GET", u, dest);
21 ASSERT_TRUE(f.redirectionResolve("GET", u) == dest);
22 ASSERT_TRUE(f.redirectionResolve("GET", u_sec).get() == NULL);
23 ASSERT_TRUE(f.redirectionResolve("GET", u_port).get() == NULL);
24
25 // add redirection
26 f.addRedirection("GET", u_port, dest2);
27 ASSERT_TRUE(f.redirectionResolve("GET", u) != dest2);
28 ASSERT_TRUE(f.redirectionResolve("GET", u_port) == dest2);
29
30 // remove redirection
31 f.redirectionClean("GET", u);
32 ASSERT_TRUE(f.redirectionResolve("GET", u).get() == NULL);
33 ASSERT_TRUE(f.redirectionResolve("GET", u_port) == dest2);
34 }
35
36
37
TEST(testRedirectCache,testCacheChainRedirection)38 TEST(testRedirectCache, testCacheChainRedirection){
39 davix_set_log_level(DAVIX_LOG_ALL);
40
41 Uri u("http://higgs.boson/is/watchingus");
42
43 std::shared_ptr<Uri> url1(new Uri("http://sffsdfsd.com/dsffds/fsdfsdsdf"));
44 std::shared_ptr<Uri> url2(new Uri("http://server2.com/dsffds/sfdfdsfsdfdsfdsfds"));
45 std::shared_ptr<Uri> url3(new Uri("http://server2.com:8080/dsffds/sfdfdsfsdfdsfdsfds"));
46 std::shared_ptr<Uri> url4(new Uri("http://server3.com/dsffds/fsdaaaaa"));
47
48 RedirectionResolver f(true);
49 f.addRedirection("GET", u, url1);
50 f.addRedirection("GET",*url1, url2);
51 f.addRedirection("GET", *url2, url3);
52 f.addRedirection("GET", *url3, url4);
53
54 ASSERT_TRUE(f.redirectionResolve("GET", u) == url4);
55
56 ASSERT_TRUE(f.redirectionResolve("GET", *url2) == url4);
57 f.redirectionClean("GET", u);
58 ASSERT_TRUE(f.redirectionResolve("GET", u).get() == NULL);
59 ASSERT_TRUE(f.redirectionResolve("GET", *url2).get() == NULL);
60 ASSERT_TRUE(f.redirectionResolve("GET", *url4).get() == NULL);
61 }
62
63
TEST(testRedirectCache,test_GET_HEAD)64 TEST(testRedirectCache, test_GET_HEAD){
65 davix_set_log_level(DAVIX_LOG_ALL);
66
67 Uri u("http://higgs.boson/is/watchingus");
68
69 std::shared_ptr<Uri> url1(new Uri("http://sffsdfsd.com/dsffds/fsdfsdsdf"));
70 std::shared_ptr<Uri> url2(new Uri("http://server2.com/dsffds/sfdfdsfsdfdsfdsfds"));
71
72 RedirectionResolver f(true);
73 f.addRedirection("GET", u, url1);
74
75 ASSERT_TRUE(f.redirectionResolve("GET", u) == url1);
76 ASSERT_TRUE(f.redirectionResolve("HEAD", u) == url1);
77 ASSERT_TRUE(f.redirectionResolve("PUT", u).get() == NULL);
78 f.redirectionClean("GET", u);
79
80 ASSERT_TRUE(f.redirectionResolve("GET", u) == NULL);
81 ASSERT_TRUE(f.redirectionResolve("HEAD", u) == NULL);
82 f.addRedirection("PUT", u, url1);
83 ASSERT_TRUE(f.redirectionResolve("GET", u).get() == NULL);
84 ASSERT_TRUE(f.redirectionResolve("PUT", u) == url1);
85
86 f.addRedirection("HEAD", u, url1);
87
88 ASSERT_TRUE(f.redirectionResolve("GET", u) == url1);
89 ASSERT_TRUE(f.redirectionResolve("HEAD", u) == url1);
90 }
91