upleb.uk

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

summaryrefslogtreecommitdiff
path: root/tests/ngit_login.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2024-12-16 09:00:46 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2024-12-16 09:46:30 +0000
commit4ee83e2fe5335a8afd78439c35f029c4a472e797 (patch)
treebdb111b191e7a68cb74ce29b4bb2757b4b7be91f /tests/ngit_login.rs
parent5fe839e2bf8ceb2931c1984efb2d956980431203 (diff)
chore: bump nix flake rust nightly `fmt` overlay
update the rust nightly `fmt` overlay which needs to be pinned to a specific version (this case by date) update formatting in main files via `cargo fmt`
Diffstat (limited to 'tests/ngit_login.rs')
-rw-r--r--tests/ngit_login.rs352
1 files changed, 142 insertions, 210 deletions
diff --git a/tests/ngit_login.rs b/tests/ngit_login.rs
index 78a160c..b1e2676 100644
--- a/tests/ngit_login.rs
+++ b/tests/ngit_login.rs
@@ -6,27 +6,21 @@ use test_utils::*;
6static EXPECTED_NSEC_PROMPT: &str = "nsec"; 6static EXPECTED_NSEC_PROMPT: &str = "nsec";
7 7
8fn show_first_time_login_choices(p: &mut CliTester) -> Result<CliTesterChoicePrompt> { 8fn show_first_time_login_choices(p: &mut CliTester) -> Result<CliTesterChoicePrompt> {
9 p.expect_choice( 9 p.expect_choice("login to nostr", vec![
10 "login to nostr", 10 "secret key (nsec / ncryptsec)".to_string(),
11 vec![ 11 "nostr connect (remote signer)".to_string(),
12 "secret key (nsec / ncryptsec)".to_string(), 12 "create account".to_string(),
13 "nostr connect (remote signer)".to_string(), 13 "help".to_string(),
14 "create account".to_string(), 14 ])
15 "help".to_string(),
16 ],
17 )
18} 15}
19 16
20fn first_time_login_choices_succeeds_with_nsec(p: &mut CliTester, nsec: &str) -> Result<()> { 17fn first_time_login_choices_succeeds_with_nsec(p: &mut CliTester, nsec: &str) -> Result<()> {
21 p.expect_choice( 18 p.expect_choice("login to nostr", vec![
22 "login to nostr", 19 "secret key (nsec / ncryptsec)".to_string(),
23 vec![ 20 "nostr connect (remote signer)".to_string(),
24 "secret key (nsec / ncryptsec)".to_string(), 21 "create account".to_string(),
25 "nostr connect (remote signer)".to_string(), 22 "help".to_string(),
26 "create account".to_string(), 23 ])?
27 "help".to_string(),
28 ],
29 )?
30 .succeeds_with(0, false, Some(0))?; 24 .succeeds_with(0, false, Some(0))?;
31 25
32 p.expect_input(EXPECTED_NSEC_PROMPT)? 26 p.expect_input(EXPECTED_NSEC_PROMPT)?
@@ -49,7 +43,7 @@ fn standard_first_time_login_with_nsec() -> Result<CliTester> {
49mod with_relays { 43mod with_relays {
50 use anyhow::Ok; 44 use anyhow::Ok;
51 use futures::join; 45 use futures::join;
52 use test_utils::relay::{shutdown_relay, ListenerReqFunc, Relay}; 46 use test_utils::relay::{ListenerReqFunc, Relay, shutdown_relay};
53 47
54 use super::*; 48 use super::*;
55 49
@@ -137,25 +131,17 @@ mod with_relays {
137 async fn when_latest_metadata_and_relay_list_on_all_relays() -> Result<()> { 131 async fn when_latest_metadata_and_relay_list_on_all_relays() -> Result<()> {
138 run_test_displays_correct_name( 132 run_test_displays_correct_name(
139 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 133 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
140 relay.respond_events( 134 relay.respond_events(client_id, &subscription_id, &vec![
141 client_id, 135 generate_test_key_1_metadata_event("fred"),
142 &subscription_id, 136 generate_test_key_1_relay_list_event_same_as_fallback(),
143 &vec![ 137 ])?;
144 generate_test_key_1_metadata_event("fred"),
145 generate_test_key_1_relay_list_event_same_as_fallback(),
146 ],
147 )?;
148 Ok(()) 138 Ok(())
149 }), 139 }),
150 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 140 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
151 relay.respond_events( 141 relay.respond_events(client_id, &subscription_id, &vec![
152 client_id, 142 generate_test_key_1_metadata_event("fred"),
153 &subscription_id, 143 generate_test_key_1_relay_list_event_same_as_fallback(),
154 &vec![ 144 ])?;
155 generate_test_key_1_metadata_event("fred"),
156 generate_test_key_1_relay_list_event_same_as_fallback(),
157 ],
158 )?;
159 Ok(()) 145 Ok(())
160 }), 146 }),
161 ) 147 )
@@ -170,18 +156,14 @@ mod with_relays {
170 async fn when_metadata_contains_only_display_name() -> Result<()> { 156 async fn when_metadata_contains_only_display_name() -> Result<()> {
171 run_test_displays_correct_name( 157 run_test_displays_correct_name(
172 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 158 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
173 relay.respond_events( 159 relay.respond_events(client_id, &subscription_id, &vec![
174 client_id, 160 nostr::event::EventBuilder::metadata(
175 &subscription_id, 161 &nostr::Metadata::new().display_name("fred"),
176 &vec![ 162 )
177 nostr::event::EventBuilder::metadata( 163 .sign_with_keys(&TEST_KEY_1_KEYS)
178 &nostr::Metadata::new().display_name("fred"), 164 .unwrap(),
179 ) 165 generate_test_key_1_relay_list_event_same_as_fallback(),
180 .sign_with_keys(&TEST_KEY_1_KEYS) 166 ])?;
181 .unwrap(),
182 generate_test_key_1_relay_list_event_same_as_fallback(),
183 ],
184 )?;
185 Ok(()) 167 Ok(())
186 }), 168 }),
187 None, 169 None,
@@ -207,19 +189,14 @@ mod with_relays {
207 189
208 run_test_displays_correct_name( 190 run_test_displays_correct_name(
209 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 191 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
210 relay.respond_events( 192 relay.respond_events(client_id, &subscription_id, &vec![
211 client_id, 193 nostr::event::EventBuilder::metadata(
212 &subscription_id, 194 &nostr::Metadata::new().custom_field("displayName", "fred"),
213 &vec![ 195 )
214 nostr::event::EventBuilder::metadata( 196 .sign_with_keys(&TEST_KEY_1_KEYS)
215 &nostr::Metadata::new() 197 .unwrap(),
216 .custom_field("displayName", "fred"), 198 generate_test_key_1_relay_list_event_same_as_fallback(),
217 ) 199 ])?;
218 .sign_with_keys(&TEST_KEY_1_KEYS)
219 .unwrap(),
220 generate_test_key_1_relay_list_event_same_as_fallback(),
221 ],
222 )?;
223 Ok(()) 200 Ok(())
224 }), 201 }),
225 None, 202 None,
@@ -233,18 +210,14 @@ mod with_relays {
233 -> Result<()> { 210 -> Result<()> {
234 run_test_displays_fallback_to_npub( 211 run_test_displays_fallback_to_npub(
235 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 212 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
236 relay.respond_events( 213 relay.respond_events(client_id, &subscription_id, &vec![
237 client_id, 214 nostr::event::EventBuilder::metadata(
238 &subscription_id, 215 &nostr::Metadata::new().about("other info in metadata"),
239 &vec![ 216 )
240 nostr::event::EventBuilder::metadata( 217 .sign_with_keys(&TEST_KEY_1_KEYS)
241 &nostr::Metadata::new().about("other info in metadata"), 218 .unwrap(),
242 ) 219 generate_test_key_1_relay_list_event_same_as_fallback(),
243 .sign_with_keys(&TEST_KEY_1_KEYS) 220 ])?;
244 .unwrap(),
245 generate_test_key_1_relay_list_event_same_as_fallback(),
246 ],
247 )?;
248 Ok(()) 221 Ok(())
249 }), 222 }),
250 None, 223 None,
@@ -259,14 +232,10 @@ mod with_relays {
259 -> Result<()> { 232 -> Result<()> {
260 run_test_displays_correct_name( 233 run_test_displays_correct_name(
261 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 234 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
262 relay.respond_events( 235 relay.respond_events(client_id, &subscription_id, &vec![
263 client_id, 236 generate_test_key_1_metadata_event("fred"),
264 &subscription_id, 237 generate_test_key_1_relay_list_event_same_as_fallback(),
265 &vec![ 238 ])?;
266 generate_test_key_1_metadata_event("fred"),
267 generate_test_key_1_relay_list_event_same_as_fallback(),
268 ],
269 )?;
270 Ok(()) 239 Ok(())
271 }), 240 }),
272 None, 241 None,
@@ -280,19 +249,15 @@ mod with_relays {
280 { 249 {
281 run_test_displays_correct_name( 250 run_test_displays_correct_name(
282 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 251 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
283 relay.respond_events( 252 relay.respond_events(client_id, &subscription_id, &vec![
284 client_id, 253 generate_test_key_1_metadata_event("fred"),
285 &subscription_id, 254 ])?;
286 &vec![generate_test_key_1_metadata_event("fred")],
287 )?;
288 Ok(()) 255 Ok(())
289 }), 256 }),
290 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 257 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
291 relay.respond_events( 258 relay.respond_events(client_id, &subscription_id, &vec![
292 client_id, 259 generate_test_key_1_relay_list_event_same_as_fallback(),
293 &subscription_id, 260 ])?;
294 &vec![generate_test_key_1_relay_list_event_same_as_fallback()],
295 )?;
296 Ok(()) 261 Ok(())
297 }), 262 }),
298 ) 263 )
@@ -304,22 +269,16 @@ mod with_relays {
304 async fn when_some_relays_return_old_metadata_event() -> Result<()> { 269 async fn when_some_relays_return_old_metadata_event() -> Result<()> {
305 run_test_displays_correct_name( 270 run_test_displays_correct_name(
306 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 271 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
307 relay.respond_events( 272 relay.respond_events(client_id, &subscription_id, &vec![
308 client_id, 273 generate_test_key_1_metadata_event("fred"),
309 &subscription_id, 274 generate_test_key_1_relay_list_event_same_as_fallback(),
310 &vec![ 275 ])?;
311 generate_test_key_1_metadata_event("fred"),
312 generate_test_key_1_relay_list_event_same_as_fallback(),
313 ],
314 )?;
315 Ok(()) 276 Ok(())
316 }), 277 }),
317 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 278 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
318 relay.respond_events( 279 relay.respond_events(client_id, &subscription_id, &vec![
319 client_id, 280 generate_test_key_1_metadata_event_old("fred old"),
320 &subscription_id, 281 ])?;
321 &vec![generate_test_key_1_metadata_event_old("fred old")],
322 )?;
323 Ok(()) 282 Ok(())
324 }), 283 }),
325 ) 284 )
@@ -331,22 +290,16 @@ mod with_relays {
331 async fn when_some_relays_return_other_users_metadata() -> Result<()> { 290 async fn when_some_relays_return_other_users_metadata() -> Result<()> {
332 run_test_displays_correct_name( 291 run_test_displays_correct_name(
333 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 292 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
334 relay.respond_events( 293 relay.respond_events(client_id, &subscription_id, &vec![
335 client_id, 294 generate_test_key_2_metadata_event("carole"),
336 &subscription_id, 295 ])?;
337 &vec![generate_test_key_2_metadata_event("carole")],
338 )?;
339 Ok(()) 296 Ok(())
340 }), 297 }),
341 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 298 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
342 relay.respond_events( 299 relay.respond_events(client_id, &subscription_id, &vec![
343 client_id, 300 generate_test_key_1_metadata_event_old("fred"),
344 &subscription_id, 301 generate_test_key_1_relay_list_event_same_as_fallback(),
345 &vec![ 302 ])?;
346 generate_test_key_1_metadata_event_old("fred"),
347 generate_test_key_1_relay_list_event_same_as_fallback(),
348 ],
349 )?;
350 Ok(()) 303 Ok(())
351 }), 304 }),
352 ) 305 )
@@ -359,22 +312,16 @@ mod with_relays {
359 run_test_displays_correct_name( 312 run_test_displays_correct_name(
360 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 313 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
361 let event = generate_test_key_1_kind_event(nostr::Kind::TextNote); 314 let event = generate_test_key_1_kind_event(nostr::Kind::TextNote);
362 relay.respond_events( 315 relay.respond_events(client_id, &subscription_id, &vec![
363 client_id, 316 make_event_old_or_change_user(event, &TEST_KEY_1_KEYS, 0),
364 &subscription_id, 317 ])?;
365 &vec![make_event_old_or_change_user(event, &TEST_KEY_1_KEYS, 0)],
366 )?;
367 Ok(()) 318 Ok(())
368 }), 319 }),
369 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 320 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
370 relay.respond_events( 321 relay.respond_events(client_id, &subscription_id, &vec![
371 client_id, 322 generate_test_key_1_metadata_event_old("fred"),
372 &subscription_id, 323 generate_test_key_1_relay_list_event_same_as_fallback(),
373 &vec![ 324 ])?;
374 generate_test_key_1_metadata_event_old("fred"),
375 generate_test_key_1_relay_list_event_same_as_fallback(),
376 ],
377 )?;
378 Ok(()) 325 Ok(())
379 }), 326 }),
380 ) 327 )
@@ -389,14 +336,10 @@ mod with_relays {
389 async fn displays_correct_name() -> Result<()> { 336 async fn displays_correct_name() -> Result<()> {
390 run_test_when_specifying_command_line_nsec_only_displays_correct_name( 337 run_test_when_specifying_command_line_nsec_only_displays_correct_name(
391 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 338 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
392 relay.respond_events( 339 relay.respond_events(client_id, &subscription_id, &vec![
393 client_id, 340 generate_test_key_1_metadata_event("fred"),
394 &subscription_id, 341 generate_test_key_1_relay_list_event_same_as_fallback(),
395 &vec![ 342 ])?;
396 generate_test_key_1_metadata_event("fred"),
397 generate_test_key_1_relay_list_event_same_as_fallback(),
398 ],
399 )?;
400 Ok(()) 343 Ok(())
401 }), 344 }),
402 None, 345 None,
@@ -414,10 +357,12 @@ mod with_relays {
414 357
415 let cli_tester_handle = std::thread::spawn(move || -> Result<()> { 358 let cli_tester_handle = std::thread::spawn(move || -> Result<()> {
416 let test_repo = GitTestRepo::default(); 359 let test_repo = GitTestRepo::default();
417 let mut p = CliTester::new_from_dir( 360 let mut p = CliTester::new_from_dir(&test_repo.dir, [
418 &test_repo.dir, 361 "account",
419 ["account", "login", "--nsec", TEST_KEY_1_NSEC], 362 "login",
420 ); 363 "--nsec",
364 TEST_KEY_1_NSEC,
365 ]);
421 366
422 p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; 367 p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?;
423 368
@@ -489,11 +434,9 @@ mod with_relays {
489 async fn warm_user_and_displays_name() -> Result<()> { 434 async fn warm_user_and_displays_name() -> Result<()> {
490 run_test_when_no_relay_list_found_warns_user_and_uses_npub( 435 run_test_when_no_relay_list_found_warns_user_and_uses_npub(
491 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 436 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
492 relay.respond_events( 437 relay.respond_events(client_id, &subscription_id, &vec![
493 client_id, 438 generate_test_key_1_metadata_event("fred"),
494 &subscription_id, 439 ])?;
495 &vec![generate_test_key_1_metadata_event("fred")],
496 )?;
497 Ok(()) 440 Ok(())
498 }), 441 }),
499 None, 442 None,
@@ -584,25 +527,17 @@ mod with_relays {
584 async fn displays_correct_name() -> Result<()> { 527 async fn displays_correct_name() -> Result<()> {
585 run_test_displays_correct_name( 528 run_test_displays_correct_name(
586 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 529 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
587 relay.respond_events( 530 relay.respond_events(client_id, &subscription_id, &vec![
588 client_id, 531 generate_test_key_1_metadata_event_old("Fred"),
589 &subscription_id, 532 generate_test_key_1_relay_list_event(),
590 &vec![ 533 ])?;
591 generate_test_key_1_metadata_event_old("Fred"),
592 generate_test_key_1_relay_list_event(),
593 ],
594 )?;
595 Ok(()) 534 Ok(())
596 }), 535 }),
597 Some(&|relay, client_id, subscription_id, _| -> Result<()> { 536 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
598 relay.respond_events( 537 relay.respond_events(client_id, &subscription_id, &vec![
599 client_id, 538 generate_test_key_1_metadata_event("fred"),
600 &subscription_id, 539 generate_test_key_1_relay_list_event(),
601 &vec![ 540 ])?;
602 generate_test_key_1_metadata_event("fred"),
603 generate_test_key_1_relay_list_event(),
604 ],
605 )?;
606 Ok(()) 541 Ok(())
607 }), 542 }),
608 ) 543 )
@@ -674,10 +609,10 @@ mod with_offline_flag {
674 true, 609 true,
675 )?; 610 )?;
676 611
677 p.expect_choice( 612 p.expect_choice("login to nostr", vec![
678 "login to nostr", 613 "try again with nsec".to_string(),
679 vec!["try again with nsec".to_string(), "back".to_string()], 614 "back".to_string(),
680 )? 615 ])?
681 .succeeds_with(0, false, Some(0))?; 616 .succeeds_with(0, false, Some(0))?;
682 } 617 }
683 618
@@ -697,10 +632,13 @@ mod with_offline_flag {
697 #[test] 632 #[test]
698 fn valid_nsec_param_succeeds_without_prompts() -> Result<()> { 633 fn valid_nsec_param_succeeds_without_prompts() -> Result<()> {
699 let test_repo = GitTestRepo::default(); 634 let test_repo = GitTestRepo::default();
700 let mut p = CliTester::new_from_dir( 635 let mut p = CliTester::new_from_dir(&test_repo.dir, [
701 &test_repo.dir, 636 "account",
702 ["account", "login", "--offline", "--nsec", TEST_KEY_1_NSEC], 637 "login",
703 ); 638 "--offline",
639 "--nsec",
640 TEST_KEY_1_NSEC,
641 ]);
704 642
705 p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; 643 p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?;
706 644
@@ -712,10 +650,13 @@ mod with_offline_flag {
712 #[test] 650 #[test]
713 fn invalid_nsec_param_fails_without_prompts() -> Result<()> { 651 fn invalid_nsec_param_fails_without_prompts() -> Result<()> {
714 let test_repo = GitTestRepo::default(); 652 let test_repo = GitTestRepo::default();
715 let mut p = CliTester::new_from_dir( 653 let mut p = CliTester::new_from_dir(&test_repo.dir, [
716 &test_repo.dir, 654 "account",
717 ["account", "login", "--offline", "--nsec", TEST_INVALID_NSEC], 655 "login",
718 ); 656 "--offline",
657 "--nsec",
658 TEST_INVALID_NSEC,
659 ]);
719 660
720 p.expect_end_with( 661 p.expect_end_with(
721 "Error: invalid nsec parameter\r\n\r\nCaused by:\r\n Invalid secret key\r\n", 662 "Error: invalid nsec parameter\r\n\r\nCaused by:\r\n Invalid secret key\r\n",
@@ -729,18 +670,15 @@ mod with_offline_flag {
729 #[test] 670 #[test]
730 fn valid_nsec_param_succeeds_without_prompts() -> Result<()> { 671 fn valid_nsec_param_succeeds_without_prompts() -> Result<()> {
731 let test_repo = GitTestRepo::default(); 672 let test_repo = GitTestRepo::default();
732 let mut p = CliTester::new_from_dir( 673 let mut p = CliTester::new_from_dir(&test_repo.dir, [
733 &test_repo.dir, 674 "account",
734 [ 675 "login",
735 "account", 676 "--offline",
736 "login", 677 "--nsec",
737 "--offline", 678 TEST_KEY_1_NSEC,
738 "--nsec", 679 "--password",
739 TEST_KEY_1_NSEC, 680 TEST_PASSWORD,
740 "--password", 681 ]);
741 TEST_PASSWORD,
742 ],
743 );
744 p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; 682 p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?;
745 683
746 p.expect_end_with( 684 p.expect_end_with(
@@ -751,18 +689,15 @@ mod with_offline_flag {
751 #[test] 689 #[test]
752 fn parameters_can_be_called_globally() -> Result<()> { 690 fn parameters_can_be_called_globally() -> Result<()> {
753 let test_repo = GitTestRepo::default(); 691 let test_repo = GitTestRepo::default();
754 let mut p = CliTester::new_from_dir( 692 let mut p = CliTester::new_from_dir(&test_repo.dir, [
755 &test_repo.dir, 693 "--nsec",
756 [ 694 TEST_KEY_1_NSEC,
757 "--nsec", 695 "--password",
758 TEST_KEY_1_NSEC, 696 TEST_PASSWORD,
759 "--password", 697 "account",
760 TEST_PASSWORD, 698 "login",
761 "account", 699 "--offline",
762 "login", 700 ]);
763 "--offline",
764 ],
765 );
766 p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; 701 p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?;
767 702
768 p.expect_end_with( 703 p.expect_end_with(
@@ -777,18 +712,15 @@ mod with_offline_flag {
777 fn valid_nsec_param_succeeds_without_prompts_and_logs_in() -> Result<()> { 712 fn valid_nsec_param_succeeds_without_prompts_and_logs_in() -> Result<()> {
778 standard_first_time_login_with_nsec()?.exit()?; 713 standard_first_time_login_with_nsec()?.exit()?;
779 let test_repo = GitTestRepo::default(); 714 let test_repo = GitTestRepo::default();
780 let mut p = CliTester::new_from_dir( 715 let mut p = CliTester::new_from_dir(&test_repo.dir, [
781 &test_repo.dir, 716 "account",
782 [ 717 "login",
783 "account", 718 "--offline",
784 "login", 719 "--nsec",
785 "--offline", 720 TEST_KEY_2_NSEC,
786 "--nsec", 721 "--password",
787 TEST_KEY_2_NSEC, 722 TEST_PASSWORD,
788 "--password", 723 ]);
789 TEST_PASSWORD,
790 ],
791 );
792 p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?; 724 p.expect("saved login details to local git config. you are only logged in to this local repository.\r\n")?;
793 725
794 p.expect_end_with( 726 p.expect_end_with(