in libazureinit/src/provision/ssh.rs [427:461]
fn test_provision_ssh() {
let user = get_test_user_with_home_dir(false);
let keys = vec![
PublicKeys {
key_data: "not-a-real-key abc123".to_string(),
path: "unused".to_string(),
},
PublicKeys {
key_data: "not-a-real-key xyz987".to_string(),
path: "unused".to_string(),
},
];
let authorized_keys_path = user.dir.join(".ssh/xauthorized_keys");
provision_ssh(&user, &keys, authorized_keys_path, false).unwrap();
let ssh_path = user.dir.join(".ssh");
let ssh_dir = std::fs::File::open(&ssh_path).unwrap();
let mut auth_file =
std::fs::File::open(&ssh_path.join("xauthorized_keys")).unwrap();
let mut buf = String::new();
auth_file.read_to_string(&mut buf).unwrap();
assert_eq!("not-a-real-key abc123\nnot-a-real-key xyz987\n", buf);
// Refer to man 7 inode for details on the mode - 100000 is a regular file, 040000 is a directory
assert_eq!(
ssh_dir.metadata().unwrap().permissions(),
Permissions::from_mode(0o040700)
);
assert_eq!(
auth_file.metadata().unwrap().permissions(),
Permissions::from_mode(0o100600)
);
}