2 // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
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)
7 // Official repository: https://github.com/boostorg/beast
10 // Test that header file is self-contained.
11 #include <boost/beast/http/status.hpp>
13 #include <boost/beast/_experimental/unit_test/suite.hpp>
20 : public beast::unit_test::suite
26 auto const check
= [&](status s
, int i
, status_class sc
)
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
);
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
);
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
);
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
);
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
);
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
);
99 BEAST_EXPECT(to_status_class(1) == status_class::unknown
);
100 BEAST_EXPECT(to_status_class(status::unknown
) == status_class::unknown
);
105 BEAST_EXPECT(obsolete_reason(v
) != "Unknown Status");
107 good(status::continue_
);
108 good(status::switching_protocols
);
109 good(status::processing
);
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
);
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
);
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
);
175 BEAST_DEFINE_TESTSUITE(beast
,http
,status
);