pulith_fetch/segment/
validation.rs1pub fn is_redirect(status: u16) -> bool {
22 matches!(status, 301 | 302 | 303 | 307 | 308)
23}
24
25#[cfg(test)]
26mod tests {
27 use super::*;
28
29 #[test]
30 fn test_is_redirect_all_codes() {
31 assert!(is_redirect(301)); assert!(is_redirect(302)); assert!(is_redirect(303)); assert!(is_redirect(307)); assert!(is_redirect(308)); }
38
39 #[test]
40 fn test_is_redirect_success_codes() {
41 assert!(!is_redirect(200)); assert!(!is_redirect(201)); assert!(!is_redirect(204)); }
46
47 #[test]
48 fn test_is_redirect_client_error_codes() {
49 assert!(!is_redirect(400)); assert!(!is_redirect(401)); assert!(!is_redirect(403)); assert!(!is_redirect(404)); assert!(!is_redirect(429)); }
56
57 #[test]
58 fn test_is_redirect_server_error_codes() {
59 assert!(!is_redirect(500)); assert!(!is_redirect(502)); assert!(!is_redirect(503)); assert!(!is_redirect(504)); }
65
66 #[test]
67 fn test_is_redirect_informational_codes() {
68 assert!(!is_redirect(100)); assert!(!is_redirect(101)); assert!(!is_redirect(102)); }
73
74 #[test]
75 fn test_is_redirect_edge_cases() {
76 assert!(!is_redirect(300)); assert!(!is_redirect(304)); assert!(!is_redirect(305)); assert!(!is_redirect(306)); }
82
83 #[test]
84 fn test_is_redirect_invalid_codes() {
85 assert!(!is_redirect(0));
87 assert!(!is_redirect(99));
88 assert!(!is_redirect(600));
89 assert!(!is_redirect(1000));
90 }
91
92 #[test]
93 fn test_is_redirect_comprehensive_coverage() {
94 let redirect_codes = [301, 302, 303, 307, 308];
96 let non_redirect_codes = [
97 100, 101, 102, 200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 304, 305, 306,
98 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
99 417, 418, 421, 422, 423, 424, 425, 426, 428, 429, 431, 451, 500, 501, 502, 503, 504,
100 505, 506, 507, 508, 510, 511,
101 ];
102
103 for code in &redirect_codes {
104 assert!(is_redirect(*code), "Code {} should be a redirect", code);
105 }
106
107 for code in &non_redirect_codes {
108 assert!(
109 !is_redirect(*code),
110 "Code {} should NOT be a redirect",
111 code
112 );
113 }
114 }
115}