]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/beast/test/beast/http/status.cpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / libs / beast / test / beast / http / status.cpp
1 //
2 // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // Official repository: https://github.com/boostorg/beast
8 //
9
10 // Test that header file is self-contained.
11 #include <boost/beast/http/status.hpp>
12
13 #include <boost/beast/_experimental/unit_test/suite.hpp>
14
15 namespace boost {
16 namespace beast {
17 namespace http {
18
19 class status_test
20 : public beast::unit_test::suite
21 {
22 public:
23 void
24 testStatus()
25 {
26 auto const check = [&](status s, int i, status_class sc)
27 {
28 BEAST_EXPECT(int_to_status(i) == s);
29 BEAST_EXPECT(to_status_class(i) == sc);
30 BEAST_EXPECT(to_status_class(int_to_status(i)) == sc);
31 };
32 check(status::continue_ ,100, status_class::informational);
33 check(status::switching_protocols ,101, status_class::informational);
34 check(status::processing ,102, status_class::informational);
35
36 check(status::ok ,200, status_class::successful);
37 check(status::created ,201, status_class::successful);
38 check(status::accepted ,202, status_class::successful);
39 check(status::non_authoritative_information ,203, status_class::successful);
40 check(status::no_content ,204, status_class::successful);
41 check(status::reset_content ,205, status_class::successful);
42 check(status::partial_content ,206, status_class::successful);
43 check(status::multi_status ,207, status_class::successful);
44 check(status::already_reported ,208, status_class::successful);
45 check(status::im_used ,226, status_class::successful);
46
47 check(status::multiple_choices ,300, status_class::redirection);
48 check(status::moved_permanently ,301, status_class::redirection);
49 check(status::found ,302, status_class::redirection);
50 check(status::see_other ,303, status_class::redirection);
51 check(status::not_modified ,304, status_class::redirection);
52 check(status::use_proxy ,305, status_class::redirection);
53 check(status::temporary_redirect ,307, status_class::redirection);
54 check(status::permanent_redirect ,308, status_class::redirection);
55
56 check(status::bad_request ,400, status_class::client_error);
57 check(status::unauthorized ,401, status_class::client_error);
58 check(status::payment_required ,402, status_class::client_error);
59 check(status::forbidden ,403, status_class::client_error);
60 check(status::not_found ,404, status_class::client_error);
61 check(status::method_not_allowed ,405, status_class::client_error);
62 check(status::not_acceptable ,406, status_class::client_error);
63 check(status::proxy_authentication_required ,407, status_class::client_error);
64 check(status::request_timeout ,408, status_class::client_error);
65 check(status::conflict ,409, status_class::client_error);
66 check(status::gone ,410, status_class::client_error);
67 check(status::length_required ,411, status_class::client_error);
68 check(status::precondition_failed ,412, status_class::client_error);
69 check(status::payload_too_large ,413, status_class::client_error);
70 check(status::uri_too_long ,414, status_class::client_error);
71 check(status::unsupported_media_type ,415, status_class::client_error);
72 check(status::range_not_satisfiable ,416, status_class::client_error);
73 check(status::expectation_failed ,417, status_class::client_error);
74 check(status::misdirected_request ,421, status_class::client_error);
75 check(status::unprocessable_entity ,422, status_class::client_error);
76 check(status::locked ,423, status_class::client_error);
77 check(status::failed_dependency ,424, status_class::client_error);
78 check(status::upgrade_required ,426, status_class::client_error);
79 check(status::precondition_required ,428, status_class::client_error);
80 check(status::too_many_requests ,429, status_class::client_error);
81 check(status::request_header_fields_too_large ,431, status_class::client_error);
82 check(status::connection_closed_without_response ,444, status_class::client_error);
83 check(status::unavailable_for_legal_reasons ,451, status_class::client_error);
84 check(status::client_closed_request ,499, status_class::client_error);
85
86 check(status::internal_server_error ,500, status_class::server_error);
87 check(status::not_implemented ,501, status_class::server_error);
88 check(status::bad_gateway ,502, status_class::server_error);
89 check(status::service_unavailable ,503, status_class::server_error);
90 check(status::gateway_timeout ,504, status_class::server_error);
91 check(status::http_version_not_supported ,505, status_class::server_error);
92 check(status::variant_also_negotiates ,506, status_class::server_error);
93 check(status::insufficient_storage ,507, status_class::server_error);
94 check(status::loop_detected ,508, status_class::server_error);
95 check(status::not_extended ,510, status_class::server_error);
96 check(status::network_authentication_required ,511, status_class::server_error);
97 check(status::network_connect_timeout_error ,599, status_class::server_error);
98
99 BEAST_EXPECT(to_status_class(1) == status_class::unknown);
100 BEAST_EXPECT(to_status_class(status::unknown) == status_class::unknown);
101
102 auto const good =
103 [&](status v)
104 {
105 BEAST_EXPECT(obsolete_reason(v) != "Unknown Status");
106 };
107 good(status::continue_);
108 good(status::switching_protocols);
109 good(status::processing);
110 good(status::ok);
111 good(status::created);
112 good(status::accepted);
113 good(status::non_authoritative_information);
114 good(status::no_content);
115 good(status::reset_content);
116 good(status::partial_content);
117 good(status::multi_status);
118 good(status::already_reported);
119 good(status::im_used);
120 good(status::multiple_choices);
121 good(status::moved_permanently);
122 good(status::found);
123 good(status::see_other);
124 good(status::not_modified);
125 good(status::use_proxy);
126 good(status::temporary_redirect);
127 good(status::permanent_redirect);
128 good(status::bad_request);
129 good(status::unauthorized);
130 good(status::payment_required);
131 good(status::forbidden);
132 good(status::not_found);
133 good(status::method_not_allowed);
134 good(status::not_acceptable);
135 good(status::proxy_authentication_required);
136 good(status::request_timeout);
137 good(status::conflict);
138 good(status::gone);
139 good(status::length_required);
140 good(status::precondition_failed);
141 good(status::payload_too_large);
142 good(status::uri_too_long);
143 good(status::unsupported_media_type);
144 good(status::range_not_satisfiable);
145 good(status::expectation_failed);
146 good(status::misdirected_request);
147 good(status::unprocessable_entity);
148 good(status::locked);
149 good(status::failed_dependency);
150 good(status::upgrade_required);
151 good(status::precondition_required);
152 good(status::too_many_requests);
153 good(status::request_header_fields_too_large);
154 good(status::unavailable_for_legal_reasons);
155 good(status::internal_server_error);
156 good(status::not_implemented);
157 good(status::bad_gateway);
158 good(status::service_unavailable);
159 good(status::gateway_timeout);
160 good(status::http_version_not_supported);
161 good(status::variant_also_negotiates);
162 good(status::insufficient_storage);
163 good(status::loop_detected);
164 good(status::not_extended);
165 good(status::network_authentication_required);
166 }
167
168 void
169 run()
170 {
171 testStatus();
172 }
173 };
174
175 BEAST_DEFINE_TESTSUITE(beast,http,status);
176
177 } // http
178 } // beast
179 } // boost
180