use gpgme::KeyListMode;

use self::common::passphrase_cb;

#[macro_use]
mod common;

test_case! {
    test_sign_key(test) {
        let mut ctx = test.create_context();
        if !ctx.engine_info().check_version("2.1.12") {
            return;
        }

        ctx.add_key_list_mode(KeyListMode::SIGS).unwrap();
        let signer = ctx.find_secret_keys(Some("alfa@example.net")).unwrap().nth(0).unwrap().unwrap();
        ctx.add_signer(&signer).unwrap();

        let mut key = ctx.find_keys(Some("bravo@example.net")).unwrap().nth(0).unwrap().unwrap();
        assert!(!key.user_ids().nth(0).unwrap().signatures().any(|s| {
            signer.id_raw() == s.signer_key_id_raw()
        }));

        ctx.with_passphrase_provider(passphrase_cb, |ctx| {
            ctx.sign_key(&key, None::<String>, Default::default()).unwrap();
        });

        key.update().unwrap();
        assert!(key.user_ids().nth(0).unwrap().signatures().any(|s| {
            signer.id_raw() == s.signer_key_id_raw()
        }));
    }
}
