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:
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",