fn test_provision_ssh()

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)
        );
    }