aboutsummaryrefslogtreecommitdiffstats
path: root/components/net/tests/hsts.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/net/tests/hsts.rs')
-rw-r--r--components/net/tests/hsts.rs161
1 files changed, 74 insertions, 87 deletions
diff --git a/components/net/tests/hsts.rs b/components/net/tests/hsts.rs
index e1e754beb3c..3598b232111 100644
--- a/components/net/tests/hsts.rs
+++ b/components/net/tests/hsts.rs
@@ -6,13 +6,14 @@ use std::collections::HashMap;
use std::num::NonZeroU64;
use std::time::Duration as StdDuration;
+use base64::Engine;
use net::hsts::{HstsEntry, HstsList, HstsPreloadList};
use net_traits::IncludeSubdomains;
#[test]
fn test_hsts_entry_is_not_expired_when_it_has_no_expires_at() {
let entry = HstsEntry {
- host: "mozilla.org".to_owned(),
+ host: "example.com".to_owned(),
include_subdomains: false,
expires_at: None,
};
@@ -23,7 +24,7 @@ fn test_hsts_entry_is_not_expired_when_it_has_no_expires_at() {
#[test]
fn test_hsts_entry_is_expired_when_it_has_reached_its_max_age() {
let entry = HstsEntry {
- host: "mozilla.org".to_owned(),
+ host: "example.com".to_owned(),
include_subdomains: false,
expires_at: Some(NonZeroU64::new(1).unwrap()),
};
@@ -59,7 +60,7 @@ fn test_base_domain_in_entries_map() {
list.push(
HstsEntry::new(
- "servo.mozilla.org".to_owned(),
+ "servo.example.com".to_owned(),
IncludeSubdomains::NotIncluded,
None,
)
@@ -67,7 +68,7 @@ fn test_base_domain_in_entries_map() {
);
list.push(
HstsEntry::new(
- "firefox.mozilla.org".to_owned(),
+ "firefox.example.com".to_owned(),
IncludeSubdomains::NotIncluded,
None,
)
@@ -75,7 +76,7 @@ fn test_base_domain_in_entries_map() {
);
list.push(
HstsEntry::new(
- "bugzilla.org".to_owned(),
+ "example.org".to_owned(),
IncludeSubdomains::NotIncluded,
None,
)
@@ -83,17 +84,17 @@ fn test_base_domain_in_entries_map() {
);
assert_eq!(list.entries_map.len(), 2);
- assert_eq!(list.entries_map.get("mozilla.org").unwrap().len(), 2);
+ assert_eq!(list.entries_map.get("example.com").unwrap().len(), 2);
}
#[test]
fn test_push_entry_with_0_max_age_is_not_secure() {
let mut entries_map = HashMap::new();
entries_map.insert(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
vec![
HstsEntry::new(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
IncludeSubdomains::NotIncluded,
Some(StdDuration::from_secs(500000)),
)
@@ -106,23 +107,23 @@ fn test_push_entry_with_0_max_age_is_not_secure() {
list.push(
HstsEntry::new(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
IncludeSubdomains::NotIncluded,
Some(StdDuration::ZERO),
)
.unwrap(),
);
- assert_eq!(list.is_host_secure("mozilla.org"), false)
+ assert_eq!(list.is_host_secure("example.com"), false)
}
fn test_push_entry_with_0_max_age_evicts_entry_from_list() {
let mut entries_map = HashMap::new();
entries_map.insert(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
vec![
HstsEntry::new(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
IncludeSubdomains::NotIncluded,
Some(StdDuration::from_secs(500000)),
)
@@ -133,25 +134,25 @@ fn test_push_entry_with_0_max_age_evicts_entry_from_list() {
entries_map: entries_map,
};
- assert_eq!(list.entries_map.get("mozilla.org").unwrap().len(), 1);
+ assert_eq!(list.entries_map.get("example.com").unwrap().len(), 1);
list.push(
HstsEntry::new(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
IncludeSubdomains::NotIncluded,
Some(StdDuration::ZERO),
)
.unwrap(),
);
- assert_eq!(list.entries_map.get("mozilla.org").unwrap().len(), 0);
+ assert_eq!(list.entries_map.get("example.com").unwrap().len(), 0);
}
#[test]
fn test_push_entry_to_hsts_list_should_not_add_subdomains_whose_superdomain_is_already_matched() {
let mut entries_map = HashMap::new();
entries_map.insert(
- "mozilla.org".to_owned(),
- vec![HstsEntry::new("mozilla.org".to_owned(), IncludeSubdomains::Included, None).unwrap()],
+ "example.com".to_owned(),
+ vec![HstsEntry::new("example.com".to_owned(), IncludeSubdomains::Included, None).unwrap()],
);
let mut list = HstsList {
entries_map: entries_map,
@@ -159,24 +160,24 @@ fn test_push_entry_to_hsts_list_should_not_add_subdomains_whose_superdomain_is_a
list.push(
HstsEntry::new(
- "servo.mozilla.org".to_owned(),
+ "servo.example.com".to_owned(),
IncludeSubdomains::NotIncluded,
None,
)
.unwrap(),
);
- assert_eq!(list.entries_map.get("mozilla.org").unwrap().len(), 1)
+ assert_eq!(list.entries_map.get("example.com").unwrap().len(), 1)
}
#[test]
fn test_push_entry_to_hsts_list_should_add_subdomains_whose_superdomain_doesnt_include() {
let mut entries_map = HashMap::new();
entries_map.insert(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
vec![
HstsEntry::new(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
IncludeSubdomains::NotIncluded,
None,
)
@@ -189,49 +190,49 @@ fn test_push_entry_to_hsts_list_should_add_subdomains_whose_superdomain_doesnt_i
list.push(
HstsEntry::new(
- "servo.mozilla.org".to_owned(),
+ "servo.example.com".to_owned(),
IncludeSubdomains::NotIncluded,
None,
)
.unwrap(),
);
- assert_eq!(list.entries_map.get("mozilla.org").unwrap().len(), 2)
+ assert_eq!(list.entries_map.get("example.com").unwrap().len(), 2)
}
#[test]
fn test_push_entry_to_hsts_list_should_update_existing_domain_entrys_include_subdomains() {
let mut entries_map = HashMap::new();
entries_map.insert(
- "mozilla.org".to_owned(),
- vec![HstsEntry::new("mozilla.org".to_owned(), IncludeSubdomains::Included, None).unwrap()],
+ "example.com".to_owned(),
+ vec![HstsEntry::new("example.com".to_owned(), IncludeSubdomains::Included, None).unwrap()],
);
let mut list = HstsList {
entries_map: entries_map,
};
- assert!(list.is_host_secure("servo.mozilla.org"));
+ assert!(list.is_host_secure("servo.example.com"));
list.push(
HstsEntry::new(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
IncludeSubdomains::NotIncluded,
None,
)
.unwrap(),
);
- assert!(!list.is_host_secure("servo.mozilla.org"))
+ assert!(!list.is_host_secure("servo.example.com"))
}
#[test]
fn test_push_entry_to_hsts_list_should_not_create_duplicate_entry() {
let mut entries_map = HashMap::new();
entries_map.insert(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
vec![
HstsEntry::new(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
IncludeSubdomains::NotIncluded,
None,
)
@@ -244,14 +245,14 @@ fn test_push_entry_to_hsts_list_should_not_create_duplicate_entry() {
list.push(
HstsEntry::new(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
IncludeSubdomains::NotIncluded,
None,
)
.unwrap(),
);
- assert_eq!(list.entries_map.get("mozilla.org").unwrap().len(), 1)
+ assert_eq!(list.entries_map.get("example.com").unwrap().len(), 1)
}
#[test]
@@ -260,16 +261,14 @@ fn test_push_multiple_entrie_to_hsts_list_should_add_them_all() {
entries_map: HashMap::new(),
};
- assert!(!list.is_host_secure("mozilla.org"));
- assert!(!list.is_host_secure("bugzilla.org"));
+ assert!(!list.is_host_secure("example.com"));
+ assert!(!list.is_host_secure("example.org"));
- list.push(HstsEntry::new("mozilla.org".to_owned(), IncludeSubdomains::Included, None).unwrap());
- list.push(
- HstsEntry::new("bugzilla.org".to_owned(), IncludeSubdomains::Included, None).unwrap(),
- );
+ list.push(HstsEntry::new("example.com".to_owned(), IncludeSubdomains::Included, None).unwrap());
+ list.push(HstsEntry::new("example.org".to_owned(), IncludeSubdomains::Included, None).unwrap());
- assert!(list.is_host_secure("mozilla.org"));
- assert!(list.is_host_secure("bugzilla.org"));
+ assert!(list.is_host_secure("example.com"));
+ assert!(list.is_host_secure("example.org"));
}
#[test]
@@ -278,25 +277,16 @@ fn test_push_entry_to_hsts_list_should_add_an_entry() {
entries_map: HashMap::new(),
};
- assert!(!list.is_host_secure("mozilla.org"));
+ assert!(!list.is_host_secure("example.com"));
- list.push(HstsEntry::new("mozilla.org".to_owned(), IncludeSubdomains::Included, None).unwrap());
+ list.push(HstsEntry::new("example.com".to_owned(), IncludeSubdomains::Included, None).unwrap());
- assert!(list.is_host_secure("mozilla.org"));
+ assert!(list.is_host_secure("example.com"));
}
#[test]
fn test_parse_hsts_preload_should_return_none_when_json_invalid() {
- let mock_preload_content = "derp";
- assert!(
- HstsPreloadList::from_preload(mock_preload_content).is_none(),
- "invalid preload list should not have parsed"
- )
-}
-
-#[test]
-fn test_parse_hsts_preload_should_return_none_when_json_contains_no_entries_map_key() {
- let mock_preload_content = "{\"nothing\": \"to see here\"}";
+ let mock_preload_content = "derp".as_bytes().to_vec();
assert!(
HstsPreloadList::from_preload(mock_preload_content).is_none(),
"invalid preload list should not have parsed"
@@ -305,20 +295,17 @@ fn test_parse_hsts_preload_should_return_none_when_json_contains_no_entries_map_
#[test]
fn test_parse_hsts_preload_should_decode_host_and_includes_subdomains() {
- let mock_preload_content = "{\
- \"entries\": [\
- {\"host\": \"mozilla.org\",\
- \"include_subdomains\": false}\
- ]\
- }";
- let hsts_list = HstsPreloadList::from_preload(mock_preload_content);
- let entries_map = hsts_list.unwrap().entries_map;
-
- assert_eq!(
- entries_map.get("mozilla.org").unwrap()[0].host,
- "mozilla.org"
- );
- assert!(!entries_map.get("mozilla.org").unwrap()[0].include_subdomains);
+ // Generated with `fst map --sorted` on a csv of "example.com,0\nexample.org,3"
+ let mock_preload_content = base64::engine::general_purpose::STANDARD
+ .decode("AwAAAAAAAAAAAAAAAAAAAAAQkMQAEJfHAwABBW9jEQLNws/J0MXqwgIAAAAAAAAAJwAAAAAAAADVOFe6")
+ .unwrap();
+ let hsts_list = HstsPreloadList::from_preload(mock_preload_content).unwrap();
+
+ assert_eq!(hsts_list.is_host_secure("derp"), false);
+ assert_eq!(hsts_list.is_host_secure("example.com"), true);
+ assert_eq!(hsts_list.is_host_secure("servo.example.com"), false);
+ assert_eq!(hsts_list.is_host_secure("example.org"), true);
+ assert_eq!(hsts_list.is_host_secure("servo.example.org"), true);
}
#[test]
@@ -327,17 +314,17 @@ fn test_hsts_list_with_no_entries_map_does_not_is_host_secure() {
entries_map: HashMap::new(),
};
- assert!(!hsts_list.is_host_secure("mozilla.org"));
+ assert!(!hsts_list.is_host_secure("example.com"));
}
#[test]
fn test_hsts_list_with_exact_domain_entry_is_is_host_secure() {
let mut entries_map = HashMap::new();
entries_map.insert(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
vec![
HstsEntry::new(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
IncludeSubdomains::NotIncluded,
None,
)
@@ -349,31 +336,31 @@ fn test_hsts_list_with_exact_domain_entry_is_is_host_secure() {
entries_map: entries_map,
};
- assert!(hsts_list.is_host_secure("mozilla.org"));
+ assert!(hsts_list.is_host_secure("example.com"));
}
#[test]
fn test_hsts_list_with_subdomain_when_include_subdomains_is_true_is_is_host_secure() {
let mut entries_map = HashMap::new();
entries_map.insert(
- "mozilla.org".to_owned(),
- vec![HstsEntry::new("mozilla.org".to_owned(), IncludeSubdomains::Included, None).unwrap()],
+ "example.com".to_owned(),
+ vec![HstsEntry::new("example.com".to_owned(), IncludeSubdomains::Included, None).unwrap()],
);
let hsts_list = HstsList {
entries_map: entries_map,
};
- assert!(hsts_list.is_host_secure("servo.mozilla.org"));
+ assert!(hsts_list.is_host_secure("servo.example.com"));
}
#[test]
fn test_hsts_list_with_subdomain_when_include_subdomains_is_false_is_not_is_host_secure() {
let mut entries_map = HashMap::new();
entries_map.insert(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
vec![
HstsEntry::new(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
IncludeSubdomains::NotIncluded,
None,
)
@@ -384,44 +371,44 @@ fn test_hsts_list_with_subdomain_when_include_subdomains_is_false_is_not_is_host
entries_map: entries_map,
};
- assert!(!hsts_list.is_host_secure("servo.mozilla.org"));
+ assert!(!hsts_list.is_host_secure("servo.example.com"));
}
#[test]
fn test_hsts_list_with_subdomain_when_host_is_not_a_subdomain_is_not_is_host_secure() {
let mut entries_map = HashMap::new();
entries_map.insert(
- "mozilla.org".to_owned(),
- vec![HstsEntry::new("mozilla.org".to_owned(), IncludeSubdomains::Included, None).unwrap()],
+ "example.com".to_owned(),
+ vec![HstsEntry::new("example.com".to_owned(), IncludeSubdomains::Included, None).unwrap()],
);
let hsts_list = HstsList {
entries_map: entries_map,
};
- assert!(!hsts_list.is_host_secure("servo-mozilla.org"));
+ assert!(!hsts_list.is_host_secure("servo-example.com"));
}
#[test]
fn test_hsts_list_with_subdomain_when_host_is_exact_match_is_is_host_secure() {
let mut entries_map = HashMap::new();
entries_map.insert(
- "mozilla.org".to_owned(),
- vec![HstsEntry::new("mozilla.org".to_owned(), IncludeSubdomains::Included, None).unwrap()],
+ "example.com".to_owned(),
+ vec![HstsEntry::new("example.com".to_owned(), IncludeSubdomains::Included, None).unwrap()],
);
let hsts_list = HstsList {
entries_map: entries_map,
};
- assert!(hsts_list.is_host_secure("mozilla.org"));
+ assert!(hsts_list.is_host_secure("example.com"));
}
#[test]
fn test_hsts_list_with_expired_entry_is_not_is_host_secure() {
let mut entries_map = HashMap::new();
entries_map.insert(
- "mozilla.org".to_owned(),
+ "example.com".to_owned(),
vec![HstsEntry {
- host: "mozilla.org".to_owned(),
+ host: "example.com".to_owned(),
include_subdomains: false,
expires_at: Some(NonZeroU64::new(1).unwrap()),
}],
@@ -430,11 +417,11 @@ fn test_hsts_list_with_expired_entry_is_not_is_host_secure() {
entries_map: entries_map,
};
- assert!(!hsts_list.is_host_secure("mozilla.org"));
+ assert!(!hsts_list.is_host_secure("example.com"));
}
#[test]
fn test_preload_hsts_domains_well_formed() {
let hsts_list = HstsPreloadList::from_servo_preload();
- assert!(!hsts_list.entries_map.is_empty());
+ assert_ne!(hsts_list.0.len(), 0);
}