1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
use std::time::Duration;
use tokio_postgres::config::{Config, TargetSessionAttrs};
fn check(s: &str, config: &Config) {
assert_eq!(s.parse::<Config>().expect(s), *config, "`{}`", s);
}
#[test]
fn pairs_ok() {
check(
r"user=foo password=' fizz \'buzz\\ ' application_name = ''",
Config::new()
.user("foo")
.password(r" fizz 'buzz\ ")
.application_name(""),
);
}
#[test]
fn pairs_ws() {
check(
" user\t=\r\n\x0bfoo \t password = hunter2 ",
Config::new().user("foo").password("hunter2"),
);
}
#[test]
fn settings() {
check(
"connect_timeout=3 keepalives=0 keepalives_idle=30 target_session_attrs=read-write",
Config::new()
.connect_timeout(Duration::from_secs(3))
.keepalives(false)
.keepalives_idle(Duration::from_secs(30))
.target_session_attrs(TargetSessionAttrs::ReadWrite),
);
check(
"connect_timeout=3 keepalives=0 keepalives_idle=30 target_session_attrs=read-only",
Config::new()
.connect_timeout(Duration::from_secs(3))
.keepalives(false)
.keepalives_idle(Duration::from_secs(30))
.target_session_attrs(TargetSessionAttrs::ReadOnly),
);
}
#[test]
fn keepalive_settings() {
check(
"keepalives=1 keepalives_idle=15 keepalives_interval=5 keepalives_retries=9",
Config::new()
.keepalives(true)
.keepalives_idle(Duration::from_secs(15))
.keepalives_interval(Duration::from_secs(5))
.keepalives_retries(9),
);
}
#[test]
fn url() {
check("postgresql://", &Config::new());
check(
"postgresql://localhost",
Config::new().host("localhost").port(5432),
);
check(
"postgresql://localhost:5433",
Config::new().host("localhost").port(5433),
);
check(
"postgresql://localhost/mydb",
Config::new().host("localhost").port(5432).dbname("mydb"),
);
check(
"postgresql://user@localhost",
Config::new().user("user").host("localhost").port(5432),
);
check(
"postgresql://user:secret@localhost",
Config::new()
.user("user")
.password("secret")
.host("localhost")
.port(5432),
);
check(
"postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp",
Config::new()
.user("other")
.host("localhost")
.port(5432)
.dbname("otherdb")
.connect_timeout(Duration::from_secs(10))
.application_name("myapp"),
);
check(
"postgresql://host1:123,host2:456/somedb?target_session_attrs=any&application_name=myapp",
Config::new()
.host("host1")
.port(123)
.host("host2")
.port(456)
.dbname("somedb")
.target_session_attrs(TargetSessionAttrs::Any)
.application_name("myapp"),
);
check(
"postgresql:///mydb?host=localhost&port=5433",
Config::new().dbname("mydb").host("localhost").port(5433),
);
check(
"postgresql://[2001:db8::1234]/database",
Config::new()
.host("2001:db8::1234")
.port(5432)
.dbname("database"),
);
check(
"postgresql://[2001:db8::1234]:5433/database",
Config::new()
.host("2001:db8::1234")
.port(5433)
.dbname("database"),
);
#[cfg(unix)]
check(
"postgresql:///dbname?host=/var/lib/postgresql",
Config::new()
.dbname("dbname")
.host_path("/var/lib/postgresql"),
);
#[cfg(unix)]
check(
"postgresql://%2Fvar%2Flib%2Fpostgresql/dbname",
Config::new()
.host_path("/var/lib/postgresql")
.port(5432)
.dbname("dbname"),
)
}
|