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