in src/proxy/src/config_parser.rs [102:154]
fn test_parse_config() {
let config_string = r#"fips = yes
foreground = quiet
socket = l:SO_REUSEADDR=yes
socket = a:SO_BINDTODEVICE=lo
debug = debug
output = /var/log/amazon/efs/fs-12341234.home.ec2-user.efs.21036.efs-proxy.log
pid = /var/run/efs/fs-12341234.home.ec2-user.efs.21036+/stunnel.pid
port = 8081
initial_partition_ip = 127.0.0.1:2049
[efs]
accept = 127.0.0.1:21036
connect = fs-12341234.efs.us-east-1.amazonaws.com:2049
sslVersion = TLSv1.2
renegotiation = no
TIMEOUTbusy = 20
TIMEOUTclose = 0
TIMEOUTidle = 70
delay = yes
verify = 2
CAfile = /etc/amazon/efs/efs-utils.crt
cert = /var/run/efs/fs-12341234.home.ec2-user.efs.21036+/certificate.pem
key = /etc/amazon/efs/privateKey.pem
checkHost = fs-12341234.efs.us-east-1.amazonaws.com
"#;
let result_config = ProxyConfig::from_str(config_string).unwrap();
let expected_proxy_config = ProxyConfig {
fips: true,
pid_file_path: String::from(
"/var/run/efs/fs-12341234.home.ec2-user.efs.21036+/stunnel.pid",
),
debug: LevelFilter::Debug.to_string().to_ascii_lowercase(),
output: Some(String::from(
"/var/log/amazon/efs/fs-12341234.home.ec2-user.efs.21036.efs-proxy.log",
)),
nested_config: EfsConfig {
listen_addr: String::from("127.0.0.1:21036"),
mount_target_addr: String::from("fs-12341234.efs.us-east-1.amazonaws.com:2049"),
ca_file: String::from("/etc/amazon/efs/efs-utils.crt"),
client_cert_pem_file: String::from(
"/var/run/efs/fs-12341234.home.ec2-user.efs.21036+/certificate.pem",
),
client_private_key_pem_file: String::from("/etc/amazon/efs/privateKey.pem"),
expected_server_hostname_tls: String::from(
"fs-12341234.efs.us-east-1.amazonaws.com",
),
},
};
assert_eq!(result_config, expected_proxy_config);
}