Skip to content

Commit d85ac13

Browse files
authored
Merge pull request #704 from BramBonne/library-tests
Increase test coverage
2 parents 12310f2 + a012579 commit d85ac13

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed

url/tests/unit.rs

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,122 @@ fn test_origin_unicode_serialization() {
567567
}
568568
}
569569

570+
#[test]
571+
fn test_socket_addrs() {
572+
use std::net::ToSocketAddrs;
573+
574+
let data = [
575+
("https://127.0.0.1/", "127.0.0.1", 443),
576+
("https://127.0.0.1:9742/", "127.0.0.1", 9742),
577+
("custom-protocol://127.0.0.1:9742/", "127.0.0.1", 9742),
578+
("custom-protocol://127.0.0.1/", "127.0.0.1", 9743),
579+
("https://[::1]/", "::1", 443),
580+
("https://[::1]:9742/", "::1", 9742),
581+
("custom-protocol://[::1]:9742/", "::1", 9742),
582+
("custom-protocol://[::1]/", "::1", 9743),
583+
("https://localhost/", "localhost", 443),
584+
("https://localhost:9742/", "localhost", 9742),
585+
("custom-protocol://localhost:9742/", "localhost", 9742),
586+
("custom-protocol://localhost/", "localhost", 9743),
587+
];
588+
589+
for (url_string, host, port) in &data {
590+
let url = url::Url::parse(url_string).unwrap();
591+
let addrs = url
592+
.socket_addrs(|| match url.scheme() {
593+
"custom-protocol" => Some(9743),
594+
_ => None,
595+
})
596+
.unwrap();
597+
assert_eq!(
598+
Some(addrs[0]),
599+
(*host, *port).to_socket_addrs().unwrap().next()
600+
);
601+
}
602+
}
603+
604+
#[test]
605+
fn test_no_base_url() {
606+
let mut no_base_url = Url::parse("mailto:test@example.net").unwrap();
607+
608+
assert!(no_base_url.cannot_be_a_base());
609+
assert!(no_base_url.path_segments().is_none());
610+
assert!(no_base_url.path_segments_mut().is_err());
611+
assert!(no_base_url.set_host(Some("foo")).is_err());
612+
assert!(no_base_url
613+
.set_ip_host("127.0.0.1".parse().unwrap())
614+
.is_err());
615+
616+
no_base_url.set_path("/foo");
617+
assert_eq!(no_base_url.path(), "%2Ffoo");
618+
}
619+
620+
#[test]
621+
fn test_domain() {
622+
let url = Url::parse("https://127.0.0.1/").unwrap();
623+
assert_eq!(url.domain(), None);
624+
625+
let url = Url::parse("mailto:test@example.net").unwrap();
626+
assert_eq!(url.domain(), None);
627+
628+
let url = Url::parse("https://example.com/").unwrap();
629+
assert_eq!(url.domain(), Some("example.com"));
630+
}
631+
632+
#[test]
633+
fn test_query() {
634+
let url = Url::parse("https://example.com/products?page=2#fragment").unwrap();
635+
assert_eq!(url.query(), Some("page=2"));
636+
assert_eq!(
637+
url.query_pairs().next(),
638+
Some((Cow::Borrowed("page"), Cow::Borrowed("2")))
639+
);
640+
641+
let url = Url::parse("https://example.com/products").unwrap();
642+
assert!(url.query().is_none());
643+
assert_eq!(url.query_pairs().count(), 0);
644+
645+
let url = Url::parse("https://example.com/?country=español").unwrap();
646+
assert_eq!(url.query(), Some("country=espa%C3%B1ol"));
647+
assert_eq!(
648+
url.query_pairs().next(),
649+
Some((Cow::Borrowed("country"), Cow::Borrowed("español")))
650+
);
651+
652+
let url = Url::parse("https://example.com/products?page=2&sort=desc").unwrap();
653+
assert_eq!(url.query(), Some("page=2&sort=desc"));
654+
let mut pairs = url.query_pairs();
655+
assert_eq!(pairs.count(), 2);
656+
assert_eq!(
657+
pairs.next(),
658+
Some((Cow::Borrowed("page"), Cow::Borrowed("2")))
659+
);
660+
assert_eq!(
661+
pairs.next(),
662+
Some((Cow::Borrowed("sort"), Cow::Borrowed("desc")))
663+
);
664+
}
665+
666+
#[test]
667+
fn test_fragment() {
668+
let url = Url::parse("https://example.com/#fragment").unwrap();
669+
assert_eq!(url.fragment(), Some("fragment"));
670+
671+
let url = Url::parse("https://example.com/").unwrap();
672+
assert_eq!(url.fragment(), None);
673+
}
674+
675+
#[test]
676+
fn test_set_ip_host() {
677+
let mut url = Url::parse("http://example.com").unwrap();
678+
679+
url.set_ip_host("127.0.0.1".parse().unwrap()).unwrap();
680+
assert_eq!(url.host_str(), Some("127.0.0.1"));
681+
682+
url.set_ip_host("::1".parse().unwrap()).unwrap();
683+
assert_eq!(url.host_str(), Some("[::1]"));
684+
}
685+
570686
#[test]
571687
fn test_windows_unc_path() {
572688
if !cfg!(windows) {

0 commit comments

Comments
 (0)