Skip to content

Commit 5575c13

Browse files
committed
add multiple remove_entry_mult call tests to show more issues
1 parent ad54c55 commit 5575c13

1 file changed

Lines changed: 23 additions & 9 deletions

File tree

tests/header_map.rs

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ fn value_htab() {
428428
#[test]
429429
fn remove_entry_multi_0() {
430430
let mut headers = HeaderMap::new();
431-
let cookies = remove_all_set_cookies(&mut headers);
431+
let cookies = remove_all_values(&mut headers, SET_COOKIE);
432432
assert_eq!(cookies.len(), 0);
433433
assert_eq!(headers.len(), 0);
434434
}
@@ -439,7 +439,7 @@ fn remove_entry_multi_0_others() {
439439
headers.insert(VIA, "1.1 example.com".parse().unwrap());
440440
headers.append(VIA, "1.1 other.com".parse().unwrap());
441441

442-
let cookies = remove_all_set_cookies(&mut headers);
442+
let cookies = remove_all_values(&mut headers, SET_COOKIE);
443443
assert_eq!(cookies.len(), 0);
444444
assert_eq!(headers.len(), 2);
445445
}
@@ -449,7 +449,7 @@ fn remove_entry_multi_1() {
449449
let mut headers = HeaderMap::new();
450450
headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
451451

452-
let cookies = remove_all_set_cookies(&mut headers);
452+
let cookies = remove_all_values(&mut headers, SET_COOKIE);
453453
assert_eq!(cookies.len(), 1);
454454
assert_eq!(headers.len(), 0);
455455
}
@@ -460,9 +460,13 @@ fn remove_entry_multi_1_other() {
460460
headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
461461
headers.insert(VIA, "1.1 example.com".parse().unwrap());
462462

463-
let cookies = remove_all_set_cookies(&mut headers);
463+
let cookies = remove_all_values(&mut headers, SET_COOKIE);
464464
assert_eq!(cookies.len(), 1);
465465
assert_eq!(headers.len(), 1);
466+
467+
let vias = remove_all_values(&mut headers, VIA);
468+
assert_eq!(vias.len(), 1);
469+
assert_eq!(headers.len(), 0);
466470
}
467471

468472
// For issue hyperimum/http#446
@@ -472,7 +476,7 @@ fn remove_entry_multi_2() {
472476
headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
473477
headers.append(SET_COOKIE, "cookie_2=value 2".parse().unwrap());
474478

475-
let cookies = remove_all_set_cookies(&mut headers);
479+
let cookies = remove_all_values(&mut headers, SET_COOKIE);
476480
assert_eq!(cookies.len(), 2);
477481
assert_eq!(headers.len(), 0);
478482
}
@@ -484,7 +488,7 @@ fn remove_entry_multi_3() {
484488
headers.append(SET_COOKIE, "cookie_2=value 2".parse().unwrap());
485489
headers.append(SET_COOKIE, "cookie_3=value 3".parse().unwrap());
486490

487-
let cookies = remove_all_set_cookies(&mut headers);
491+
let cookies = remove_all_values(&mut headers, SET_COOKIE);
488492
assert_eq!(cookies.len(), 3);
489493
assert_eq!(headers.len(), 0);
490494
}
@@ -499,13 +503,23 @@ fn remove_entry_multi_3_others() {
499503
headers.append(SET_COOKIE, "cookie_3=value 3".parse().unwrap());
500504
headers.insert(VARY, "*".parse().unwrap());
501505

502-
let cookies = remove_all_set_cookies(&mut headers);
506+
let cookies = remove_all_values(&mut headers, SET_COOKIE);
503507
assert_eq!(cookies.len(), 3);
504508
assert_eq!(headers.len(), 3);
509+
510+
let vias = remove_all_values(&mut headers, VIA);
511+
assert_eq!(vias.len(), 2);
512+
assert_eq!(headers.len(), 1);
513+
514+
let varies = remove_all_values(&mut headers, VARY);
515+
assert_eq!(varies.len(), 1);
516+
assert_eq!(headers.len(), 0);
505517
}
506518

507-
fn remove_all_set_cookies(headers: &mut HeaderMap) -> Vec<HeaderValue> {
508-
match headers.entry(SET_COOKIE) {
519+
fn remove_all_values<K>(headers: &mut HeaderMap, key: K) -> Vec<HeaderValue>
520+
where K: IntoHeaderName
521+
{
522+
match headers.entry(key) {
509523
Entry::Occupied(e) => e.remove_entry_mult().1.collect(),
510524
Entry::Vacant(_) => vec![],
511525
}

0 commit comments

Comments
 (0)