(*--------------------------------------------------------------------------- Copyright (c) 2025 Anil Madhavapeddy . All rights reserved. SPDX-License-Identifier: ISC ---------------------------------------------------------------------------*) (** Tests for Response_limits module *) module Response_limits = Requests.Response_limits (** {1 Default Values} *) let test_default_body_size () = let d = Response_limits.default in (* 100MB = 100 * 1024 * 1024 = 104857600 *) Alcotest.(check int64) "max_response_body_size" 104857600L (Response_limits.max_response_body_size d) let test_default_header_size () = let d = Response_limits.default in (* 16KB = 16 * 1024 = 16384 *) Alcotest.(check int) "max_header_size" 16384 (Response_limits.max_header_size d) let test_default_header_count () = let d = Response_limits.default in Alcotest.(check int) "max_header_count" 100 (Response_limits.max_header_count d) let test_default_decompressed_size () = let d = Response_limits.default in (* 100MB *) Alcotest.(check int64) "max_decompressed_size" 104857600L (Response_limits.max_decompressed_size d) let test_default_compression_ratio () = let d = Response_limits.default in let expected = 100.0 in let actual = Response_limits.max_compression_ratio d in Alcotest.(check bool) "max_compression_ratio" true (Float.abs (actual -. expected) < 0.001) (** {1 Custom Values} *) let test_make_custom () = let limits = Response_limits.v ~max_response_body_size:1024L ~max_header_size:512 ~max_header_count:50 ~max_decompressed_size:2048L ~max_compression_ratio:10.0 () in Alcotest.(check int64) "custom body size" 1024L (Response_limits.max_response_body_size limits); Alcotest.(check int) "custom header size" 512 (Response_limits.max_header_size limits); Alcotest.(check int) "custom header count" 50 (Response_limits.max_header_count limits); Alcotest.(check int64) "custom decompressed size" 2048L (Response_limits.max_decompressed_size limits); Alcotest.(check bool) "custom compression ratio" true (Float.abs (Response_limits.max_compression_ratio limits -. 10.0) < 0.001) let test_make_partial () = (* Only override some values, rest should be defaults *) let limits = Response_limits.v ~max_header_count:200 () in Alcotest.(check int) "overridden header count" 200 (Response_limits.max_header_count limits); (* Other values should be defaults *) Alcotest.(check int64) "default body size" 104857600L (Response_limits.max_response_body_size limits) let test_make_zero_limits () = let limits = Response_limits.v ~max_response_body_size:0L ~max_header_size:0 ~max_header_count:0 () in Alcotest.(check int64) "zero body size" 0L (Response_limits.max_response_body_size limits); Alcotest.(check int) "zero header size" 0 (Response_limits.max_header_size limits); Alcotest.(check int) "zero header count" 0 (Response_limits.max_header_count limits) (** {1 Test Suite} *) let suite = ( "response_limits", [ Alcotest.test_case "body size" `Quick test_default_body_size; Alcotest.test_case "header size" `Quick test_default_header_size; Alcotest.test_case "header count" `Quick test_default_header_count; Alcotest.test_case "decompressed size" `Quick test_default_decompressed_size; Alcotest.test_case "compression ratio" `Quick test_default_compression_ratio; Alcotest.test_case "full custom" `Quick test_make_custom; Alcotest.test_case "partial override" `Quick test_make_partial; Alcotest.test_case "zero limits" `Quick test_make_zero_limits; ] )