welds_sqlx_mssql/options/
parse.rs1use crate::error::Error;
2use crate::MssqlConnectOptions;
3use sqlx_core::connection::ConnectOptions;
4use std::str::FromStr;
5use url::Url;
6
7impl FromStr for MssqlConnectOptions {
8 type Err = Error;
9
10 fn from_str(s: &str) -> Result<Self, Self::Err> {
11 let url: Url = s.parse().map_err(Error::config)?;
12 MssqlConnectOptions::from_url(&url)
13 }
14}
15
16#[test]
17fn it_parses_username_with_at_sign_correctly() {
18 let url = "mssql://user@hostname:password@hostname:12345/database";
19 let opts = MssqlConnectOptions::from_str(url).unwrap();
20 assert_eq!("user@hostname", &opts.username);
21}
22
23#[test]
24fn it_parses_password_with_non_ascii_chars_correctly() {
25 let url = "mssql://username:p@ssw0rd@hostname:12345/database";
26 let opts = MssqlConnectOptions::from_str(url).unwrap();
27 assert_eq!(Some("p@ssw0rd".into()), opts.password);
28}
29
30#[test]
31fn it_parses_hostname() {
32 let url = "mssql://username:p@ssw0rd@hostname:12345/database";
33 let opts = MssqlConnectOptions::from_str(url).unwrap();
34 assert_eq!("hostname", &opts.host);
35}
36
37#[test]
38fn it_parses_port() {
39 let url = "mssql://username:p@ssw0rd@hostname:12345/database";
40 let opts = MssqlConnectOptions::from_str(url).unwrap();
41 assert_eq!(12345, opts.port);
42}
43
44#[test]
45fn it_parses_database_name() {
46 let url = "mssql://username:p@ssw0rd@hostname:12345/database";
47 let opts = MssqlConnectOptions::from_str(url).unwrap();
48 assert_eq!("database", &opts.database);
49}