diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/git_remote_helper.rs | 137 |
1 files changed, 118 insertions, 19 deletions
diff --git a/tests/git_remote_helper.rs b/tests/git_remote_helper.rs index 20ecad7..69f290a 100644 --- a/tests/git_remote_helper.rs +++ b/tests/git_remote_helper.rs | |||
| @@ -63,7 +63,9 @@ async fn generate_repo_with_state_event() -> Result<(nostr::Event, GitTestRepo)> | |||
| 63 | let events = vec![ | 63 | let events = vec![ |
| 64 | generate_test_key_1_metadata_event("fred"), | 64 | generate_test_key_1_metadata_event("fred"), |
| 65 | generate_test_key_1_relay_list_event(), | 65 | generate_test_key_1_relay_list_event(), |
| 66 | generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), | 66 | generate_repo_ref_event_with_git_server(vec![ |
| 67 | source_git_repo.dir.to_str().unwrap().to_string(), | ||
| 68 | ]), | ||
| 67 | ]; | 69 | ]; |
| 68 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) | 70 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) |
| 69 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( | 71 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( |
| @@ -136,7 +138,9 @@ mod initially_runs_fetch { | |||
| 136 | let events = vec![ | 138 | let events = vec![ |
| 137 | generate_test_key_1_metadata_event("fred"), | 139 | generate_test_key_1_metadata_event("fred"), |
| 138 | generate_test_key_1_relay_list_event(), | 140 | generate_test_key_1_relay_list_event(), |
| 139 | generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), | 141 | generate_repo_ref_event_with_git_server(vec![ |
| 142 | source_git_repo.dir.to_str().unwrap().to_string(), | ||
| 143 | ]), | ||
| 140 | ]; | 144 | ]; |
| 141 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) | 145 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) |
| 142 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( | 146 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( |
| @@ -203,7 +207,9 @@ mod list { | |||
| 203 | let events = vec![ | 207 | let events = vec![ |
| 204 | generate_test_key_1_metadata_event("fred"), | 208 | generate_test_key_1_metadata_event("fred"), |
| 205 | generate_test_key_1_relay_list_event(), | 209 | generate_test_key_1_relay_list_event(), |
| 206 | generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), | 210 | generate_repo_ref_event_with_git_server(vec![ |
| 211 | source_git_repo.dir.to_str().unwrap().to_string(), | ||
| 212 | ]), | ||
| 207 | ]; | 213 | ]; |
| 208 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) | 214 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) |
| 209 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( | 215 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( |
| @@ -276,7 +282,9 @@ mod list { | |||
| 276 | let events = vec![ | 282 | let events = vec![ |
| 277 | generate_test_key_1_metadata_event("fred"), | 283 | generate_test_key_1_metadata_event("fred"), |
| 278 | generate_test_key_1_relay_list_event(), | 284 | generate_test_key_1_relay_list_event(), |
| 279 | generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), | 285 | generate_repo_ref_event_with_git_server(vec![ |
| 286 | source_git_repo.dir.to_str().unwrap().to_string(), | ||
| 287 | ]), | ||
| 280 | state_event, | 288 | state_event, |
| 281 | ]; | 289 | ]; |
| 282 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) | 290 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) |
| @@ -357,7 +365,9 @@ mod list { | |||
| 357 | let events = vec![ | 365 | let events = vec![ |
| 358 | generate_test_key_1_metadata_event("fred"), | 366 | generate_test_key_1_metadata_event("fred"), |
| 359 | generate_test_key_1_relay_list_event(), | 367 | generate_test_key_1_relay_list_event(), |
| 360 | generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), | 368 | generate_repo_ref_event_with_git_server(vec![ |
| 369 | source_git_repo.dir.to_str().unwrap().to_string(), | ||
| 370 | ]), | ||
| 361 | state_event, | 371 | state_event, |
| 362 | ]; | 372 | ]; |
| 363 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) | 373 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) |
| @@ -433,7 +443,9 @@ mod fetch { | |||
| 433 | let events = vec![ | 443 | let events = vec![ |
| 434 | generate_test_key_1_metadata_event("fred"), | 444 | generate_test_key_1_metadata_event("fred"), |
| 435 | generate_test_key_1_relay_list_event(), | 445 | generate_test_key_1_relay_list_event(), |
| 436 | generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), | 446 | generate_repo_ref_event_with_git_server(vec![ |
| 447 | source_git_repo.dir.to_str().unwrap().to_string(), | ||
| 448 | ]), | ||
| 437 | ]; | 449 | ]; |
| 438 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) | 450 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) |
| 439 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( | 451 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( |
| @@ -513,7 +525,9 @@ mod push { | |||
| 513 | let events = vec![ | 525 | let events = vec![ |
| 514 | generate_test_key_1_metadata_event("fred"), | 526 | generate_test_key_1_metadata_event("fred"), |
| 515 | generate_test_key_1_relay_list_event(), | 527 | generate_test_key_1_relay_list_event(), |
| 516 | generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), | 528 | generate_repo_ref_event_with_git_server(vec![ |
| 529 | source_git_repo.dir.to_str().unwrap().to_string(), | ||
| 530 | ]), | ||
| 517 | ]; | 531 | ]; |
| 518 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) | 532 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) |
| 519 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( | 533 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( |
| @@ -595,7 +609,9 @@ mod push { | |||
| 595 | let events = vec![ | 609 | let events = vec![ |
| 596 | generate_test_key_1_metadata_event("fred"), | 610 | generate_test_key_1_metadata_event("fred"), |
| 597 | generate_test_key_1_relay_list_event(), | 611 | generate_test_key_1_relay_list_event(), |
| 598 | generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), | 612 | generate_repo_ref_event_with_git_server(vec![ |
| 613 | source_git_repo.dir.to_str().unwrap().to_string(), | ||
| 614 | ]), | ||
| 599 | ]; | 615 | ]; |
| 600 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) | 616 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) |
| 601 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( | 617 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( |
| @@ -688,9 +704,9 @@ mod push { | |||
| 688 | let events = vec![ | 704 | let events = vec![ |
| 689 | generate_test_key_1_metadata_event("fred"), | 705 | generate_test_key_1_metadata_event("fred"), |
| 690 | generate_test_key_1_relay_list_event(), | 706 | generate_test_key_1_relay_list_event(), |
| 691 | generate_repo_ref_event_with_git_server( | 707 | generate_repo_ref_event_with_git_server(vec![ |
| 692 | source_git_repo.dir.to_str().unwrap(), | 708 | source_git_repo.dir.to_str().unwrap().to_string(), |
| 693 | ), | 709 | ]), |
| 694 | ]; | 710 | ]; |
| 695 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) | 711 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) |
| 696 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( | 712 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( |
| @@ -788,9 +804,9 @@ mod push { | |||
| 788 | let events = vec![ | 804 | let events = vec![ |
| 789 | generate_test_key_1_metadata_event("fred"), | 805 | generate_test_key_1_metadata_event("fred"), |
| 790 | generate_test_key_1_relay_list_event(), | 806 | generate_test_key_1_relay_list_event(), |
| 791 | generate_repo_ref_event_with_git_server( | 807 | generate_repo_ref_event_with_git_server(vec![ |
| 792 | source_git_repo.dir.to_str().unwrap(), | 808 | source_git_repo.dir.to_str().unwrap().to_string(), |
| 793 | ), | 809 | ]), |
| 794 | state_event.clone(), | 810 | state_event.clone(), |
| 795 | ]; | 811 | ]; |
| 796 | 812 | ||
| @@ -918,7 +934,9 @@ mod push { | |||
| 918 | let events = vec![ | 934 | let events = vec![ |
| 919 | generate_test_key_1_metadata_event("fred"), | 935 | generate_test_key_1_metadata_event("fred"), |
| 920 | generate_test_key_1_relay_list_event(), | 936 | generate_test_key_1_relay_list_event(), |
| 921 | generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), | 937 | generate_repo_ref_event_with_git_server(vec![ |
| 938 | source_git_repo.dir.to_str().unwrap().to_string(), | ||
| 939 | ]), | ||
| 922 | ]; | 940 | ]; |
| 923 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) | 941 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) |
| 924 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( | 942 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( |
| @@ -1003,7 +1021,9 @@ mod push { | |||
| 1003 | let events = vec![ | 1021 | let events = vec![ |
| 1004 | generate_test_key_1_metadata_event("fred"), | 1022 | generate_test_key_1_metadata_event("fred"), |
| 1005 | generate_test_key_1_relay_list_event(), | 1023 | generate_test_key_1_relay_list_event(), |
| 1006 | generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), | 1024 | generate_repo_ref_event_with_git_server(vec![ |
| 1025 | source_git_repo.dir.to_str().unwrap().to_string(), | ||
| 1026 | ]), | ||
| 1007 | ]; | 1027 | ]; |
| 1008 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) | 1028 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) |
| 1009 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( | 1029 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( |
| @@ -1083,9 +1103,9 @@ mod push { | |||
| 1083 | let events = vec![ | 1103 | let events = vec![ |
| 1084 | generate_test_key_1_metadata_event("fred"), | 1104 | generate_test_key_1_metadata_event("fred"), |
| 1085 | generate_test_key_1_relay_list_event(), | 1105 | generate_test_key_1_relay_list_event(), |
| 1086 | generate_repo_ref_event_with_git_server( | 1106 | generate_repo_ref_event_with_git_server(vec![ |
| 1087 | source_git_repo.dir.to_str().unwrap(), | 1107 | source_git_repo.dir.to_str().unwrap().to_string(), |
| 1088 | ), | 1108 | ]), |
| 1089 | state_event.clone(), | 1109 | state_event.clone(), |
| 1090 | ]; | 1110 | ]; |
| 1091 | 1111 | ||
| @@ -1155,4 +1175,83 @@ mod push { | |||
| 1155 | } | 1175 | } |
| 1156 | } | 1176 | } |
| 1157 | } | 1177 | } |
| 1178 | |||
| 1179 | mod pushes_to_all_git_servers_listed { | ||
| 1180 | use super::*; | ||
| 1181 | async fn async_run_test() -> Result<()> { | ||
| 1182 | let (state_event, source_git_repo) = generate_repo_with_state_event().await?; | ||
| 1183 | let second_source_git_repo = GitTestRepo::duplicate(&source_git_repo)?; | ||
| 1184 | |||
| 1185 | // uppdate announcement with extra git server | ||
| 1186 | |||
| 1187 | let git_repo = prep_git_repo()?; | ||
| 1188 | |||
| 1189 | std::fs::write(git_repo.dir.join("new.md"), "some content")?; | ||
| 1190 | let main_commit_id = git_repo.stage_and_commit("new.md")?; | ||
| 1191 | |||
| 1192 | let events = vec![ | ||
| 1193 | generate_test_key_1_metadata_event("fred"), | ||
| 1194 | generate_test_key_1_relay_list_event(), | ||
| 1195 | generate_repo_ref_event_with_git_server(vec![ | ||
| 1196 | source_git_repo.dir.to_str().unwrap().to_string(), | ||
| 1197 | second_source_git_repo.dir.to_str().unwrap().to_string(), | ||
| 1198 | ]), | ||
| 1199 | state_event.clone(), | ||
| 1200 | ]; | ||
| 1201 | |||
| 1202 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) | ||
| 1203 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( | ||
| 1204 | Relay::new(8051, None, None), | ||
| 1205 | Relay::new(8052, None, None), | ||
| 1206 | Relay::new(8053, None, None), | ||
| 1207 | Relay::new(8055, None, None), | ||
| 1208 | Relay::new(8056, None, None), | ||
| 1209 | Relay::new(8057, None, None), | ||
| 1210 | ); | ||
| 1211 | r51.events = events.clone(); | ||
| 1212 | r55.events = events; | ||
| 1213 | |||
| 1214 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { | ||
| 1215 | let mut p = cli_tester_after_fetch(&git_repo)?; | ||
| 1216 | p.send_line("push refs/heads/main:refs/heads/main")?; | ||
| 1217 | p.send_line("")?; | ||
| 1218 | p.expect("ok refs/heads/main\r\n")?; | ||
| 1219 | p.expect("\r\n")?; | ||
| 1220 | p.exit()?; | ||
| 1221 | for p in [51, 52, 53, 55, 56, 57] { | ||
| 1222 | relay::shutdown_relay(8000 + p)?; | ||
| 1223 | } | ||
| 1224 | Ok(()) | ||
| 1225 | }); | ||
| 1226 | // launch relays | ||
| 1227 | let _ = join!( | ||
| 1228 | r51.listen_until_close(), | ||
| 1229 | r52.listen_until_close(), | ||
| 1230 | r53.listen_until_close(), | ||
| 1231 | r55.listen_until_close(), | ||
| 1232 | r56.listen_until_close(), | ||
| 1233 | r57.listen_until_close(), | ||
| 1234 | ); | ||
| 1235 | |||
| 1236 | cli_tester_handle.join().unwrap()?; | ||
| 1237 | |||
| 1238 | // git_server updated | ||
| 1239 | assert_eq!( | ||
| 1240 | source_git_repo.get_tip_of_local_branch("main")?, | ||
| 1241 | main_commit_id | ||
| 1242 | ); | ||
| 1243 | assert_eq!( | ||
| 1244 | second_source_git_repo.get_tip_of_local_branch("main")?, | ||
| 1245 | main_commit_id | ||
| 1246 | ); | ||
| 1247 | |||
| 1248 | Ok(()) | ||
| 1249 | } | ||
| 1250 | |||
| 1251 | #[tokio::test] | ||
| 1252 | #[serial] | ||
| 1253 | async fn second_git_server_uptodate() -> Result<()> { | ||
| 1254 | async_run_test().await | ||
| 1255 | } | ||
| 1256 | } | ||
| 1158 | } | 1257 | } |