Skip to main content

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/// Liquorice authentication configuration
32pub struct LiquoriceAuth {
33    pub solver: String,
34    pub key: String,
35}
36
37/// Read Liquorice authentication from environment variables
38/// Returns the LIQUORICE_USER and LIQUORICE_KEY environment variables
39pub fn get_liquorice_auth() -> Result<LiquoriceAuth, RFQError> {
40    let solver = env::var("LIQUORICE_USER").map_err(|_| {
41        RFQError::InvalidInput("LIQUORICE_USER environment variable is required".into())
42    })?;
43
44    let key = env::var("LIQUORICE_KEY").map_err(|_| {
45        RFQError::InvalidInput("LIQUORICE_KEY environment variable is required".into())
46    })?;
47
48    Ok(LiquoriceAuth { solver, key })
49}
50
51/// Read Bebop authentication from environment variables
52/// Returns the BEBOP_USER and BEBOP_KEY environment variables
53pub fn get_bebop_auth() -> Result<BebopAuth, RFQError> {
54    let user = env::var("BEBOP_USER").map_err(|_| {
55        RFQError::InvalidInput("BEBOP_USER environment variable is required".into())
56    })?;
57
58    let key = env::var("BEBOP_KEY")
59        .map_err(|_| RFQError::InvalidInput("BEBOP_KEY environment variable is required".into()))?;
60
61    Ok(BebopAuth { user, key })
62}
63
64#[cfg(test)]
65mod tests {
66    use std::env;
67
68    use super::*;
69
70    #[test]
71    fn test_hashflow_auth_success() {
72        env::set_var("HASHFLOW_USER", "test_user");
73        env::set_var("HASHFLOW_KEY", "test_key");
74
75        let auth = get_hashflow_auth().unwrap();
76        assert_eq!(auth.user, "test_user");
77        assert_eq!(auth.key, "test_key");
78
79        env::remove_var("HASHFLOW_USER");
80        env::remove_var("HASHFLOW_KEY");
81    }
82
83    #[test]
84    fn test_hashflow_auth_missing_user() {
85        env::remove_var("HASHFLOW_USER");
86        env::set_var("HASHFLOW_KEY", "test_key");
87
88        let result = get_hashflow_auth();
89        assert!(result.is_err());
90
91        env::remove_var("HASHFLOW_KEY");
92    }
93
94    #[test]
95    fn test_hashflow_auth_missing_key() {
96        env::set_var("HASHFLOW_USER", "test_user");
97        env::remove_var("HASHFLOW_KEY");
98
99        let result = get_hashflow_auth();
100        assert!(result.is_err());
101
102        env::remove_var("HASHFLOW_USER");
103    }
104
105    #[test]
106    fn test_bebop_auth_success() {
107        env::set_var("BEBOP_USER", "test_user");
108        env::set_var("BEBOP_KEY", "test_key");
109
110        let auth = get_bebop_auth().unwrap();
111        assert_eq!(auth.user, "test_user");
112        assert_eq!(auth.key, "test_key");
113
114        env::remove_var("BEBOP_USER");
115        env::remove_var("BEBOP_KEY");
116    }
117
118    #[test]
119    fn test_bebop_auth_missing_user() {
120        env::remove_var("BEBOP_USER");
121        env::set_var("BEBOP_KEY", "test_key");
122
123        let result = get_bebop_auth();
124        assert!(result.is_err());
125
126        env::remove_var("BEBOP_KEY");
127    }
128
129    #[test]
130    fn test_bebop_auth_missing_key() {
131        env::set_var("BEBOP_USER", "test_user");
132        env::remove_var("BEBOP_KEY");
133
134        let result = get_bebop_auth();
135        assert!(result.is_err());
136
137        env::remove_var("BEBOP_USER");
138    }
139}