Skip to content

Commit

Permalink
fix: Fix bug in TimeEvent witness blocks parsing logic
Browse files Browse the repository at this point in the history
  • Loading branch information
stbrody committed Aug 16, 2024
1 parent 163ce35 commit e7453f0
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 13 deletions.
6 changes: 3 additions & 3 deletions event/src/unvalidated/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,7 @@ mod tests {
use crate::unvalidated::signed::JwkSigner;
use crate::unvalidated::tests::{
DATA_EVENT_PAYLOAD, SIGNED_INIT_EVENT, SIGNED_INIT_EVENT_CAR, SIGNED_INIT_EVENT_CID,
SIGNED_INIT_EVENT_PAYLOAD, TIME_EVENT_CAR,
SIGNED_INIT_EVENT_PAYLOAD, TIME_EVENT_CAR_SINGLE_EVENT_BATCH,
};
use crate::DidDocument;

Expand Down Expand Up @@ -508,7 +508,7 @@ mod tests {
assert_eq!(SIGNED_INIT_EVENT_CAR, event_car_str);
}
#[test(tokio::test)]
async fn build_time_event() {
async fn build_time_event_single_event_batch() {
let id = Cid::from_str(SIGNED_INIT_EVENT_CID).unwrap();
let prev =
Cid::from_str("bagcqcerae5oqoglzjjgz53enwsttl7mqglp5eoh2llzbbvfktmzxleeiffbq").unwrap();
Expand All @@ -532,6 +532,6 @@ mod tests {
multibase::Base::Base64Url,
event.encode_car().await.unwrap(),
);
assert_eq!(TIME_EVENT_CAR, event_car_str);
assert_eq!(TIME_EVENT_CAR_SINGLE_EVENT_BATCH, event_car_str);
}
}
20 changes: 11 additions & 9 deletions event/src/unvalidated/event.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,11 @@ where
let block_bytes = car_blocks
.get(&proof.root())
.ok_or_else(|| anyhow!("Time Event CAR data missing block for root",))?;
let mut block: Ipld = serde_ipld_dagcbor::from_slice(block_bytes)?;
blocks_in_path.push(block.clone());
blocks_in_path.push(serde_ipld_dagcbor::from_slice(block_bytes)?);
let parts: Vec<_> = event.path().split('/').collect();
// Add blocks for all parts but the last as it is the prev.
for index in parts.iter().take(parts.len() - 1) {
let cid = block
let cid = blocks_in_path.last().unwrap()
.get(*index)?
.ok_or_else(|| anyhow!("Time Event path indexes missing data"))?;
let cid = match cid {
Expand All @@ -65,8 +64,7 @@ where
let block_bytes = car_blocks
.get(cid)
.ok_or_else(|| anyhow!("Time Event CAR data missing block for path index"))?;
blocks_in_path.push(block);
block = serde_ipld_dagcbor::from_slice(block_bytes)?;
blocks_in_path.push(serde_ipld_dagcbor::from_slice(block_bytes)?);
}

Ok(blocks_in_path)
Expand Down Expand Up @@ -407,12 +405,12 @@ mod tests {
use ipld_core::ipld::Ipld;
use test_log::test;

use crate::unvalidated::tests::{SIGNED_INIT_EVENT_CID, UNSIGNED_INIT_NO_SEP_CAR};
use crate::unvalidated::tests::{SIGNED_INIT_EVENT_CID, TIME_EVENT_CAR_MULTI_EVENT_BATCH, UNSIGNED_INIT_NO_SEP_CAR};
use crate::unvalidated::{
payload,
tests::{
CACAO_SIGNED_DATA_EVENT_CAR, DATA_EVENT_CAR_UNSIGNED_INIT, SIGNED_DATA_EVENT_CAR,
SIGNED_INIT_EVENT_CAR, TIME_EVENT_CAR, UNSIGNED_INIT_EVENT_CAR,
SIGNED_INIT_EVENT_CAR, TIME_EVENT_CAR_SINGLE_EVENT_BATCH, UNSIGNED_INIT_EVENT_CAR,
},
Builder, Event,
};
Expand Down Expand Up @@ -448,8 +446,12 @@ mod tests {
round_trip(DATA_EVENT_CAR_UNSIGNED_INIT).await;
}
#[test(tokio::test)]
async fn round_trip_time_event() {
round_trip(TIME_EVENT_CAR).await;
async fn round_trip_time_event_single_event_batch() {
round_trip(TIME_EVENT_CAR_SINGLE_EVENT_BATCH).await;
}
#[test(tokio::test)]
async fn round_trip_time_event_multi_event_batch() {
round_trip(TIME_EVENT_CAR_MULTI_EVENT_BATCH).await;
}
#[test(tokio::test)]
async fn round_trip_init_payload_with_no_sep() {
Expand Down
4 changes: 3 additions & 1 deletion event/src/unvalidated/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@ mod tests {
// Data event signed with a CACAO
pub const CACAO_SIGNED_DATA_EVENT_CAR:&str="mO6Jlcm9vdHOB2CpYJgABhQESIN12WhnV8Y3aMRxZYqUSpaO4mSQnbGxEpeC8jMsldwv6Z3ZlcnNpb24BigQBcRIgtP3Gc62zs2I/pu98uctnwBAYUUrgyLjnPaxYwOnBytajYWihYXRnZWlwNDM2MWFwqWNhdWR4OGRpZDprZXk6ejZNa3I0YTNaM0ZGYUpGOFlxV25XblZIcWQ1ZURqWk45YkRTVDZ3VlpDMWhKODFQY2V4cHgYMjAyNC0wNi0xOVQyMDowNDo0Mi40NjRaY2lhdHgYMjAyNC0wNi0xMlQyMDowNDo0Mi40NjRaY2lzc3g7ZGlkOnBraDplaXAxNTU6MToweDM3OTRkNGYwNzdjMDhkOTI1ZmY4ZmY4MjAwMDZiNzM1MzI5OWIyMDBlbm9uY2Vqd1BpQ09jcGtsbGZkb21haW5kdGVzdGd2ZXJzaW9uYTFpcmVzb3VyY2VzgWtjZXJhbWljOi8vKmlzdGF0ZW1lbnR4PEdpdmUgdGhpcyBhcHBsaWNhdGlvbiBhY2Nlc3MgdG8gc29tZSBvZiB5b3VyIGRhdGEgb24gQ2VyYW1pY2FzomFzeIQweGIyNjY5OTkyNjM0NDZkZGI5YmY1ODg4MjVlOWFjMDhiNTQ1ZTY1NWY2MDc3ZThkODU3OWE4ZDY2MzljMTE2N2M1NmY3ZGFlN2FjNzBmN2ZhZWQ4YzE0MWFmOWUxMjRhN2ViNGY3NzQyM2E1NzJiMzYxNDRhZGE4ZWYyMjA2Y2RhMWNhdGZlaXAxOTHTAQFxEiB0pJYyJOf2PmUMzjHeHCaX9ETIA0AKnHWwb1l0CfEy/KJkZGF0YaFkc3RlcBkCWGZoZWFkZXKkY3NlcGVtb2RlbGVtb2RlbFgozgECAYUBEiAGE66nrxdaqHUZ5oBVN6FulPnXix/we9MdpVKJHSR4uGZ1bmlxdWVMxwa2TBHgC66/1V9xa2NvbnRyb2xsZXJzgXg7ZGlkOnBraDplaXAxNTU6MToweDM3OTRkNGYwNzdjMDhkOTI1ZmY4ZmY4MjAwMDZiNzM1MzI5OWIyMDCFAwGFARIg3XZaGdXxjdoxHFlipRKlo7iZJCdsbESl4LyMyyV3C/qiZ3BheWxvYWRYJAFxEiB0pJYyJOf2PmUMzjHeHCaX9ETIA0AKnHWwb1l0CfEy/GpzaWduYXR1cmVzgaJpcHJvdGVjdGVkWMx7ImFsZyI6IkVkRFNBIiwiY2FwIjoiaXBmczovL2JhZnlyZWlmdTd4ZGhobG50d25yZDdqeHBwczQ0d3o2YWNhbWZjc3hhemM0b29wbm1sZGFvdHFvazJ5Iiwia2lkIjoiZGlkOmtleTp6Nk1rcjRhM1ozRkZhSkY4WXFXblduVkhxZDVlRGpaTjliRFNUNndWWkMxaEo4MVAjejZNa3I0YTNaM0ZGYUpGOFlxV25XblZIcWQ1ZURqWk45YkRTVDZ3VlpDMWhKODFQIn1pc2lnbmF0dXJlWEB19qFT2VTY3D/LT8MYvVi0fK4tfVCgB3tMZ18ZPG+Tc4CSxm+R+Q6u57MEUWXUf1dBzBU0l1Un3lxurDlSueID";

pub const TIME_EVENT_CAR: &str = "uOqJlcm9vdHOB2CpYJQABcRIgcmqgb7eHSgQ32hS1NGVKZruLJGcKDI1f4lqOyNYn3eVndmVyc2lvbgG3AQFxEiByaqBvt4dKBDfaFLU0ZUpmu4skZwoMjV_iWo7I1ifd5aRiaWTYKlgmAAGFARIgjoBgf_z42eK6YNoQ9xs8h3plAAwV9WIQMvEZWdUE045kcGF0aGEwZHByZXbYKlgmAAGFARIgJ10HGXlKTZ7sjbSnNf2QMt_SOPpa8hDUqpszdZCIKUNlcHJvb2bYKlglAAFxEiAFKLx3fi7-yD1aPNyqnblI_r_5XllReVz55jBMvMxs9q4BAXESIAUovHd-Lv7IPVo83KqduUj-v_leWVF5XPnmMEy8zGz2pGRyb2902CpYJQABcRIgfWtbF-FQN6GN6ZL8OtHvp2YrGlmLbZwkOl6UY-3AUNFmdHhIYXNo2CpYJgABkwEbIBv-WU6fLnsyo5_lDSTC_T-xUlW95brOAUDByGHJzbCRZnR4VHlwZWpmKGJ5dGVzMzIpZ2NoYWluSWRvZWlwMTU1OjExMTU1MTExeQFxEiB9a1sX4VA3oY3pkvw60e-nZisaWYttnCQ6XpRj7cBQ0YPYKlgmAAGFARIgJ10HGXlKTZ7sjbSnNf2QMt_SOPpa8hDUqpszdZCIKUP22CpYJQABcRIgqVOMo-IVjo08Mk0cim3Z8flNyHY7c9g7uGMqeS0PFHA";
pub const TIME_EVENT_CAR_SINGLE_EVENT_BATCH: &str = "uOqJlcm9vdHOB2CpYJQABcRIgcmqgb7eHSgQ32hS1NGVKZruLJGcKDI1f4lqOyNYn3eVndmVyc2lvbgG3AQFxEiByaqBvt4dKBDfaFLU0ZUpmu4skZwoMjV_iWo7I1ifd5aRiaWTYKlgmAAGFARIgjoBgf_z42eK6YNoQ9xs8h3plAAwV9WIQMvEZWdUE045kcGF0aGEwZHByZXbYKlgmAAGFARIgJ10HGXlKTZ7sjbSnNf2QMt_SOPpa8hDUqpszdZCIKUNlcHJvb2bYKlglAAFxEiAFKLx3fi7-yD1aPNyqnblI_r_5XllReVz55jBMvMxs9q4BAXESIAUovHd-Lv7IPVo83KqduUj-v_leWVF5XPnmMEy8zGz2pGRyb2902CpYJQABcRIgfWtbF-FQN6GN6ZL8OtHvp2YrGlmLbZwkOl6UY-3AUNFmdHhIYXNo2CpYJgABkwEbIBv-WU6fLnsyo5_lDSTC_T-xUlW95brOAUDByGHJzbCRZnR4VHlwZWpmKGJ5dGVzMzIpZ2NoYWluSWRvZWlwMTU1OjExMTU1MTExeQFxEiB9a1sX4VA3oY3pkvw60e-nZisaWYttnCQ6XpRj7cBQ0YPYKlgmAAGFARIgJ10HGXlKTZ7sjbSnNf2QMt_SOPpa8hDUqpszdZCIKUP22CpYJQABcRIgqVOMo-IVjo08Mk0cim3Z8flNyHY7c9g7uGMqeS0PFHA";

pub const TIME_EVENT_CAR_MULTI_EVENT_BATCH: &str = "mOqJlcm9vdHOB2CpYJQABcRIgL4UtIONTCPoEwUqgviwfyYNUmHFm/2CX5zTiYjE1v35ndmVyc2lvbgHJAQFxEiAvhS0g41MI+gTBSqC+LB/Jg1SYcWb/YJfnNOJiMTW/fqRiaWTYKlgmAAGFARIgvH8vy3q0gSOzzGcK5p3qqUascjW3pNmumn3mvZUnToBkcGF0aHMwLzAvMC8wLzAvMC8wLzAvMC8wZHByZXbYKlgmAAGFARIgvH8vy3q0gSOzzGcK5p3qqUascjW3pNmumn3mvZUnToBlcHJvb2bYKlglAAFxEiBI8mz+1T/2/X8/intyZfWokF1bkIl092NtMxkdmFnE5K0BAXESIEjybP7VP/b9fz+Ke3Jl9aiQXVuQiXT3Y20zGR2YWcTkpGRyb2902CpYJQABcRIgGjFZMMNqYlLBV6Vlt/ypaSMPqozWlRclOBOKxXlIj2VmdHhIYXNo2CpYJQABABIgDMTDU9CHV07kv3IZKMXr8T5oDcZ/RB2Yywk01u71CxJmdHhUeXBlamYoYnl0ZXMzMilnY2hhaW5JZG9laXAxNTU6MTExNTUxMTFPAXESIBoxWTDDamJSwVelZbf8qWkjD6qM1pUXJTgTisV5SI9lgtgqWCUAAXESINjOTPkCIrSQB0AgMg5oF0obIeY3xu6Q9cHaE3h3wDJX9ncBcRIg2M5M+QIitJAHQCAyDmgXShsh5jfG7pD1wdoTeHfAMleC2CpYJQABcRIgVKc2BLeGYg1hnrpRZYOw7JBz+ZxrnSFn/32zAAuvNRvYKlglAAEAEiBJOxB7Fxf5KKqUhTiV8CwpZifLmMc6P6h0RultS4FbO08BcRIgVKc2BLeGYg1hnrpRZYOw7JBz+ZxrnSFn/32zAAuvNRuC2CpYJQABcRIgyMZsL6z6pL100RyxEJVUsYa3gXOrpxgVFnW5RQcgDYL2TwFxEiDIxmwvrPqkvXTRHLEQlVSxhreBc6unGBUWdblFByANgoLYKlglAAFxEiBkuXbdpR3FWu/GWyYRzWOXNNsxtKOQre6IhbBmG5SDb/ZPAXESIGS5dt2lHcVa78ZbJhHNY5c02zG0o5Ct7oiFsGYblINvgtgqWCUAAXESIAhQlsp/RGl5YjMifeWkIFQ2csfcZWZAxZfseaZIHHBz9ncBcRIgCFCWyn9EaXliMyJ95aQgVDZyx9xlZkDFl+x5pkgccHOC2CpYJQABcRIgmSjP3429NWJwGNLzPuTshsW8ctiLMrrCrfpgbGTCFzbYKlglAAEAEiAlPPre/NjFSlr/4ya1JjfeGGCKRV6IAy4ppj/NC2/ocXcBcRIgmSjP3429NWJwGNLzPuTshsW8ctiLMrrCrfpgbGTCFzaC2CpYJQABcRIgGLdpV60S9zCsfdgQwEfu+XTPtAlcY1HY/zuD8FnnglTYKlglAAEAEiAYou7Ha8Gu3yfyK0s67W5TYPwpQPqH2NCBdyO6fw/0hXcBcRIgGLdpV60S9zCsfdgQwEfu+XTPtAlcY1HY/zuD8FnnglSC2CpYJQABcRIgl8D99pasirZzSUiLhYIOtFxC6ly1FoTFPw2koWa39hPYKlglAAEAEiCAiaKs0l1CZmdKsmk1a+VQmvHHJK4RWEuu6Wc4yi0djHcBcRIgl8D99pasirZzSUiLhYIOtFxC6ly1FoTFPw2koWa39hOC2CpYJQABcRIgud0GzkB9pc99WOltHHDmEKam2T9uyK+nvVAm1EsNbKbYKlglAAEAEiC6ZS2N7A859jNo1M3LqcpnAuK7PTJz7n8QJoEwISiGJXgBcRIgud0GzkB9pc99WOltHHDmEKam2T9uyK+nvVAm1EsNbKaC2CpYJgABhQESILx/L8t6tIEjs8xnCuad6qlGrHI1t6TZrpp95r2VJ06A2CpYJQABABIgvNbmQYMKhUmrsA8r5GGzDpcPkI//HPsid9wCi0ZhUsM";

pub const UNSIGNED_INIT_NO_SEP_CAR:&str="uOqJlcm9vdHOB2CpYJQABcRIgrY2L_wTWrzng7Mpf2kvh9Q9Uyz-Ei2CF7NfjzRD0illndmVyc2lvbgG5AwFxEiCtjYv_BNavOeDsyl_aS-H1D1TLP4SLYIXs1-PNEPSKWaJkZGF0YaZkZGF0YaNjdXJsYGVsYWJlbGdGYXN0aW5nbmNoaWxkcmVuSGlkZGVu9GR0eXBlbFF1ZXN0aW9uTm9kZWdjcmVhdGVkeBgyMDIzLTAyLTIwVDE1OjE5OjM2LjI3OVpocG9zaXRpb26iYXj7QKWDkiAAAABheftAtqeAAAAAAGlsYXRlcmFsSUR4JDY5YWFmMzdkLTU1OWItNGI5NS1hMTAwLTVlZTk4MThmYzVlZGlwcm9qZWN0SUR4P2tqemw2a2N5bTd3OHk1ZDY1Zjlva240cml5ZGF0OTJoM3M2dnZ6cHd3dTc1NDRpOTJmanlnYzU2N2x6aHJ2Y2ZoZWFkZXKjZW1vZGVsWCjOAQIBhQESIJbss9X3kzfag-eF6OFx0KDIOV6P5DxOi-cWAWnTN5FjZnVuaXF1ZUwq2_OJxYVaSoawmJtrY29udHJvbGxlcnOBeDtkaWQ6cGtoOmVpcDE1NToxOjB4Y2E1ZmY0YjM0NDJmY2FjMjdlMWFmNDQ1N2UwMmViNjI5YzcxMjk4Mw";
}

0 comments on commit e7453f0

Please sign in to comment.