upleb.uk

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

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/key_handling/users.rs259
1 files changed, 147 insertions, 112 deletions
diff --git a/src/key_handling/users.rs b/src/key_handling/users.rs
index 2c6a897..2e88fba 100644
--- a/src/key_handling/users.rs
+++ b/src/key_handling/users.rs
@@ -679,18 +679,21 @@ mod tests {
679 mod when_within_caching_time_window { 679 mod when_within_caching_time_window {
680 use super::*; 680 use super::*;
681 681
682 #[test] 682 #[tokio::test]
683 fn returns_cached_details_without_checking_relays_or_updaing_config() -> Result<()> { 683 async fn returns_cached_details_without_checking_relays_or_updaing_config() -> Result<()>
684 {
684 let mut m = MockUserManager::default(); 685 let mut m = MockUserManager::default();
685 let client = generate_mock_client(); 686 let client = generate_mock_client();
686 m.config_manager 687 m.config_manager
687 .expect_load() 688 .expect_load()
688 .returning(|| Ok(generate_standard_config())); 689 .returning(|| Ok(generate_standard_config()));
689 let res = futures::executor::block_on(m.get_user( 690 let res = m
690 &client, 691 .get_user(
691 &TEST_KEY_1_KEYS.public_key(), 692 &client,
692 24 * 60 * 60, // within 24 hours 693 &TEST_KEY_1_KEYS.public_key(),
693 ))?; 694 24 * 60 * 60, // within 24 hours
695 )
696 .await?;
694 assert_eq!(res.metadata.name, "Fred"); 697 assert_eq!(res.metadata.name, "Fred");
695 assert_eq!(res.relays.relays[0].url, "ws://existingread"); 698 assert_eq!(res.relays.relays[0].url, "ws://existingread");
696 Ok(()) 699 Ok(())
@@ -700,8 +703,8 @@ mod tests {
700 mod returns_userref_with_latest_details_from_events_on_relays { 703 mod returns_userref_with_latest_details_from_events_on_relays {
701 use super::*; 704 use super::*;
702 705
703 #[test] 706 #[tokio::test]
704 fn name() -> Result<()> { 707 async fn name() -> Result<()> {
705 let mut m = MockUserManager::default(); 708 let mut m = MockUserManager::default();
706 let mut client = generate_mock_client(); 709 let mut client = generate_mock_client();
707 m.config_manager 710 m.config_manager
@@ -712,17 +715,19 @@ mod tests {
712 .expect_get_events() 715 .expect_get_events()
713 .returning(|_, _| Ok(vec![generate_test_key_1_metadata_event("fred")])); 716 .returning(|_, _| Ok(vec![generate_test_key_1_metadata_event("fred")]));
714 717
715 let res = futures::executor::block_on(m.get_user( 718 let res = m
716 &client, 719 .get_user(
717 &TEST_KEY_1_KEYS.public_key(), 720 &client,
718 5 * 60, // 5 mins ago 721 &TEST_KEY_1_KEYS.public_key(),
719 ))?; 722 5 * 60, // 5 mins ago
723 )
724 .await?;
720 assert_eq!(res.metadata.name, "fred"); 725 assert_eq!(res.metadata.name, "fred");
721 Ok(()) 726 Ok(())
722 } 727 }
723 728
724 #[test] 729 #[tokio::test]
725 fn name_ignoring_other_users_events() -> Result<()> { 730 async fn name_ignoring_other_users_events() -> Result<()> {
726 let mut m = MockUserManager::default(); 731 let mut m = MockUserManager::default();
727 let mut client = generate_mock_client(); 732 let mut client = generate_mock_client();
728 m.config_manager 733 m.config_manager
@@ -736,17 +741,19 @@ mod tests {
736 ]) 741 ])
737 }); 742 });
738 743
739 let res = futures::executor::block_on(m.get_user( 744 let res = m
740 &client, 745 .get_user(
741 &TEST_KEY_1_KEYS.public_key(), 746 &client,
742 5 * 60, // 5 mins ago 747 &TEST_KEY_1_KEYS.public_key(),
743 ))?; 748 5 * 60, // 5 mins ago
749 )
750 .await?;
744 assert_eq!(res.metadata.name, "fred"); 751 assert_eq!(res.metadata.name, "fred");
745 Ok(()) 752 Ok(())
746 } 753 }
747 754
748 #[test] 755 #[tokio::test]
749 fn relays() -> Result<()> { 756 async fn relays() -> Result<()> {
750 let mut m = MockUserManager::default(); 757 let mut m = MockUserManager::default();
751 let mut client = generate_mock_client(); 758 let mut client = generate_mock_client();
752 m.config_manager 759 m.config_manager
@@ -760,17 +767,19 @@ mod tests {
760 ]) 767 ])
761 }); 768 });
762 769
763 let res = futures::executor::block_on(m.get_user( 770 let res = m
764 &client, 771 .get_user(
765 &TEST_KEY_1_KEYS.public_key(), 772 &client,
766 5 * 60, // 5 mins ago 773 &TEST_KEY_1_KEYS.public_key(),
767 ))?; 774 5 * 60, // 5 mins ago
775 )
776 .await?;
768 assert_eq!(res.relays.relays, expected_userrelayrefs(),); 777 assert_eq!(res.relays.relays, expected_userrelayrefs(),);
769 Ok(()) 778 Ok(())
770 } 779 }
771 780
772 #[test] 781 #[tokio::test]
773 fn relays_ignoring_other_users_events() -> Result<()> { 782 async fn relays_ignoring_other_users_events() -> Result<()> {
774 let mut m = MockUserManager::default(); 783 let mut m = MockUserManager::default();
775 let mut client = generate_mock_client(); 784 let mut client = generate_mock_client();
776 m.config_manager 785 m.config_manager
@@ -788,11 +797,13 @@ mod tests {
788 ]) 797 ])
789 }); 798 });
790 799
791 let res = futures::executor::block_on(m.get_user( 800 let res = m
792 &client, 801 .get_user(
793 &TEST_KEY_1_KEYS.public_key(), 802 &client,
794 5 * 60, // 5 mins ago 803 &TEST_KEY_1_KEYS.public_key(),
795 ))?; 804 5 * 60, // 5 mins ago
805 )
806 .await?;
796 assert_eq!(res.relays.relays, expected_userrelayrefs(),); 807 assert_eq!(res.relays.relays, expected_userrelayrefs(),);
797 Ok(()) 808 Ok(())
798 } 809 }
@@ -801,8 +812,8 @@ mod tests {
801 mod saves_updates_to_config { 812 mod saves_updates_to_config {
802 use super::*; 813 use super::*;
803 814
804 #[test] 815 #[tokio::test]
805 fn saves_name_to_config() -> Result<()> { 816 async fn saves_name_to_config() -> Result<()> {
806 let mut m = MockUserManager::default(); 817 let mut m = MockUserManager::default();
807 let mut client = generate_mock_client(); 818 let mut client = generate_mock_client();
808 m.config_manager 819 m.config_manager
@@ -817,16 +828,18 @@ mod tests {
817 .expect_get_events() 828 .expect_get_events()
818 .returning(|_, _| Ok(vec![generate_test_key_1_metadata_event("fred")])); 829 .returning(|_, _| Ok(vec![generate_test_key_1_metadata_event("fred")]));
819 830
820 futures::executor::block_on(m.get_user( 831 let _ = m
821 &client, 832 .get_user(
822 &TEST_KEY_1_KEYS.public_key(), 833 &client,
823 5 * 60, // 5 mins ago 834 &TEST_KEY_1_KEYS.public_key(),
824 ))?; 835 5 * 60, // 5 mins ago
836 )
837 .await?;
825 Ok(()) 838 Ok(())
826 } 839 }
827 840
828 #[test] 841 #[tokio::test]
829 fn updates_metadata_created_at() -> Result<()> { 842 async fn updates_metadata_created_at() -> Result<()> {
830 let mut m = MockUserManager::default(); 843 let mut m = MockUserManager::default();
831 let mut client = generate_mock_client(); 844 let mut client = generate_mock_client();
832 m.config_manager 845 m.config_manager
@@ -841,16 +854,18 @@ mod tests {
841 .expect_get_events() 854 .expect_get_events()
842 .returning(|_, _| Ok(vec![generate_test_key_1_metadata_event("fred")])); 855 .returning(|_, _| Ok(vec![generate_test_key_1_metadata_event("fred")]));
843 856
844 futures::executor::block_on(m.get_user( 857 let _ = m
845 &client, 858 .get_user(
846 &TEST_KEY_1_KEYS.public_key(), 859 &client,
847 5 * 60, // 5 mins ago 860 &TEST_KEY_1_KEYS.public_key(),
848 ))?; 861 5 * 60, // 5 mins ago
862 )
863 .await?;
849 Ok(()) 864 Ok(())
850 } 865 }
851 866
852 #[test] 867 #[tokio::test]
853 fn saves_relays_to_config() -> Result<()> { 868 async fn saves_relays_to_config() -> Result<()> {
854 let mut m = MockUserManager::default(); 869 let mut m = MockUserManager::default();
855 let mut client = generate_mock_client(); 870 let mut client = generate_mock_client();
856 m.config_manager 871 m.config_manager
@@ -865,16 +880,18 @@ mod tests {
865 .expect_get_events() 880 .expect_get_events()
866 .returning(|_, _| Ok(vec![generate_relaylist_event()])); 881 .returning(|_, _| Ok(vec![generate_relaylist_event()]));
867 882
868 futures::executor::block_on(m.get_user( 883 let _ = m
869 &client, 884 .get_user(
870 &TEST_KEY_1_KEYS.public_key(), 885 &client,
871 5 * 60, // 5 mins ago 886 &TEST_KEY_1_KEYS.public_key(),
872 ))?; 887 5 * 60, // 5 mins ago
888 )
889 .await?;
873 Ok(()) 890 Ok(())
874 } 891 }
875 892
876 #[test] 893 #[tokio::test]
877 fn updates_relays_created_at() -> Result<()> { 894 async fn updates_relays_created_at() -> Result<()> {
878 let mut m = MockUserManager::default(); 895 let mut m = MockUserManager::default();
879 let mut client = generate_mock_client(); 896 let mut client = generate_mock_client();
880 m.config_manager 897 m.config_manager
@@ -889,16 +906,18 @@ mod tests {
889 .expect_get_events() 906 .expect_get_events()
890 .returning(|_, _| Ok(vec![generate_relaylist_event()])); 907 .returning(|_, _| Ok(vec![generate_relaylist_event()]));
891 908
892 futures::executor::block_on(m.get_user( 909 let _ = m
893 &client, 910 .get_user(
894 &TEST_KEY_1_KEYS.public_key(), 911 &client,
895 5 * 60, // 5 mins ago 912 &TEST_KEY_1_KEYS.public_key(),
896 ))?; 913 5 * 60, // 5 mins ago
914 )
915 .await?;
897 Ok(()) 916 Ok(())
898 } 917 }
899 918
900 #[test] 919 #[tokio::test]
901 fn when_no_changes_updates_last_updated() -> Result<()> { 920 async fn when_no_changes_updates_last_updated() -> Result<()> {
902 let mut m = MockUserManager::default(); 921 let mut m = MockUserManager::default();
903 let mut client = generate_mock_client(); 922 let mut client = generate_mock_client();
904 m.config_manager 923 m.config_manager
@@ -911,16 +930,18 @@ mod tests {
911 .returning(|_| Ok(())); 930 .returning(|_| Ok(()));
912 client.expect_get_events().returning(|_, _| Ok(vec![])); 931 client.expect_get_events().returning(|_, _| Ok(vec![]));
913 932
914 futures::executor::block_on(m.get_user( 933 let _ = m
915 &client, 934 .get_user(
916 &TEST_KEY_1_KEYS.public_key(), 935 &client,
917 5 * 60, // 5 mins ago 936 &TEST_KEY_1_KEYS.public_key(),
918 ))?; 937 5 * 60, // 5 mins ago
938 )
939 .await?;
919 Ok(()) 940 Ok(())
920 } 941 }
921 942
922 #[test] 943 #[tokio::test]
923 fn when_changes_updates_last_updated() -> Result<()> { 944 async fn when_changes_updates_last_updated() -> Result<()> {
924 let mut m = MockUserManager::default(); 945 let mut m = MockUserManager::default();
925 let mut client = generate_mock_client(); 946 let mut client = generate_mock_client();
926 m.config_manager 947 m.config_manager
@@ -935,19 +956,21 @@ mod tests {
935 .expect_get_events() 956 .expect_get_events()
936 .returning(|_, _| Ok(vec![generate_test_key_1_metadata_event("fred")])); 957 .returning(|_, _| Ok(vec![generate_test_key_1_metadata_event("fred")]));
937 958
938 futures::executor::block_on(m.get_user( 959 let _ = m
939 &client, 960 .get_user(
940 &TEST_KEY_1_KEYS.public_key(), 961 &client,
941 5 * 60, // 5 mins ago 962 &TEST_KEY_1_KEYS.public_key(),
942 ))?; 963 5 * 60, // 5 mins ago
964 )
965 .await?;
943 Ok(()) 966 Ok(())
944 } 967 }
945 } 968 }
946 969
947 mod fetches_from_correct_relays { 970 mod fetches_from_correct_relays {
948 use super::*; 971 use super::*;
949 #[test] 972 #[tokio::test]
950 fn when_userref_write_relays_present_fetches_only_from_them() -> Result<()> { 973 async fn when_userref_write_relays_present_fetches_only_from_them() -> Result<()> {
951 let mut m = MockUserManager::default(); 974 let mut m = MockUserManager::default();
952 let mut client = generate_mock_client(); 975 let mut client = generate_mock_client();
953 m.config_manager 976 m.config_manager
@@ -966,15 +989,19 @@ mod tests {
966 }) 989 })
967 .returning(|_, _| Ok(vec![])); 990 .returning(|_, _| Ok(vec![]));
968 991
969 futures::executor::block_on(m.get_user( 992 let _ = m
970 &client, 993 .get_user(
971 &TEST_KEY_1_KEYS.public_key(), 994 &client,
972 5 * 60, // 5 mins ago 995 &TEST_KEY_1_KEYS.public_key(),
973 ))?; 996 5 * 60, // 5 mins ago
997 )
998 .await?;
974 Ok(()) 999 Ok(())
975 } 1000 }
976 #[test] 1001
977 fn when_userref_write_relays_not_present_fetches_from_fallback_relays() -> Result<()> { 1002 #[tokio::test]
1003 async fn when_userref_write_relays_not_present_fetches_from_fallback_relays()
1004 -> Result<()> {
978 let mut m = MockUserManager::default(); 1005 let mut m = MockUserManager::default();
979 let mut client = generate_mock_client(); 1006 let mut client = generate_mock_client();
980 m.config_manager.expect_load().returning(|| { 1007 m.config_manager.expect_load().returning(|| {
@@ -996,19 +1023,21 @@ mod tests {
996 .withf(move |relays, _filters| fallback_relays().eq(relays)) 1023 .withf(move |relays, _filters| fallback_relays().eq(relays))
997 .returning(|_, _| Ok(vec![])); 1024 .returning(|_, _| Ok(vec![]));
998 1025
999 futures::executor::block_on(m.get_user( 1026 let _ = m
1000 &client, 1027 .get_user(
1001 &TEST_KEY_1_KEYS.public_key(), 1028 &client,
1002 5 * 60, // 5 mins ago 1029 &TEST_KEY_1_KEYS.public_key(),
1003 ))?; 1030 5 * 60, // 5 mins ago
1031 )
1032 .await?;
1004 Ok(()) 1033 Ok(())
1005 } 1034 }
1006 1035
1007 mod fetches_from_new_relays_discovered_in_incoming_relay_list { 1036 mod fetches_from_new_relays_discovered_in_incoming_relay_list {
1008 use super::*; 1037 use super::*;
1009 1038
1010 #[test] 1039 #[tokio::test]
1011 fn when_all_relays_in_list_are_new_finds_name() -> Result<()> { 1040 async fn when_all_relays_in_list_are_new_finds_name() -> Result<()> {
1012 let mut m = MockUserManager::default(); 1041 let mut m = MockUserManager::default();
1013 let mut client = generate_mock_client(); 1042 let mut client = generate_mock_client();
1014 m.config_manager.expect_load().returning(|| { 1043 m.config_manager.expect_load().returning(|| {
@@ -1052,17 +1081,19 @@ mod tests {
1052 } 1081 }
1053 }); 1082 });
1054 1083
1055 let res = futures::executor::block_on(m.get_user( 1084 let res = m
1056 &client, 1085 .get_user(
1057 &TEST_KEY_1_KEYS.public_key(), 1086 &client,
1058 5 * 60, // 5 mins ago 1087 &TEST_KEY_1_KEYS.public_key(),
1059 ))?; 1088 5 * 60, // 5 mins ago
1089 )
1090 .await?;
1060 assert_eq!(res.metadata.name, "fred"); 1091 assert_eq!(res.metadata.name, "fred");
1061 Ok(()) 1092 Ok(())
1062 } 1093 }
1063 1094
1064 #[test] 1095 #[tokio::test]
1065 fn only_fetches_from_newly_added_relays() -> Result<()> { 1096 async fn only_fetches_from_newly_added_relays() -> Result<()> {
1066 let mut m = MockUserManager::default(); 1097 let mut m = MockUserManager::default();
1067 let mut client = generate_mock_client(); 1098 let mut client = generate_mock_client();
1068 m.config_manager.expect_load().returning(|| { 1099 m.config_manager.expect_load().returning(|| {
@@ -1095,19 +1126,21 @@ mod tests {
1095 } 1126 }
1096 }); 1127 });
1097 1128
1098 let res = futures::executor::block_on(m.get_user( 1129 let res = m
1099 &client, 1130 .get_user(
1100 &TEST_KEY_1_KEYS.public_key(), 1131 &client,
1101 5 * 60, // 5 mins ago 1132 &TEST_KEY_1_KEYS.public_key(),
1102 ))?; 1133 5 * 60, // 5 mins ago
1134 )
1135 .await?;
1103 assert_eq!(res.metadata.name, "fred"); 1136 assert_eq!(res.metadata.name, "fred");
1104 Ok(()) 1137 Ok(())
1105 } 1138 }
1106 } 1139 }
1107 } 1140 }
1108 1141
1109 #[test] 1142 #[tokio::test]
1110 fn when_failed_to_fetch_events_returns_cached_details() -> Result<()> { 1143 async fn when_failed_to_fetch_events_returns_cached_details() -> Result<()> {
1111 let mut m = MockUserManager::default(); 1144 let mut m = MockUserManager::default();
1112 let mut client = generate_mock_client(); 1145 let mut client = generate_mock_client();
1113 m.config_manager 1146 m.config_manager
@@ -1117,11 +1150,13 @@ mod tests {
1117 .expect_get_events() 1150 .expect_get_events()
1118 .returning(|_, _| Err(anyhow!("test error"))); 1151 .returning(|_, _| Err(anyhow!("test error")));
1119 1152
1120 let res = futures::executor::block_on(m.get_user( 1153 let res = m
1121 &client, 1154 .get_user(
1122 &TEST_KEY_1_KEYS.public_key(), 1155 &client,
1123 5 * 60, // 10 mins ago 1156 &TEST_KEY_1_KEYS.public_key(),
1124 ))?; 1157 5 * 60, // 10 mins ago
1158 )
1159 .await?;
1125 assert_eq!(res.metadata.name, "Fred"); 1160 assert_eq!(res.metadata.name, "Fred");
1126 Ok(()) 1161 Ok(())
1127 } 1162 }