welds_sqlx_mssql/options/
parse.rs

1use 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}