diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ngit_list.rs | 2 | ||||
| -rw-r--r-- | tests/ngit_send.rs | 86 |
2 files changed, 66 insertions, 22 deletions
diff --git a/tests/ngit_list.rs b/tests/ngit_list.rs index 0547ad4..39385d6 100644 --- a/tests/ngit_list.rs +++ b/tests/ngit_list.rs | |||
| @@ -79,7 +79,7 @@ mod cannot_find_repo_event { | |||
| 79 | test_repo.populate()?; | 79 | test_repo.populate()?; |
| 80 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); | 80 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); |
| 81 | p.expect( | 81 | p.expect( |
| 82 | "hint: https://gitworkshop.dev/repos lists repositories and their nostr address\r\n", | 82 | "hint: https://gitworkshop.dev/search lists repositories and their nostr address\r\n", |
| 83 | )?; | 83 | )?; |
| 84 | if invalid_input { | 84 | if invalid_input { |
| 85 | let mut input = p.expect_input("nostr repository")?; | 85 | let mut input = p.expect_input("nostr repository")?; |
diff --git a/tests/ngit_send.rs b/tests/ngit_send.rs index b0c1768..a5bb564 100644 --- a/tests/ngit_send.rs +++ b/tests/ngit_send.rs | |||
| @@ -37,6 +37,25 @@ mod when_commits_behind_ask_to_proceed { | |||
| 37 | Ok(test_repo) | 37 | Ok(test_repo) |
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | fn create_relay_51() -> Result<Relay<'static>> { | ||
| 41 | Ok(Relay::new( | ||
| 42 | 8051, | ||
| 43 | None, | ||
| 44 | Some(&|relay, client_id, subscription_id, _| -> Result<()> { | ||
| 45 | relay.respond_events( | ||
| 46 | client_id, | ||
| 47 | &subscription_id, | ||
| 48 | &vec![ | ||
| 49 | generate_test_key_1_metadata_event("fred"), | ||
| 50 | generate_test_key_1_relay_list_event(), | ||
| 51 | generate_repo_ref_event(), | ||
| 52 | ], | ||
| 53 | )?; | ||
| 54 | Ok(()) | ||
| 55 | }), | ||
| 56 | )) | ||
| 57 | } | ||
| 58 | |||
| 40 | fn expect_confirm_prompt(p: &mut CliTester) -> Result<CliTesterConfirmPrompt> { | 59 | fn expect_confirm_prompt(p: &mut CliTester) -> Result<CliTesterConfirmPrompt> { |
| 41 | p.expect("fetching updates...\r\n")?; | 60 | p.expect("fetching updates...\r\n")?; |
| 42 | p.expect_eventually("\r\n")?; // may be 'no updates' or some updates | 61 | p.expect_eventually("\r\n")?; // may be 'no updates' or some updates |
| @@ -49,37 +68,62 @@ mod when_commits_behind_ask_to_proceed { | |||
| 49 | ) | 68 | ) |
| 50 | } | 69 | } |
| 51 | 70 | ||
| 52 | #[test] | 71 | #[tokio::test] |
| 53 | fn asked_with_default_no() -> Result<()> { | 72 | #[serial] |
| 73 | async fn asked_with_default_no() -> Result<()> { | ||
| 54 | let test_repo = prep_test_repo()?; | 74 | let test_repo = prep_test_repo()?; |
| 75 | let mut r51 = create_relay_51()?; | ||
| 76 | // // check relay had the right number of events | ||
| 77 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { | ||
| 78 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); | ||
| 79 | expect_confirm_prompt(&mut p)?; | ||
| 80 | p.exit()?; | ||
| 81 | relay::shutdown_relay(8051)?; | ||
| 82 | Ok(()) | ||
| 83 | }); | ||
| 55 | 84 | ||
| 56 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); | 85 | // launch relay |
| 57 | expect_confirm_prompt(&mut p)?; | 86 | r51.listen_until_close().await?; |
| 58 | p.exit()?; | 87 | cli_tester_handle.join().unwrap()?; |
| 59 | Ok(()) | 88 | Ok(()) |
| 60 | } | 89 | } |
| 61 | 90 | ||
| 62 | #[test] | 91 | #[tokio::test] |
| 63 | fn when_response_is_false_aborts() -> Result<()> { | 92 | #[serial] |
| 93 | async fn when_response_is_false_aborts() -> Result<()> { | ||
| 64 | let test_repo = prep_test_repo()?; | 94 | let test_repo = prep_test_repo()?; |
| 95 | let mut r51 = create_relay_51()?; | ||
| 96 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { | ||
| 97 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); | ||
| 98 | expect_confirm_prompt(&mut p)?.succeeds_with(Some(false))?; | ||
| 99 | p.expect_end_with("Error: aborting so commits can be rebased\r\n")?; | ||
| 100 | relay::shutdown_relay(8051)?; | ||
| 101 | Ok(()) | ||
| 102 | }); | ||
| 65 | 103 | ||
| 66 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); | 104 | // launch relay |
| 67 | 105 | r51.listen_until_close().await?; | |
| 68 | expect_confirm_prompt(&mut p)?.succeeds_with(Some(false))?; | 106 | cli_tester_handle.join().unwrap()?; |
| 69 | |||
| 70 | p.expect_end_with("Error: aborting so commits can be rebased\r\n")?; | ||
| 71 | |||
| 72 | Ok(()) | 107 | Ok(()) |
| 73 | } | 108 | } |
| 74 | #[test] | 109 | |
| 110 | #[tokio::test] | ||
| 75 | #[serial] | 111 | #[serial] |
| 76 | fn when_response_is_true_proceeds() -> Result<()> { | 112 | async fn when_response_is_true_proceeds() -> Result<()> { |
| 77 | let test_repo = prep_test_repo()?; | 113 | let test_repo = prep_test_repo()?; |
| 114 | let mut r51 = create_relay_51()?; | ||
| 115 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { | ||
| 116 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); | ||
| 117 | expect_confirm_prompt(&mut p)?.succeeds_with(Some(true))?; | ||
| 118 | p.expect("? include cover letter")?; | ||
| 119 | p.exit()?; | ||
| 120 | relay::shutdown_relay(8051)?; | ||
| 121 | Ok(()) | ||
| 122 | }); | ||
| 78 | 123 | ||
| 79 | let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); | 124 | // launch relay |
| 80 | expect_confirm_prompt(&mut p)?.succeeds_with(Some(true))?; | 125 | r51.listen_until_close().await?; |
| 81 | p.expect("? include cover letter")?; | 126 | cli_tester_handle.join().unwrap()?; |
| 82 | p.exit()?; | ||
| 83 | Ok(()) | 127 | Ok(()) |
| 84 | } | 128 | } |
| 85 | } | 129 | } |
| @@ -158,7 +202,7 @@ fn expect_msgs_first(p: &mut CliTester, include_cover_letter: bool) -> Result<() | |||
| 158 | } | 202 | } |
| 159 | 203 | ||
| 160 | fn expect_msgs_after(p: &mut CliTester) -> Result<()> { | 204 | fn expect_msgs_after(p: &mut CliTester) -> Result<()> { |
| 161 | p.expect_after_whitespace("view in gitworkshop.dev: https://gitworkshop.dev/repo")?; | 205 | p.expect_after_whitespace("view in gitworkshop.dev: https://gitworkshop.dev/")?; |
| 162 | p.expect_eventually("\r\n")?; | 206 | p.expect_eventually("\r\n")?; |
| 163 | p.expect("view in another client: https://njump.me/")?; | 207 | p.expect("view in another client: https://njump.me/")?; |
| 164 | p.expect_eventually("\r\n")?; | 208 | p.expect_eventually("\r\n")?; |
| @@ -1619,7 +1663,7 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let | |||
| 1619 | .unwrap() | 1663 | .unwrap() |
| 1620 | .as_slice()[1], | 1664 | .as_slice()[1], |
| 1621 | // id of state nevent | 1665 | // id of state nevent |
| 1622 | "431e58eb8e1b4e20292d1d5bbe81d5cfb042e1bc165de32eddfdd52245a4cce4", | 1666 | "000c104861e34a453481ab23e7de21a6baf475b394479705363b035936732528", |
| 1623 | ); | 1667 | ); |
| 1624 | } | 1668 | } |
| 1625 | Ok(()) | 1669 | Ok(()) |