A batteries included HTTP/1.1 client in OCaml
at main 112 lines 3.8 kB view raw
1(*--------------------------------------------------------------------------- 2 Copyright (c) 2025 Anil Madhavapeddy <anil@recoil.org>. All rights reserved. 3 SPDX-License-Identifier: ISC 4 ---------------------------------------------------------------------------*) 5 6(** Tests for Response_limits module *) 7 8module Response_limits = Requests.Response_limits 9 10(** {1 Default Values} *) 11 12let test_default_body_size () = 13 let d = Response_limits.default in 14 (* 100MB = 100 * 1024 * 1024 = 104857600 *) 15 Alcotest.(check int64) 16 "max_response_body_size" 104857600L 17 (Response_limits.max_response_body_size d) 18 19let test_default_header_size () = 20 let d = Response_limits.default in 21 (* 16KB = 16 * 1024 = 16384 *) 22 Alcotest.(check int) 23 "max_header_size" 16384 24 (Response_limits.max_header_size d) 25 26let test_default_header_count () = 27 let d = Response_limits.default in 28 Alcotest.(check int) 29 "max_header_count" 100 30 (Response_limits.max_header_count d) 31 32let test_default_decompressed_size () = 33 let d = Response_limits.default in 34 (* 100MB *) 35 Alcotest.(check int64) 36 "max_decompressed_size" 104857600L 37 (Response_limits.max_decompressed_size d) 38 39let test_default_compression_ratio () = 40 let d = Response_limits.default in 41 let expected = 100.0 in 42 let actual = Response_limits.max_compression_ratio d in 43 Alcotest.(check bool) 44 "max_compression_ratio" true 45 (Float.abs (actual -. expected) < 0.001) 46 47(** {1 Custom Values} *) 48 49let test_make_custom () = 50 let limits = 51 Response_limits.v ~max_response_body_size:1024L ~max_header_size:512 52 ~max_header_count:50 ~max_decompressed_size:2048L 53 ~max_compression_ratio:10.0 () 54 in 55 Alcotest.(check int64) 56 "custom body size" 1024L 57 (Response_limits.max_response_body_size limits); 58 Alcotest.(check int) 59 "custom header size" 512 60 (Response_limits.max_header_size limits); 61 Alcotest.(check int) 62 "custom header count" 50 63 (Response_limits.max_header_count limits); 64 Alcotest.(check int64) 65 "custom decompressed size" 2048L 66 (Response_limits.max_decompressed_size limits); 67 Alcotest.(check bool) 68 "custom compression ratio" true 69 (Float.abs (Response_limits.max_compression_ratio limits -. 10.0) < 0.001) 70 71let test_make_partial () = 72 (* Only override some values, rest should be defaults *) 73 let limits = Response_limits.v ~max_header_count:200 () in 74 Alcotest.(check int) 75 "overridden header count" 200 76 (Response_limits.max_header_count limits); 77 (* Other values should be defaults *) 78 Alcotest.(check int64) 79 "default body size" 104857600L 80 (Response_limits.max_response_body_size limits) 81 82let test_make_zero_limits () = 83 let limits = 84 Response_limits.v ~max_response_body_size:0L ~max_header_size:0 85 ~max_header_count:0 () 86 in 87 Alcotest.(check int64) 88 "zero body size" 0L 89 (Response_limits.max_response_body_size limits); 90 Alcotest.(check int) 91 "zero header size" 0 92 (Response_limits.max_header_size limits); 93 Alcotest.(check int) 94 "zero header count" 0 95 (Response_limits.max_header_count limits) 96 97(** {1 Test Suite} *) 98 99let suite = 100 ( "response_limits", 101 [ 102 Alcotest.test_case "body size" `Quick test_default_body_size; 103 Alcotest.test_case "header size" `Quick test_default_header_size; 104 Alcotest.test_case "header count" `Quick test_default_header_count; 105 Alcotest.test_case "decompressed size" `Quick 106 test_default_decompressed_size; 107 Alcotest.test_case "compression ratio" `Quick 108 test_default_compression_ratio; 109 Alcotest.test_case "full custom" `Quick test_make_custom; 110 Alcotest.test_case "partial override" `Quick test_make_partial; 111 Alcotest.test_case "zero limits" `Quick test_make_zero_limits; 112 ] )