Skip to content

Commit 7a31b92

Browse files
Update chunks decoding tests
1 parent df6fef9 commit 7a31b92

File tree

4 files changed

+119
-55
lines changed

4 files changed

+119
-55
lines changed

rust/rbac-registration/src/cardano/cip509/utils/cip134_uri_set.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ mod tests {
280280
let uris = x_uris.get(&0).unwrap();
281281
assert_eq!(uris.len(), 1);
282282

283-
let uri = &uris[0];
283+
let uri = uris.first().unwrap();
284284
// cSpell:disable
285285
assert_eq!(
286286
uri.uri(),

rust/rbac-registration/src/cardano/cip509/validation.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ mod tests {
228228
registration.report()
229229
);
230230
assert!(registration.previous_transaction().is_none());
231-
assert_eq!(registration.origin(), (77429134.into(), 3.into()));
231+
assert_eq!(registration.origin(), (77_429_134.into(), 3.into()));
232232

233233
let (purpose, metadata) = registration.consume().unwrap();
234234
assert_eq!(
@@ -251,7 +251,7 @@ mod tests {
251251

252252
let registration = registrations.pop().unwrap();
253253
assert!(registration.report().is_problematic());
254-
assert_eq!(registration.origin(), (77171632.into(), 0.into()));
254+
assert_eq!(registration.origin(), (77_171_632.into(), 0.into()));
255255

256256
// The consume function must return the problem report contained within the registration.
257257
let report = registration.consume().unwrap_err();
@@ -284,7 +284,7 @@ mod tests {
284284
.unwrap()
285285
)
286286
);
287-
assert_eq!(registration.origin(), (77170639.into(), 0.into()));
287+
assert_eq!(registration.origin(), (77_170_639.into(), 0.into()));
288288

289289
let (purpose, metadata) = registration.consume().unwrap();
290290
assert_eq!(
@@ -318,7 +318,7 @@ mod tests {
318318
.unwrap()
319319
)
320320
);
321-
assert_eq!(registration.origin(), (77436369.into(), 1.into()));
321+
assert_eq!(registration.origin(), (77_436_369.into(), 1.into()));
322322

323323
let (purpose, metadata) = registration.consume().unwrap();
324324
assert_eq!(

rust/rbac-registration/src/cardano/cip509/x509_chunks.rs

Lines changed: 113 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -109,50 +109,117 @@ fn decompress(d: &mut Decoder, algorithm: &CompressionAlgorithm) -> anyhow::Resu
109109

110110
#[cfg(test)]
111111
mod tests {
112-
// TODO: FIXME:
113-
// use super::*;
114-
//
115-
// // RAW data: 10
116-
// const RAW: &str =
117-
// "0a8c5840a30a815902ae308202aa3082025ca00302010202147735a70599e68b49554b1cb3a6cf5e34583b3c2f300506032b6570307c310b300906035504061302555331584013301106035504080c0a43616c69666f726e69613116301406035504070c0d53616e204672616e636973636f31123010060355040a0c094d79436f6d70616e79584031153013060355040b0c0c4d794465706172746d656e743115301306035504030c0c6d79646f6d61696e2e636f6d301e170d3234313132393034333134305a1758400d3235313132393034333134305a307c310b30090603550406130255533113301106035504080c0a43616c69666f726e69613116301406035504070c0d53616e5840204672616e636973636f31123010060355040a0c094d79436f6d70616e7931153013060355040b0c0c4d794465706172746d656e743115301306035504030c0c58406d79646f6d61696e2e636f6d302a300506032b65700321007e082c662a8d4d3271d797067f36caf25d6472b83901620a2eac193331a7f871a381ef3081ec308158409e0603551d11048196308193820c6d79646f6d61696e2e636f6d82107777772e6d79646f6d61696e2e636f6d820b6578616d706c652e636f6d820f7777772e65584078616d706c652e636f6d86537765622b63617264616e6f3a2f2f616464722f7374616b655f7465737431757165686b636b306c616a713867723238743975786e5840757667637172633630373078336b3972383034387a3879356773737274766e300b0603551d0f0404030205e0301d0603551d250416301406082b06010505070358400106082b06010505070302301d0603551d0e04160414251ddd56123655faa9348ff93c1e92ce3bc15a29300506032b6570034100b11c80d36fdcba650b950f06584087e448b3bcbeb2caa5249b24aff83d16ebbb71249e44bd0ecfab8b40fb772b6f977f98ac9122e13954439d0120980b347e3f9707181e81d9800558206e42f8e5582e89a76ebb13ef279df7841efce978f106bee196f0e3cfd347bb31a2e8186481a4000001820a0003010a6454657374"
118-
// ; // Brotli data: 11
119-
// const BROTLI: &str =
120-
// "0b8958401bed02003c0e772c72637668c289a39b361dd1161a123da11e1118d08c7ab73ed1455e25aab3105e92334ba1fe128febedfb3e4912243755f42aca92094de82658404a4149a26917374c7cfd021376195439e4ea64844b46cfe1f87e9b6bf4d43c9dace1920ceeb2cc82bb60018b5b2de9571c5ea9c81dddd4077cc4571eb33181ce58409b38965811866581e4e903e6967333e85ab02e1b25665f272d24db06fb0183d3dd1cd937e2e260e3e0d045c976e057dde418766ea47dd551a68c20c015f508e25840118815ae0511d0e258b4440bd4b921222339016000ba853d2119394d8006a8a220d1c4755d3920f4403b302919d9c22f32106e1e10c3942a7d0f1c8ce42283205840528a20238dc8802d44cafe99612022d4abb8dc58894462642a21bb150449720b1f0e4e2a62bb9210b334d2f13ba4057d05f409d0fa3c666a3cb41cd012cc8e29584086ea45acd180f40932c052962cc156bad9f4a8a80d2f5d2e488c7ba8a496b1b1bf332482c7f8b9f981bfcb862878854a29842b460c8c782fb7905037399087685840693fc55005905188558891f50a0b0b0d8f0c04528e5d4a3c3c5c1cfc3360ef293f8938271225c0c6c727c4c59e3e4e09a2788847c7cfc79646ce62974cc11f1558405fbca2dc36eaf3594d18624bde0c7adac3324a828c2b833b3b3fbcd0c657c337f05bd53ece84f0adf329567b7234fe45897252656f11cf8ae6e56073452a93e85835133271a0fbc9f8d641adafb33a0267685f05fd95caf1ff3efa9d60febcfced727553ff21cd774cee682b161636860470b149c61f40"
121-
// ; // Zstd data: 12
122-
// const ZSTD: &str=
123-
// "0c89584028b52ffd6000029d1100b41fa30a815902ae308202aa3082025ca00302010202147735a70599e68b49554b1cb3a6cf5e34583b3c2f300506032b6570307c310b5840300906035504061302555331133011080c0a43616c69666f726e696131163014070c0d53616e204672616e636973636f311230100a0c094d79436f6d70616e79584031153013060355040b0c0c4d794465706172746d656e74030c0c6d79646f6d61696e2e636f6d301e170d3234313132393034333134305a170d32352a0321007e5840082c662a8d4d3271d797067f36caf25d6472b83901620a2eac193331a7f871a381ef3081ec30819e0603551d110481963081938282107777772e820b6578616d5840706c65820f86537765622b63617264616e6f3a2f2f616464722f7374616b655f7465737431757165686b636b306c616a713867723238743975786e7576676371584072633630373078336b3972383034387a3879356773737274766e300b0f0404030205e0301d2504082b06010505070301020e04160414251ddd56123655faa93458408ff93c1e92ce3bc15a294100b11c80d36fdcba650b950f0687e448b3bcbeb2caa5249b24aff83d16ebbb71249e44bd0ecfab8b40fb772b6f977f98ac9122e139584054439d0120980b347e3f9707181e81d9800558206e42f8e589a76ebb13ef279df7841efce978f106bee196f0e3cfd347bb31a2e8186481a4000001820a000301583d0a64546573740013003d3e631feb0da1b068d5115f8161e2aed10b46d3acd0c00e1b9c80e50abeed00ca66cc432659ca8c6f3affd9b92ccedd01d66906"
124-
// ;
125-
//
126-
// #[test]
127-
// fn test_decode_x509_chunks_raw() {
128-
// let raw_bytes = hex::decode(RAW).unwrap();
129-
// let mut decoder = Decoder::new(raw_bytes.as_slice());
130-
// let mut report = ProblemReport::new("X509Chunks");
131-
// let x509_chunks = X509Chunks::decode(&mut decoder, &mut report).unwrap();
132-
// assert!(!report.is_problematic());
133-
// // Decode the decompressed data should success.
134-
// assert!(x509_chunks.0.is_some());
135-
// }
136-
//
137-
// #[test]
138-
// fn test_decode_x509_chunks_brotli() {
139-
// let brotli_bytes = hex::decode(BROTLI).unwrap();
140-
// let mut decoder = Decoder::new(brotli_bytes.as_slice());
141-
// let mut report = ProblemReport::new("X509Chunks");
142-
// let x509_chunks = X509Chunks::decode(&mut decoder, &mut report).unwrap();
143-
// assert!(!report.is_problematic());
144-
// // Decode the decompressed data should success.
145-
// assert!(x509_chunks.0.is_some());
146-
// }
147-
//
148-
// #[test]
149-
// fn test_decode_x509_chunks_zstd() {
150-
// let zstd_bytes = hex::decode(ZSTD).unwrap();
151-
// let mut decoder = Decoder::new(zstd_bytes.as_slice());
152-
// let mut report = ProblemReport::new("X509Chunks");
153-
// let x509_chunks = X509Chunks::decode(&mut decoder, &mut report).unwrap();
154-
// assert!(!report.is_problematic());
155-
// // Decode the decompressed data should success.
156-
// assert!(x509_chunks.0.is_some());
157-
// }
112+
use catalyst_types::problem_report::ProblemReport;
113+
use pallas::ledger::traverse::{MultiEraBlock, MultiEraTx};
114+
115+
use super::*;
116+
117+
// RAW data: 10
118+
const RAW: &str =
119+
"0a8c5840a30a815902ae308202aa3082025ca00302010202147735a70599e68b49554b1cb3a6cf5e34583b3c2f300506032b6570307c310b300906035504061302555331584013301106035504080c0a43616c69666f726e69613116301406035504070c0d53616e204672616e636973636f31123010060355040a0c094d79436f6d70616e79584031153013060355040b0c0c4d794465706172746d656e743115301306035504030c0c6d79646f6d61696e2e636f6d301e170d3234313132393034333134305a1758400d3235313132393034333134305a307c310b30090603550406130255533113301106035504080c0a43616c69666f726e69613116301406035504070c0d53616e5840204672616e636973636f31123010060355040a0c094d79436f6d70616e7931153013060355040b0c0c4d794465706172746d656e743115301306035504030c0c58406d79646f6d61696e2e636f6d302a300506032b65700321007e082c662a8d4d3271d797067f36caf25d6472b83901620a2eac193331a7f871a381ef3081ec308158409e0603551d11048196308193820c6d79646f6d61696e2e636f6d82107777772e6d79646f6d61696e2e636f6d820b6578616d706c652e636f6d820f7777772e65584078616d706c652e636f6d86537765622b63617264616e6f3a2f2f616464722f7374616b655f7465737431757165686b636b306c616a713867723238743975786e5840757667637172633630373078336b3972383034387a3879356773737274766e300b0603551d0f0404030205e0301d0603551d250416301406082b06010505070358400106082b06010505070302301d0603551d0e04160414251ddd56123655faa9348ff93c1e92ce3bc15a29300506032b6570034100b11c80d36fdcba650b950f06584087e448b3bcbeb2caa5249b24aff83d16ebbb71249e44bd0ecfab8b40fb772b6f977f98ac9122e13954439d0120980b347e3f9707181e81d9800558206e42f8e5582e89a76ebb13ef279df7841efce978f106bee196f0e3cfd347bb31a2e8186481a4000001820a0003010a6454657374";
120+
// Brotli data: 11
121+
const BROTLI: &str =
122+
"0b8958401bed02003c0e772c72637668c289a39b361dd1161a123da11e1118d08c7ab73ed1455e25aab3105e92334ba1fe128febedfb3e4912243755f42aca92094de82658404a4149a26917374c7cfd021376195439e4ea64844b46cfe1f87e9b6bf4d43c9dace1920ceeb2cc82bb60018b5b2de9571c5ea9c81dddd4077cc4571eb33181ce58409b38965811866581e4e903e6967333e85ab02e1b25665f272d24db06fb0183d3dd1cd937e2e260e3e0d045c976e057dde418766ea47dd551a68c20c015f508e25840118815ae0511d0e258b4440bd4b921222339016000ba853d2119394d8006a8a220d1c4755d3920f4403b302919d9c22f32106e1e10c3942a7d0f1c8ce42283205840528a20238dc8802d44cafe99612022d4abb8dc58894462642a21bb150449720b1f0e4e2a62bb9210b334d2f13ba4057d05f409d0fa3c666a3cb41cd012cc8e29584086ea45acd180f40932c052962cc156bad9f4a8a80d2f5d2e488c7ba8a496b1b1bf332482c7f8b9f981bfcb862878854a29842b460c8c782fb7905037399087685840693fc55005905188558891f50a0b0b0d8f0c04528e5d4a3c3c5c1cfc3360ef293f8938271225c0c6c727c4c59e3e4e09a2788847c7cfc79646ce62974cc11f1558405fbca2dc36eaf3594d18624bde0c7adac3324a828c2b833b3b3fbcd0c657c337f05bd53ece84f0adf329567b7234fe45897252656f11cf8ae6e56073452a93e85835133271a0fbc9f8d641adafb33a0267685f05fd95caf1ff3efa9d60febcfced727553ff21cd774cee682b161636860470b149c61f40";
123+
// Zstd data: 12
124+
const ZSTD: &str=
125+
"0c89584028b52ffd6000029d1100b41fa30a815902ae308202aa3082025ca00302010202147735a70599e68b49554b1cb3a6cf5e34583b3c2f300506032b6570307c310b5840300906035504061302555331133011080c0a43616c69666f726e696131163014070c0d53616e204672616e636973636f311230100a0c094d79436f6d70616e79584031153013060355040b0c0c4d794465706172746d656e74030c0c6d79646f6d61696e2e636f6d301e170d3234313132393034333134305a170d32352a0321007e5840082c662a8d4d3271d797067f36caf25d6472b83901620a2eac193331a7f871a381ef3081ec30819e0603551d110481963081938282107777772e820b6578616d5840706c65820f86537765622b63617264616e6f3a2f2f616464722f7374616b655f7465737431757165686b636b306c616a713867723238743975786e7576676371584072633630373078336b3972383034387a3879356773737274766e300b0f0404030205e0301d2504082b06010505070301020e04160414251ddd56123655faa93458408ff93c1e92ce3bc15a294100b11c80d36fdcba650b950f0687e448b3bcbeb2caa5249b24aff83d16ebbb71249e44bd0ecfab8b40fb772b6f977f98ac9122e139584054439d0120980b347e3f9707181e81d9800558206e42f8e589a76ebb13ef279df7841efce978f106bee196f0e3cfd347bb31a2e8186481a4000001820a000301583d0a64546573740013003d3e631feb0da1b068d5115f8161e2aed10b46d3acd0c00e1b9c80e50abeed00ca66cc432659ca8c6f3affd9b92ccedd01d66906";
126+
127+
#[test]
128+
fn test_decode_x509_chunks_raw() {
129+
let raw_bytes = hex::decode(RAW).unwrap();
130+
let mut decoder = Decoder::new(raw_bytes.as_slice());
131+
let mut report = ProblemReport::new("X509Chunks");
132+
// We don't care about actual values in the context, all we want is to check the decoding
133+
// of differently compressed data.
134+
let block = hex::decode(include_str!("../../test_data/cardano/conway_3.block")).unwrap();
135+
let block = MultiEraBlock::decode(&block).unwrap();
136+
let transactions = block.txs();
137+
let MultiEraTx::Conway(transaction) = transactions.first().unwrap() else {
138+
panic!("Unexpected transaction type");
139+
};
140+
let mut context = DecodeContext {
141+
slot: 0.into(),
142+
transaction_index: 0.into(),
143+
transaction,
144+
report: &mut report,
145+
};
146+
let x509_chunks = X509Chunks::decode(&mut decoder, &mut context).unwrap();
147+
// We don't want to check `report.is_problematic()` because there will be errors because
148+
// of the context. Instead we check that the fields are decoded.
149+
let metadata = x509_chunks.0.unwrap();
150+
assert_eq!(1, metadata.x509_certs.len());
151+
assert!(metadata.c509_certs.is_empty());
152+
assert_eq!(1, metadata.certificate_uris.x_uris().len());
153+
assert!(metadata.certificate_uris.c_uris().is_empty());
154+
assert_eq!(1, metadata.pub_keys.len());
155+
assert!(metadata.revocation_list.is_empty());
156+
assert_eq!(1, metadata.role_data.len());
157+
assert!(metadata.purpose_key_data.is_empty());
158+
}
159+
160+
#[test]
161+
fn decode_x509_chunks_brotli() {
162+
let brotli_bytes = hex::decode(BROTLI).unwrap();
163+
let mut decoder = Decoder::new(brotli_bytes.as_slice());
164+
let mut report = ProblemReport::new("X509Chunks");
165+
// We don't care about actual values in the context, all we want is to check the decoding
166+
// of differently compressed data.
167+
let block = hex::decode(include_str!("../../test_data/cardano/conway_3.block")).unwrap();
168+
let block = MultiEraBlock::decode(&block).unwrap();
169+
let transactions = block.txs();
170+
let MultiEraTx::Conway(transaction) = transactions.first().unwrap() else {
171+
panic!("Unexpected transaction type");
172+
};
173+
let mut context = DecodeContext {
174+
slot: 0.into(),
175+
transaction_index: 0.into(),
176+
transaction,
177+
report: &mut report,
178+
};
179+
let x509_chunks = X509Chunks::decode(&mut decoder, &mut context).unwrap();
180+
// We don't want to check `report.is_problematic()` because there will be errors because
181+
// of the context. Instead we check that the fields are decoded.
182+
let metadata = x509_chunks.0.unwrap();
183+
assert_eq!(1, metadata.x509_certs.len());
184+
assert!(metadata.c509_certs.is_empty());
185+
assert_eq!(1, metadata.certificate_uris.x_uris().len());
186+
assert!(metadata.certificate_uris.c_uris().is_empty());
187+
assert_eq!(1, metadata.pub_keys.len());
188+
assert!(metadata.revocation_list.is_empty());
189+
assert_eq!(1, metadata.role_data.len());
190+
assert!(metadata.purpose_key_data.is_empty());
191+
}
192+
193+
#[test]
194+
fn decode_x509_chunks_zstd() {
195+
let zstd_bytes = hex::decode(ZSTD).unwrap();
196+
let mut decoder = Decoder::new(zstd_bytes.as_slice());
197+
let mut report = ProblemReport::new("X509Chunks");
198+
// We don't care about actual values in the context, all we want is to check the decoding
199+
// of differently compressed data.
200+
let block = hex::decode(include_str!("../../test_data/cardano/conway_3.block")).unwrap();
201+
let block = MultiEraBlock::decode(&block).unwrap();
202+
let transactions = block.txs();
203+
let MultiEraTx::Conway(transaction) = transactions.first().unwrap() else {
204+
panic!("Unexpected transaction type");
205+
};
206+
let mut context = DecodeContext {
207+
slot: 0.into(),
208+
transaction_index: 0.into(),
209+
transaction,
210+
report: &mut report,
211+
};
212+
let x509_chunks = X509Chunks::decode(&mut decoder, &mut context).unwrap();
213+
// We don't want to check `report.is_problematic()` because there will be errors because
214+
// of the context. Instead we check that the fields are decoded.
215+
let metadata = x509_chunks.0.unwrap();
216+
assert_eq!(1, metadata.x509_certs.len());
217+
assert!(metadata.c509_certs.is_empty());
218+
assert_eq!(1, metadata.certificate_uris.x_uris().len());
219+
assert!(metadata.certificate_uris.c_uris().is_empty());
220+
assert_eq!(1, metadata.pub_keys.len());
221+
assert!(metadata.revocation_list.is_empty());
222+
assert_eq!(1, metadata.role_data.len());
223+
assert!(metadata.purpose_key_data.is_empty());
224+
}
158225
}

rust/rbac-registration/src/registration/cardano/mod.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -495,10 +495,7 @@ fn update_tracking_payment_history(
495495

496496
#[cfg(test)]
497497
mod test {
498-
use pallas::network::miniprotocols::Point;
499-
500-
use super::RegistrationChain;
501-
use crate::cardano::cip509::Cip509;
498+
use super::*;
502499

503500
fn conway_1() -> Vec<u8> {
504501
hex::decode(include_str!("../../test_data/cardano/conway_1.block"))

0 commit comments

Comments
 (0)