diff --git a/src/cargo/ops/registry.rs b/src/cargo/ops/registry.rs index e0aae14e0e8..27180c6eca9 100644 --- a/src/cargo/ops/registry.rs +++ b/src/cargo/ops/registry.rs @@ -768,6 +768,10 @@ pub fn registry_login( } }; + if token.is_empty() { + bail!("please provide a non-empty token"); + } + if let RegistryConfig::Token(old_token) = ®_cfg { if old_token == &token { config.shell().status("Login", "already logged in")?; diff --git a/tests/testsuite/login.rs b/tests/testsuite/login.rs index 716bc3e41b4..4e3f740d342 100644 --- a/tests/testsuite/login.rs +++ b/tests/testsuite/login.rs @@ -90,3 +90,31 @@ fn registry_credentials() { assert!(check_token(TOKEN, Some(reg))); assert!(check_token(TOKEN2, Some(reg2))); } + +#[cargo_test] +fn empty_login_token() { + let _registry = RegistryBuilder::new().build(); + setup_new_credentials(); + + cargo_process("login") + .with_stdout("please paste the API Token found on [..]/me below") + .with_stdin("\t\n") + .with_stderr( + "\ +[UPDATING] `dummy-registry` index +[ERROR] please provide a non-empty token +", + ) + .with_status(101) + .run(); + + cargo_process("login") + .arg("") + .with_stderr( + "\ +[ERROR] please provide a non-empty token +", + ) + .with_status(101) + .run(); +}