use super::*;
#[test]
fn parse_login_args_bare_name_has_no_model() {
let args = ["acme".to_string()];
assert_eq!(parse_login_args(&args), Some(("acme", None)));
}
#[test]
fn parse_login_args_accepts_model_flag() {
let args = [
"acme".to_string(),
"--model".to_string(),
"opus".to_string(),
];
assert_eq!(parse_login_args(&args), Some(("acme", Some("opus"))));
}
#[test]
fn parse_login_args_accepts_a_full_custom_model_id() {
let args = [
"acme".to_string(),
"--model".to_string(),
"claude-opus-4-8".to_string(),
];
assert_eq!(
parse_login_args(&args),
Some(("acme", Some("claude-opus-4-8")))
);
}
#[test]
fn parse_login_args_model_flag_without_value_is_none() {
let args = ["acme".to_string(), "--model".to_string()];
assert_eq!(parse_login_args(&args), None);
}
#[test]
fn parse_login_args_rejects_flag_shaped_profile_names() {
assert_eq!(parse_login_args(&["--model".to_string()]), None);
let flag_name = [
"--model".to_string(),
"--model".to_string(),
"opus".to_string(),
];
assert_eq!(parse_login_args(&flag_name), None);
}
#[test]
fn parse_login_args_rejects_unrecognized_flag() {
let args = ["acme".to_string(), "--bogus".to_string(), "x".to_string()];
assert_eq!(parse_login_args(&args), None);
}
#[test]
fn parse_login_args_rejects_empty_and_trailing_extra_args() {
assert_eq!(parse_login_args(&[]), None);
let extra = [
"acme".to_string(),
"--model".to_string(),
"opus".to_string(),
"extra".to_string(),
];
assert_eq!(parse_login_args(&extra), None);
}
#[test]
fn dispatch_login_model_flag_without_value_errors_with_usage() {
let args = [
"login".to_string(),
"somename".to_string(),
"--model".to_string(),
];
let err = dispatch(&args).expect_err("--model with no value must error");
assert!(
err.to_string().contains("usage"),
"error must be a usage message, got: {err}"
);
}