From a308771a7a391ebbcdae6babf00cf533e60e63be Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 7 Jun 2022 11:57:10 +0200 Subject: [PATCH] fix(sled): Deserialize encrypted TimelineMetadata properly --- .../src/store/integration_tests.rs | 16 ++++++++-------- crates/matrix-sdk-sled/src/state_store.rs | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/crates/matrix-sdk-base/src/store/integration_tests.rs b/crates/matrix-sdk-base/src/store/integration_tests.rs index d5edcfb60..2ea3448b6 100644 --- a/crates/matrix-sdk-base/src/store/integration_tests.rs +++ b/crates/matrix-sdk-base/src/store/integration_tests.rs @@ -647,7 +647,7 @@ macro_rules! statestore_integration_tests { // Add sync response let sync = SyncResponse::try_from_http_response( - Response::builder().body(serde_json::to_vec(&*test_json::MORE_SYNC).unwrap()).unwrap(), + Response::builder().body(serde_json::to_vec(&*test_json::MORE_SYNC).expect("Parsing MORE_SYNC failed")).unwrap(), ) .unwrap(); @@ -665,7 +665,7 @@ macro_rules! statestore_integration_tests { ); let mut changes = StateChanges::new(sync.next_batch.clone()); changes.add_timeline(room_id, timeline_slice); - store.save_changes(&changes).await.unwrap(); + store.save_changes(&changes).await.expect("Saving room timeline failed"); check_timeline_events(room_id, &store, &stored_events, timeline.prev_batch.as_deref()) .await; @@ -673,7 +673,7 @@ macro_rules! statestore_integration_tests { // Add message response let messages = MessageResponse::try_from_http_response( Response::builder() - .body(serde_json::to_vec(&*test_json::SYNC_ROOM_MESSAGES_BATCH_1).unwrap()) + .body(serde_json::to_vec(&*test_json::SYNC_ROOM_MESSAGES_BATCH_1).expect("Parsing SYNC_ROOM_MESSAGES_BATCH_1 failed")) .unwrap(), ) .unwrap(); @@ -691,14 +691,14 @@ macro_rules! statestore_integration_tests { TimelineSlice::new(events, messages.start.clone(), messages.end.clone(), false, false); let mut changes = StateChanges::default(); changes.add_timeline(room_id, timeline_slice); - store.save_changes(&changes).await.unwrap(); + store.save_changes(&changes).await.expect("Saving room update timeline failed"); check_timeline_events(room_id, &store, &stored_events, messages.end.as_deref()).await; // Add second message response let messages = MessageResponse::try_from_http_response( Response::builder() - .body(serde_json::to_vec(&*test_json::SYNC_ROOM_MESSAGES_BATCH_2).unwrap()) + .body(serde_json::to_vec(&*test_json::SYNC_ROOM_MESSAGES_BATCH_2).expect("Parsing SYNC_ROOM_MESSAGES_BATCH_2 failed")) .unwrap(), ) .unwrap(); @@ -716,7 +716,7 @@ macro_rules! statestore_integration_tests { TimelineSlice::new(events, messages.start.clone(), messages.end.clone(), false, false); let mut changes = StateChanges::default(); changes.add_timeline(room_id, timeline_slice); - store.save_changes(&changes).await.unwrap(); + store.save_changes(&changes).await.expect("Saving room update timeline 2 failed"); check_timeline_events(room_id, &store, &stored_events, messages.end.as_deref()).await; @@ -744,7 +744,7 @@ macro_rules! statestore_integration_tests { ); let mut changes = StateChanges::new(sync.next_batch.clone()); changes.add_timeline(room_id, timeline_slice); - store.save_changes(&changes).await.unwrap(); + store.save_changes(&changes).await.expect("Saving room update timeline 3 failed"); check_timeline_events(room_id, &store, &stored_events, messages.end.as_deref()).await; @@ -759,7 +759,7 @@ macro_rules! statestore_integration_tests { ); let mut changes = StateChanges::default(); changes.add_timeline(room_id, timeline_slice); - store.save_changes(&changes).await.unwrap(); + store.save_changes(&changes).await.expect("Saving room update timeline 4 failed"); check_timeline_events(room_id, &store, &Vec::new(), end_token.as_deref()).await; } diff --git a/crates/matrix-sdk-sled/src/state_store.rs b/crates/matrix-sdk-sled/src/state_store.rs index 705f0ed75..101642eb9 100644 --- a/crates/matrix-sdk-sled/src/state_store.rs +++ b/crates/matrix-sdk-sled/src/state_store.rs @@ -1242,7 +1242,7 @@ impl SledStore { let metadata: Option = self .room_timeline_metadata .get(self.encode_key(TIMELINE_METADATA, &room_id))? - .map(|v| serde_json::from_slice(&v).map_err(StoreError::Json)) + .map(|item| self.deserialize_value(&item)) .transpose()?; if let Some(mut metadata) = metadata { if !timeline.sync && Some(&timeline.start) != metadata.end.as_ref() {