diff --git a/src/ephemeral/ephemeral_tests.rs b/src/ephemeral/ephemeral_tests.rs index 56d18de45..0f5054c7c 100644 --- a/src/ephemeral/ephemeral_tests.rs +++ b/src/ephemeral/ephemeral_tests.rs @@ -826,3 +826,36 @@ async fn test_ephemeral_timer_non_member() -> Result<()> { Ok(()) } + +/// Tests that expiration of a disappearing message +/// with unknown viewtype does not make `delete_expired_messages` fail. +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn test_disappearing_unknown_viewtype() -> Result<()> { + let mut tcm = TestContextManager::new(); + let alice = &tcm.alice().await; + let bob = &tcm.bob().await; + + let chat = alice.create_chat(bob).await; + + let duration = 60; + chat.id + .set_ephemeral_timer(alice, Timer::Enabled { duration }) + .await?; + + let mut msg = Message::new_text("Expiring message".to_string()); + let _alice_sent_message = alice.send_msg(chat.id, &mut msg).await; + + // Set message viewtype to unassigned + // type 70 that was previously used for videochat invitations. + alice + .sql + .execute("UPDATE msgs SET type=70 WHERE id=?", (msg.id,)) + .await?; + + SystemTime::shift(Duration::from_secs(100)); + + // This should not fail. + delete_expired_messages(alice, time()).await?; + + Ok(()) +}