elif_http/testing/
server.rs1use crate::testing::container::create_test_container;
4use crate::{ElifRouter, HttpConfig, Server};
5use std::net::SocketAddr;
6
7pub struct TestServerBuilder {
9 config: HttpConfig,
10 router: Option<ElifRouter>,
11}
12
13impl TestServerBuilder {
14 pub fn new() -> Self {
15 Self {
16 config: HttpConfig::default(),
17 router: None,
18 }
19 }
20
21 pub fn with_config(mut self, config: HttpConfig) -> Self {
22 self.config = config;
23 self
24 }
25
26 pub fn with_router(mut self, router: ElifRouter) -> Self {
27 self.router = Some(router);
28 self
29 }
30
31 pub fn build(self) -> Server {
32 let container = create_test_container();
33 let mut server =
34 Server::with_container(container, self.config).expect("Failed to create test server");
35
36 if let Some(router) = self.router {
37 server.use_router(router);
38 }
39
40 server
41 }
42}
43
44impl Default for TestServerBuilder {
45 fn default() -> Self {
46 Self::new()
47 }
48}
49
50pub fn get_test_port() -> u16 {
52 3001
55}
56
57pub fn test_socket_addr() -> SocketAddr {
59 format!("127.0.0.1:{}", get_test_port()).parse().unwrap()
60}