static_web_server/
testing.rs1#[doc(hidden)]
11pub mod fixtures {
12 use std::{path::PathBuf, sync::Arc};
13
14 use crate::{
15 handler::{RequestHandler, RequestHandlerOpts},
16 settings::cli::General,
17 settings::Advanced,
18 Settings,
19 };
20
21 pub const REMOTE_ADDR: &str = "127.0.0.1:1234";
23
24 pub fn fixture_settings(fixture_toml: &str) -> Settings {
26 let f = PathBuf::from("tests/fixtures").join(fixture_toml);
28 std::env::set_var("SERVER_CONFIG_FILE", f);
29 Settings::get_unparsed(false).unwrap()
30 }
31
32 pub fn fixture_req_handler_opts(
34 general: General,
35 advanced: Option<Advanced>,
36 ) -> RequestHandlerOpts {
37 #[cfg(not(any(
38 feature = "compression",
39 feature = "compression-gzip",
40 feature = "compression-brotli",
41 feature = "compression-zstd",
42 feature = "compression-deflate"
43 )))]
44 let compression = false;
45 #[cfg(not(any(
46 feature = "compression",
47 feature = "compression-gzip",
48 feature = "compression-brotli",
49 feature = "compression-zstd",
50 feature = "compression-deflate"
51 )))]
52 let compression_static = false;
53 #[cfg(any(
54 feature = "compression",
55 feature = "compression-gzip",
56 feature = "compression-brotli",
57 feature = "compression-zstd",
58 feature = "compression-deflate"
59 ))]
60 let compression = general.compression;
61 #[cfg(any(
62 feature = "compression",
63 feature = "compression-gzip",
64 feature = "compression-brotli",
65 feature = "compression-zstd",
66 feature = "compression-deflate"
67 ))]
68 let compression_static = general.compression_static;
69
70 RequestHandlerOpts {
71 root_dir: general.root,
72 compression,
73 compression_static,
74 #[cfg(any(
75 feature = "compression",
76 feature = "compression-gzip",
77 feature = "compression-brotli",
78 feature = "compression-zstd",
79 feature = "compression-deflate"
80 ))]
81 compression_level: general.compression_level,
82 #[cfg(feature = "directory-listing")]
83 dir_listing: general.directory_listing,
84 #[cfg(feature = "directory-listing")]
85 dir_listing_order: general.directory_listing_order,
86 #[cfg(feature = "directory-listing")]
87 dir_listing_format: general.directory_listing_format,
88 #[cfg(feature = "directory-listing-download")]
89 dir_listing_download: general.directory_listing_download,
90 cors: None,
92 security_headers: general.security_headers,
93 cache_control_headers: general.cache_control_headers,
94 page404: general.page404,
95 page50x: general.page50x,
96 #[cfg(feature = "fallback-page")]
98 page_fallback: vec![],
99 #[cfg(feature = "basic-auth")]
100 basic_auth: general.basic_auth,
101 log_remote_address: general.log_remote_address,
102 log_x_real_ip: general.log_x_real_ip,
103 log_forwarded_for: general.log_forwarded_for,
104 trusted_proxies: general.trusted_proxies,
105 redirect_trailing_slash: general.redirect_trailing_slash,
106 ignore_hidden_files: general.ignore_hidden_files,
107 disable_symlinks: general.disable_symlinks,
108 index_files: vec![general.index_files],
109 health: general.health,
110 #[cfg(all(unix, feature = "experimental"))]
111 experimental_metrics: general.experimental_metrics,
112 maintenance_mode: general.maintenance_mode,
113 maintenance_mode_status: general.maintenance_mode_status,
114 maintenance_mode_file: general.maintenance_mode_file,
115 #[cfg(feature = "experimental")]
116 memory_cache: None,
117 advanced_opts: advanced,
118 }
119 }
120
121 pub fn fixture_req_handler(req_handler_opts: RequestHandlerOpts) -> RequestHandler {
123 RequestHandler {
124 opts: Arc::from(req_handler_opts),
125 }
126 }
127}