upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2024-08-28 14:20:34 +0100
committerDanConwayDev <DanConwayDev@protonmail.com>2024-08-28 16:42:53 +0100
commita5216602749bff55c2773acce098c91942cd3920 (patch)
treef1961c73d0586cab4de8fd54aafd9ba8171f3adb /tests
parent2045aa5d928306f2a03cc924eac9c453c399b9b8 (diff)
chore: bump rust-nostr to v0.34.0
bump all rust-nostr packages I'm not sure I'm completely happy with allowing mutable_key_type but it is just run inside tests it appears that Event didn't have the Copy trait in v0.33.0 so I'm not sure why this warning suddenly appeared the timeout of client.get_events_of needed to be doubled which could indicate that an ineffiency has been introduced in v0.34.0 the primary motivation for upgrading now was to get this fix: nostr:nevent1qqsffl2ld678pjj77rh9k2g4edljmxdu6ew4lvgnglxv7jhu3ru8vvcpp4mhxue69uhkummn9ekx7mqzyzsq3hh327t0h2dq6matqn5064cgj2zanl2stkj6s0lg4t2h5dty6rm2ucm as I suspect it is also effecting other repositories eg nostr-profile-manager
Diffstat (limited to 'tests')
-rw-r--r--tests/git_remote_helper.rs26
-rw-r--r--tests/send.rs106
2 files changed, 89 insertions, 43 deletions
diff --git a/tests/git_remote_helper.rs b/tests/git_remote_helper.rs
index a44b141..07f9ec8 100644
--- a/tests/git_remote_helper.rs
+++ b/tests/git_remote_helper.rs
@@ -1730,6 +1730,7 @@ mod push {
1730 r51.events = events.clone(); 1730 r51.events = events.clone();
1731 r55.events = events.clone(); 1731 r55.events = events.clone();
1732 1732
1733 #[allow(clippy::mutable_key_type)]
1733 let before = r55.events.iter().cloned().collect::<HashSet<Event>>(); 1734 let before = r55.events.iter().cloned().collect::<HashSet<Event>>();
1734 1735
1735 let cli_tester_handle = std::thread::spawn(move || -> Result<(String, Oid)> { 1736 let cli_tester_handle = std::thread::spawn(move || -> Result<(String, Oid)> {
@@ -1798,7 +1799,8 @@ mod push {
1798 .events 1799 .events
1799 .iter() 1800 .iter()
1800 .find(|e| { 1801 .find(|e| {
1801 e.iter_tags() 1802 e.tags()
1803 .iter()
1802 .find(|t| t.as_vec()[0].eq("branch-name")) 1804 .find(|t| t.as_vec()[0].eq("branch-name"))
1803 .is_some_and(|t| t.as_vec()[1].eq(FEATURE_BRANCH_NAME_1)) 1805 .is_some_and(|t| t.as_vec()[1].eq(FEATURE_BRANCH_NAME_1))
1804 }) 1806 })
@@ -1824,7 +1826,8 @@ mod push {
1824 .events 1826 .events
1825 .iter() 1827 .iter()
1826 .filter(|e| { 1828 .filter(|e| {
1827 e.iter_tags() 1829 e.tags()
1830 .iter()
1828 .any(|t| t.as_vec()[1].eq(&proposal.id().to_string())) 1831 .any(|t| t.as_vec()[1].eq(&proposal.id().to_string()))
1829 && e.kind().eq(&Kind::GitPatch) 1832 && e.kind().eq(&Kind::GitPatch)
1830 }) 1833 })
@@ -1877,6 +1880,7 @@ mod push {
1877 r51.events = events.clone(); 1880 r51.events = events.clone();
1878 r55.events = events.clone(); 1881 r55.events = events.clone();
1879 1882
1883 #[allow(clippy::mutable_key_type)]
1880 let before = r55.events.iter().cloned().collect::<HashSet<Event>>(); 1884 let before = r55.events.iter().cloned().collect::<HashSet<Event>>();
1881 1885
1882 let cli_tester_handle = std::thread::spawn(move || -> Result<(String, String)> { 1886 let cli_tester_handle = std::thread::spawn(move || -> Result<(String, String)> {
@@ -1950,7 +1954,8 @@ mod push {
1950 .events 1954 .events
1951 .iter() 1955 .iter()
1952 .find(|e| { 1956 .find(|e| {
1953 e.iter_tags() 1957 e.tags()
1958 .iter()
1954 .find(|t| t.as_vec()[0].eq("branch-name")) 1959 .find(|t| t.as_vec()[0].eq("branch-name"))
1955 .is_some_and(|t| t.as_vec()[1].eq(FEATURE_BRANCH_NAME_1)) 1960 .is_some_and(|t| t.as_vec()[1].eq(FEATURE_BRANCH_NAME_1))
1956 }) 1961 })
@@ -1982,7 +1987,8 @@ mod push {
1982 .events 1987 .events
1983 .iter() 1988 .iter()
1984 .find(|e| { 1989 .find(|e| {
1985 e.iter_tags() 1990 e.tags()
1991 .iter()
1986 .any(|t| t.as_vec()[1].eq(&proposal.id().to_string())) 1992 .any(|t| t.as_vec()[1].eq(&proposal.id().to_string()))
1987 && e.content.contains("[PATCH 2/2]") 1993 && e.content.contains("[PATCH 2/2]")
1988 }) 1994 })
@@ -2019,6 +2025,7 @@ mod push {
2019 r51.events = events.clone(); 2025 r51.events = events.clone();
2020 r55.events = events.clone(); 2026 r55.events = events.clone();
2021 2027
2028 #[allow(clippy::mutable_key_type)]
2022 let before = r55.events.iter().cloned().collect::<HashSet<Event>>(); 2029 let before = r55.events.iter().cloned().collect::<HashSet<Event>>();
2023 2030
2024 let cli_tester_handle = std::thread::spawn(move || -> Result<(String, String)> { 2031 let cli_tester_handle = std::thread::spawn(move || -> Result<(String, String)> {
@@ -2086,7 +2093,8 @@ mod push {
2086 .events 2093 .events
2087 .iter() 2094 .iter()
2088 .find(|e| { 2095 .find(|e| {
2089 e.iter_tags() 2096 e.tags()
2097 .iter()
2090 .find(|t| t.as_vec()[0].eq("branch-name")) 2098 .find(|t| t.as_vec()[0].eq("branch-name"))
2091 .is_some_and(|t| t.as_vec()[1].eq(FEATURE_BRANCH_NAME_1)) 2099 .is_some_and(|t| t.as_vec()[1].eq(FEATURE_BRANCH_NAME_1))
2092 }) 2100 })
@@ -2094,7 +2102,7 @@ mod push {
2094 2102
2095 let revision_root_patch = new_events 2103 let revision_root_patch = new_events
2096 .iter() 2104 .iter()
2097 .find(|e| e.iter_tags().any(|t| t.as_vec()[1].eq("revision-root"))) 2105 .find(|e| e.tags().iter().any(|t| t.as_vec()[1].eq("revision-root")))
2098 .unwrap(); 2106 .unwrap();
2099 2107
2100 assert_eq!( 2108 assert_eq!(
@@ -2172,6 +2180,7 @@ mod push {
2172 r51.events = events.clone(); 2180 r51.events = events.clone();
2173 r55.events = events.clone(); 2181 r55.events = events.clone();
2174 2182
2183 #[allow(clippy::mutable_key_type)]
2175 let before = r55.events.iter().cloned().collect::<HashSet<Event>>(); 2184 let before = r55.events.iter().cloned().collect::<HashSet<Event>>();
2176 let branch_name = "pr/my-new-proposal"; 2185 let branch_name = "pr/my-new-proposal";
2177 2186
@@ -2231,7 +2240,7 @@ mod push {
2231 2240
2232 let proposal = new_events 2241 let proposal = new_events
2233 .iter() 2242 .iter()
2234 .find(|e| e.iter_tags().any(|t| t.as_vec()[1].eq("root"))) 2243 .find(|e| e.tags().iter().any(|t| t.as_vec()[1].eq("root")))
2235 .unwrap(); 2244 .unwrap();
2236 2245
2237 assert!( 2246 assert!(
@@ -2246,7 +2255,8 @@ mod push {
2246 2255
2247 assert_eq!( 2256 assert_eq!(
2248 proposal 2257 proposal
2249 .iter_tags() 2258 .tags()
2259 .iter()
2250 .find(|t| t.as_vec()[0].eq("branch-name")) 2260 .find(|t| t.as_vec()[0].eq("branch-name"))
2251 .unwrap() 2261 .unwrap()
2252 .as_vec()[1], 2262 .as_vec()[1],
diff --git a/tests/send.rs b/tests/send.rs
index 57987e3..ef09425 100644
--- a/tests/send.rs
+++ b/tests/send.rs
@@ -85,11 +85,19 @@ mod when_commits_behind_ask_to_proceed {
85} 85}
86 86
87fn is_cover_letter(event: &nostr::Event) -> bool { 87fn is_cover_letter(event: &nostr::Event) -> bool {
88 event.kind.eq(&Kind::GitPatch) && event.iter_tags().any(|t| t.as_vec()[1].eq("cover-letter")) 88 event.kind.eq(&Kind::GitPatch)
89 && event
90 .tags()
91 .iter()
92 .any(|t| t.as_vec()[1].eq("cover-letter"))
89} 93}
90 94
91fn is_patch(event: &nostr::Event) -> bool { 95fn is_patch(event: &nostr::Event) -> bool {
92 event.kind.eq(&Kind::GitPatch) && !event.iter_tags().any(|t| t.as_vec()[1].eq("cover-letter")) 96 event.kind.eq(&Kind::GitPatch)
97 && !event
98 .tags()
99 .iter()
100 .any(|t| t.as_vec()[1].eq("cover-letter"))
93} 101}
94 102
95fn prep_git_repo() -> Result<GitTestRepo> { 103fn prep_git_repo() -> Result<GitTestRepo> {
@@ -366,7 +374,8 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_
366 374
367 assert_eq!( 375 assert_eq!(
368 cover_letter_event 376 cover_letter_event
369 .iter_tags() 377 .tags()
378 .iter()
370 .find(|t| t.as_vec()[0].eq("r")) 379 .find(|t| t.as_vec()[0].eq("r"))
371 .unwrap() 380 .unwrap()
372 .as_vec()[1], 381 .as_vec()[1],
@@ -383,18 +392,28 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_
383 for relay in [&r53, &r55, &r56] { 392 for relay in [&r53, &r55, &r56] {
384 let cover_letter_event: &nostr::Event = 393 let cover_letter_event: &nostr::Event =
385 relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); 394 relay.events.iter().find(|e| is_cover_letter(e)).unwrap();
386 assert!(cover_letter_event.iter_tags().any(|t| t.as_vec()[0].eq("a") 395 assert!(
387 && t.as_vec()[1].eq(&format!( 396 cover_letter_event
388 "{}:{TEST_KEY_1_PUBKEY_HEX}:{}", 397 .tags()
389 Kind::GitRepoAnnouncement, 398 .iter()
390 generate_repo_ref_event().identifier().unwrap() 399 .any(|t| t.as_vec()[0].eq("a")
391 )))); 400 && t.as_vec()[1].eq(&format!(
392 assert!(cover_letter_event.iter_tags().any(|t| t.as_vec()[0].eq("a") 401 "{}:{TEST_KEY_1_PUBKEY_HEX}:{}",
393 && t.as_vec()[1].eq(&format!( 402 Kind::GitRepoAnnouncement,
394 "{}:{TEST_KEY_2_PUBKEY_HEX}:{}", 403 generate_repo_ref_event().identifier().unwrap()
395 Kind::GitRepoAnnouncement, 404 )))
396 generate_repo_ref_event().identifier().unwrap() 405 );
397 )))); 406 assert!(
407 cover_letter_event
408 .tags()
409 .iter()
410 .any(|t| t.as_vec()[0].eq("a")
411 && t.as_vec()[1].eq(&format!(
412 "{}:{TEST_KEY_2_PUBKEY_HEX}:{}",
413 Kind::GitRepoAnnouncement,
414 generate_repo_ref_event().identifier().unwrap()
415 )))
416 );
398 } 417 }
399 Ok(()) 418 Ok(())
400 } 419 }
@@ -404,7 +423,8 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_
404 async fn p_tags_for_maintainers() -> Result<()> { 423 async fn p_tags_for_maintainers() -> Result<()> {
405 let event = generate_repo_ref_event(); 424 let event = generate_repo_ref_event();
406 let maintainers = &event 425 let maintainers = &event
407 .iter_tags() 426 .tags()
427 .iter()
408 .find(|t| t.as_vec()[0].eq(&"maintainers")) 428 .find(|t| t.as_vec()[0].eq(&"maintainers"))
409 .unwrap() 429 .unwrap()
410 .as_vec()[1..]; 430 .as_vec()[1..];
@@ -415,7 +435,8 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_
415 relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); 435 relay.events.iter().find(|e| is_cover_letter(e)).unwrap();
416 assert!( 436 assert!(
417 cover_letter_event 437 cover_letter_event
418 .iter_tags() 438 .tags()
439 .iter()
419 .any(|t| { t.as_vec()[0].eq("p") && t.as_vec()[1].eq(m) }) 440 .any(|t| { t.as_vec()[0].eq("p") && t.as_vec()[1].eq(m) })
420 ); 441 );
421 } 442 }
@@ -432,7 +453,8 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_
432 relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); 453 relay.events.iter().find(|e| is_cover_letter(e)).unwrap();
433 assert!( 454 assert!(
434 cover_letter_event 455 cover_letter_event
435 .iter_tags() 456 .tags()
457 .iter()
436 .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"cover-letter") }) 458 .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"cover-letter") })
437 ); 459 );
438 } 460 }
@@ -448,7 +470,8 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_
448 relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); 470 relay.events.iter().find(|e| is_cover_letter(e)).unwrap();
449 assert!( 471 assert!(
450 cover_letter_event 472 cover_letter_event
451 .iter_tags() 473 .tags()
474 .iter()
452 .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"root") }) 475 .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"root") })
453 ); 476 );
454 } 477 }
@@ -466,7 +489,8 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_
466 // branch-name tag 489 // branch-name tag
467 assert_eq!( 490 assert_eq!(
468 cover_letter_event 491 cover_letter_event
469 .iter_tags() 492 .tags()
493 .iter()
470 .find(|t| t.as_vec()[0].eq("branch-name")) 494 .find(|t| t.as_vec()[0].eq("branch-name"))
471 .unwrap() 495 .unwrap()
472 .as_vec()[1], 496 .as_vec()[1],
@@ -487,7 +511,8 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_
487 // branch-name tag 511 // branch-name tag
488 assert_eq!( 512 assert_eq!(
489 cover_letter_event 513 cover_letter_event
490 .iter_tags() 514 .tags()
515 .iter()
491 .find(|t| t.as_vec()[0].eq("alt")) 516 .find(|t| t.as_vec()[0].eq("alt"))
492 .unwrap() 517 .unwrap()
493 .as_vec()[1], 518 .as_vec()[1],
@@ -557,7 +582,8 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_
557 async fn p_tags_for_maintainers() -> Result<()> { 582 async fn p_tags_for_maintainers() -> Result<()> {
558 let event = generate_repo_ref_event(); 583 let event = generate_repo_ref_event();
559 let maintainers = &event 584 let maintainers = &event
560 .iter_tags() 585 .tags()
586 .iter()
561 .find(|t| t.as_vec()[0].eq(&"maintainers")) 587 .find(|t| t.as_vec()[0].eq(&"maintainers"))
562 .unwrap() 588 .unwrap()
563 .as_vec()[1..]; 589 .as_vec()[1..];
@@ -565,7 +591,8 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_
565 assert!( 591 assert!(
566 prep() 592 prep()
567 .await? 593 .await?
568 .iter_tags() 594 .tags()
595 .iter()
569 .any(|t| { t.as_vec()[0].eq("p") && t.as_vec()[1].eq(m) }) 596 .any(|t| { t.as_vec()[0].eq("p") && t.as_vec()[1].eq(m) })
570 ); 597 );
571 } 598 }
@@ -697,7 +724,8 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_
697 .collect::<Vec<&nostr::Event>>(); 724 .collect::<Vec<&nostr::Event>>();
698 assert_eq!( 725 assert_eq!(
699 patch_events[1] 726 patch_events[1]
700 .iter_tags() 727 .tags()
728 .iter()
701 .find(|t| t.as_vec()[0].eq("e") 729 .find(|t| t.as_vec()[0].eq("e")
702 && t.as_vec().len().eq(&4) 730 && t.as_vec().len().eq(&4)
703 && t.as_vec()[3].eq("reply")) 731 && t.as_vec()[3].eq("reply"))
@@ -1086,13 +1114,15 @@ mod when_no_cover_letter_flag_set_with_range_of_head_2_sends_2_patches_without_c
1086 // first patch tagged as root 1114 // first patch tagged as root
1087 assert!( 1115 assert!(
1088 patch_events[0] 1116 patch_events[0]
1089 .iter_tags() 1117 .tags()
1118 .iter()
1090 .any(|t| t.as_vec()[0].eq("t") && t.as_vec()[1].eq("root")) 1119 .any(|t| t.as_vec()[0].eq("t") && t.as_vec()[1].eq("root"))
1091 ); 1120 );
1092 // second patch not tagged as root 1121 // second patch not tagged as root
1093 assert!( 1122 assert!(
1094 !patch_events[1] 1123 !patch_events[1]
1095 .iter_tags() 1124 .tags()
1125 .iter()
1096 .any(|t| t.as_vec()[0].eq("t") && t.as_vec()[1].eq("root")) 1126 .any(|t| t.as_vec()[0].eq("t") && t.as_vec()[1].eq("root"))
1097 ); 1127 );
1098 } 1128 }
@@ -1113,7 +1143,8 @@ mod when_no_cover_letter_flag_set_with_range_of_head_2_sends_2_patches_without_c
1113 // branch-name tag 1143 // branch-name tag
1114 assert_eq!( 1144 assert_eq!(
1115 patch_events[0] 1145 patch_events[0]
1116 .iter_tags() 1146 .tags()
1147 .iter()
1117 .find(|t| t.as_vec()[0].eq("branch-name")) 1148 .find(|t| t.as_vec()[0].eq("branch-name"))
1118 .unwrap() 1149 .unwrap()
1119 .as_vec()[1], 1150 .as_vec()[1],
@@ -1136,7 +1167,8 @@ mod when_no_cover_letter_flag_set_with_range_of_head_2_sends_2_patches_without_c
1136 1167
1137 assert_eq!( 1168 assert_eq!(
1138 patch_events[1] 1169 patch_events[1]
1139 .iter_tags() 1170 .tags()
1171 .iter()
1140 .find(|t| t.as_vec()[0].eq("e") 1172 .find(|t| t.as_vec()[0].eq("e")
1141 && t.as_vec().len().eq(&4) 1173 && t.as_vec().len().eq(&4)
1142 && t.as_vec()[3].eq("root")) 1174 && t.as_vec()[3].eq("root"))
@@ -1540,7 +1572,8 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let
1540 relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); 1572 relay.events.iter().find(|e| is_cover_letter(e)).unwrap();
1541 assert!( 1573 assert!(
1542 cover_letter_event 1574 cover_letter_event
1543 .iter_tags() 1575 .tags()
1576 .iter()
1544 .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"root") }) 1577 .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"root") })
1545 ); 1578 );
1546 } 1579 }
@@ -1556,7 +1589,8 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let
1556 relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); 1589 relay.events.iter().find(|e| is_cover_letter(e)).unwrap();
1557 assert!( 1590 assert!(
1558 cover_letter_event 1591 cover_letter_event
1559 .iter_tags() 1592 .tags()
1593 .iter()
1560 .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"revision-root") }) 1594 .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"revision-root") })
1561 ); 1595 );
1562 } 1596 }
@@ -1572,7 +1606,8 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let
1572 relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); 1606 relay.events.iter().find(|e| is_cover_letter(e)).unwrap();
1573 assert_eq!( 1607 assert_eq!(
1574 cover_letter_event 1608 cover_letter_event
1575 .iter_tags() 1609 .tags()
1610 .iter()
1576 .find(|t| { 1611 .find(|t| {
1577 t.as_vec()[0].eq("e") 1612 t.as_vec()[0].eq("e")
1578 && t.as_vec().len().eq(&4) 1613 && t.as_vec().len().eq(&4)
@@ -1719,7 +1754,7 @@ mod in_reply_to_mentions_issue {
1719 for relay in [&r53, &r55, &r56] { 1754 for relay in [&r53, &r55, &r56] {
1720 let cover_letter_event: &nostr::Event = 1755 let cover_letter_event: &nostr::Event =
1721 relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); 1756 relay.events.iter().find(|e| is_cover_letter(e)).unwrap();
1722 assert!(cover_letter_event.iter_tags().any(|t| { 1757 assert!(cover_letter_event.tags().iter().any(|t| {
1723 t.as_vec()[0].eq("e") 1758 t.as_vec()[0].eq("e")
1724 && t.as_vec()[1].eq(&get_pretend_issue_event().id.to_hex()) 1759 && t.as_vec()[1].eq(&get_pretend_issue_event().id.to_hex())
1725 && t.as_vec()[3].eq(&"mention") 1760 && t.as_vec()[3].eq(&"mention")
@@ -1737,7 +1772,8 @@ mod in_reply_to_mentions_issue {
1737 relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); 1772 relay.events.iter().find(|e| is_cover_letter(e)).unwrap();
1738 assert!( 1773 assert!(
1739 !cover_letter_event 1774 !cover_letter_event
1740 .iter_tags() 1775 .tags()
1776 .iter()
1741 .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"revision-root") }) 1777 .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"revision-root") })
1742 ); 1778 );
1743 } 1779 }
@@ -1841,7 +1877,7 @@ mod in_reply_to_mentions_npub_and_nprofile_which_get_mentioned_in_proposal_root
1841 for relay in [&r53, &r55, &r56] { 1877 for relay in [&r53, &r55, &r56] {
1842 let cover_letter_event: &nostr::Event = 1878 let cover_letter_event: &nostr::Event =
1843 relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); 1879 relay.events.iter().find(|e| is_cover_letter(e)).unwrap();
1844 assert!(cover_letter_event.iter_tags().any(|t| { 1880 assert!(cover_letter_event.tags().iter().any(|t| {
1845 t.as_vec()[0].eq("p") 1881 t.as_vec()[0].eq("p")
1846 && t.as_vec()[1].eq(&nostr::Keys::parse( 1882 && t.as_vec()[1].eq(&nostr::Keys::parse(
1847 "nsec1q3c5xnsm5m4wgsrhwnz04p0d5mevkryyggqgdpa9jwulpq9gldhswgtxvq", 1883 "nsec1q3c5xnsm5m4wgsrhwnz04p0d5mevkryyggqgdpa9jwulpq9gldhswgtxvq",
@@ -1850,7 +1886,7 @@ mod in_reply_to_mentions_npub_and_nprofile_which_get_mentioned_in_proposal_root
1850 .public_key() 1886 .public_key()
1851 .to_hex()) 1887 .to_hex())
1852 })); 1888 }));
1853 assert!(cover_letter_event.iter_tags().any(|t| { 1889 assert!(cover_letter_event.tags().iter().any(|t| {
1854 t.as_vec()[0].eq("p") 1890 t.as_vec()[0].eq("p")
1855 && t.as_vec()[1].eq(&nostr::Keys::parse( 1891 && t.as_vec()[1].eq(&nostr::Keys::parse(
1856 "nsec1nx5ulvcndhcuu8k6q8fenw50l6y75sec7pj8vr0r68l6a44w3lqspvj02k", 1892 "nsec1nx5ulvcndhcuu8k6q8fenw50l6y75sec7pj8vr0r68l6a44w3lqspvj02k",