tycho_simulation/rfq/
constants.rs

1use std::env;
2
3use crate::rfq::errors::RFQError;
4
5/// Hashflow authentication configuration
6pub struct HashflowAuth {
7    pub user: String,
8    pub key: String,
9}
10
11/// Bebop authentication configuration
12pub struct BebopAuth {
13    pub user: String,
14    pub key: String,
15}
16
17/// Read Hashflow authentication from environment variables
18/// Returns the HASHFLOW_USER and HASHFLOW_KEY environment variables
19pub fn get_hashflow_auth() -> Result<HashflowAuth, RFQError> {
20    let user = env::var("HASHFLOW_USER").map_err(|_| {
21        RFQError::InvalidInput("HASHFLOW_USER environment variable is required".into())
22    })?;
23
24    let key = env::var("HASHFLOW_KEY").map_err(|_| {
25        RFQError::InvalidInput("HASHFLOW_KEY environment variable is required".into())
26    })?;
27
28    Ok(HashflowAuth { user, key })
29}
30
31/// Read Bebop authentication from environment variables
32/// Returns the BEBOP_USER and BEBOP_KEY environment variables
33pub fn get_bebop_auth() -> Result<BebopAuth, RFQError> {
34    let user = env::var("BEBOP_USER").map_err(|_| {
35        RFQError::InvalidInput("BEBOP_USER environment variable is required".into())
36    })?;
37
38    let key = env::var("BEBOP_KEY")
39        .map_err(|_| RFQError::InvalidInput("BEBOP_KEY environment variable is required".into()))?;
40
41    Ok(BebopAuth { user, key })
42}
43
44#[cfg(test)]
45mod tests {
46    use std::env;
47
48    use super::*;
49
50    #[test]
51    fn test_hashflow_auth_success() {
52        env::set_var("HASHFLOW_USER", "test_user");
53        env::set_var("HASHFLOW_KEY", "test_key");
54
55        let auth = get_hashflow_auth().unwrap();
56        assert_eq!(auth.user, "test_user");
57        assert_eq!(auth.key, "test_key");
58
59        env::remove_var("HASHFLOW_USER");
60        env::remove_var("HASHFLOW_KEY");
61    }
62
63    #[test]
64    fn test_hashflow_auth_missing_user() {
65        env::remove_var("HASHFLOW_USER");
66        env::set_var("HASHFLOW_KEY", "test_key");
67
68        let result = get_hashflow_auth();
69        assert!(result.is_err());
70
71        env::remove_var("HASHFLOW_KEY");
72    }
73
74    #[test]
75    fn test_hashflow_auth_missing_key() {
76        env::set_var("HASHFLOW_USER", "test_user");
77        env::remove_var("HASHFLOW_KEY");
78
79        let result = get_hashflow_auth();
80        assert!(result.is_err());
81
82        env::remove_var("HASHFLOW_USER");
83    }
84
85    #[test]
86    fn test_bebop_auth_success() {
87        env::set_var("BEBOP_USER", "test_user");
88        env::set_var("BEBOP_KEY", "test_key");
89
90        let auth = get_bebop_auth().unwrap();
91        assert_eq!(auth.user, "test_user");
92        assert_eq!(auth.key, "test_key");
93
94        env::remove_var("BEBOP_USER");
95        env::remove_var("BEBOP_KEY");
96    }
97
98    #[test]
99    fn test_bebop_auth_missing_user() {
100        env::remove_var("BEBOP_USER");
101        env::set_var("BEBOP_KEY", "test_key");
102
103        let result = get_bebop_auth();
104        assert!(result.is_err());
105
106        env::remove_var("BEBOP_KEY");
107    }
108
109    #[test]
110    fn test_bebop_auth_missing_key() {
111        env::set_var("BEBOP_USER", "test_user");
112        env::remove_var("BEBOP_KEY");
113
114        let result = get_bebop_auth();
115        assert!(result.is_err());
116
117        env::remove_var("BEBOP_USER");
118    }
119}