test withdrawing qr codes

This commit is contained in:
B. Petersen
2021-06-23 16:13:18 +02:00
committed by bjoern
parent 8ac2bd0298
commit 6202f85a6f

View File

@@ -501,9 +501,12 @@ mod tests {
use super::*;
use crate::aheader::EncryptPreference;
use crate::chat::{create_group_chat, ProtectionStatus};
use crate::key::DcKey;
use crate::peerstate::ToSave;
use crate::securejoin::dc_get_securejoin_qr;
use crate::test_utils::{alice_keypair, TestContext};
use anyhow::Result;
#[async_std::test]
async fn test_decode_http() {
@@ -780,6 +783,62 @@ mod tests {
assert_eq!(res.get_id(), 0);
}
#[async_std::test]
async fn test_withdraw_verfifycontact() -> Result<()> {
let alice = TestContext::new_alice().await;
let qr = dc_get_securejoin_qr(&alice, None).await.unwrap();
// scanning own verfify-contact code offers withdrawing
let check = check_qr(&alice, &qr).await;
assert_eq!(check.state, LotState::QrWithdrawVerifyContact);
assert!(check.text1.is_none());
set_config_from_qr(&alice, &qr).await?;
// scanning withdrawn verfify-contact code offers reviving
let check = check_qr(&alice, &qr).await;
assert_eq!(check.state, LotState::QrReviveVerifyContact);
assert!(check.text1.is_none());
set_config_from_qr(&alice, &qr).await?;
let check = check_qr(&alice, &qr).await;
assert_eq!(check.state, LotState::QrWithdrawVerifyContact);
// someone else always scans as ask-verify-contact
let bob = TestContext::new_bob().await;
let check = check_qr(&bob, &qr).await;
assert_eq!(check.state, LotState::QrAskVerifyContact);
assert!(check.text1.is_none());
assert!(set_config_from_qr(&bob, &qr).await.is_err());
Ok(())
}
#[async_std::test]
async fn test_withdraw_verfifygroup() -> Result<()> {
let alice = TestContext::new_alice().await;
let chat_id = create_group_chat(&alice, ProtectionStatus::Unprotected, "foo").await?;
let qr = dc_get_securejoin_qr(&alice, Some(chat_id)).await.unwrap();
// scanning own verfify-group code offers withdrawing
let check = check_qr(&alice, &qr).await;
assert_eq!(check.state, LotState::QrWithdrawVerifyGroup);
assert_eq!(check.text1, Some("foo".to_string()));
set_config_from_qr(&alice, &qr).await?;
// scanning withdrawn verfify-group code offers reviving
let check = check_qr(&alice, &qr).await;
assert_eq!(check.state, LotState::QrReviveVerifyGroup);
assert_eq!(check.text1, Some("foo".to_string()));
// someone else always scans as ask-verify-group
let bob = TestContext::new_bob().await;
let check = check_qr(&bob, &qr).await;
assert_eq!(check.state, LotState::QrAskVerifyGroup);
assert_eq!(check.text1, Some("foo".to_string()));
assert!(set_config_from_qr(&bob, &qr).await.is_err());
Ok(())
}
#[async_std::test]
async fn test_decode_account() {
let ctx = TestContext::new().await;