Skip to content

Commit b027ad9

Browse files
committed
adapt snapshots HTTP tests
1 parent 0565876 commit b027ad9

File tree

7 files changed

+133
-83
lines changed

7 files changed

+133
-83
lines changed

mithril-aggregator/src/database/provider/signed_entity.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use async_trait::async_trait;
77

88
use mithril_common::{
99
entities::{SignedEntity, SignedEntityType, SignedEntityTypeDiscriminants, Snapshot},
10+
signable_builder::Artifact,
1011
sqlite::{
1112
EntityCursor, HydrationError, Projection, Provider, SourceAlias, SqLiteEntity,
1213
WhereCondition,
@@ -62,7 +63,7 @@ impl From<SignedEntityRecord> for Snapshot {
6263

6364
impl<T> TryFrom<SignedEntityRecord> for SignedEntity<T>
6465
where
65-
for<'a> T: Serialize + Deserialize<'a>,
66+
for<'a> T: Artifact + Serialize + Deserialize<'a>,
6667
{
6768
type Error = serde_json::error::Error;
6869

@@ -465,10 +466,7 @@ mod tests {
465466
let (filter, values) = condition.expand();
466467

467468
assert_eq!("signed_entity_type_id = ?1".to_string(), filter);
468-
assert_eq!(
469-
vec![Value::Integer(SignedEntityType::dummy().index() as i64)],
470-
values
471-
);
469+
assert_eq!(vec![Value::Integer(2)], values);
472470
}
473471

474472
#[test]

mithril-aggregator/src/http_server/routes/artifact_routes/mithril_stake_distribution.rs

Lines changed: 46 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,9 @@ pub mod handlers {
9696
#[cfg(test)]
9797
pub mod tests {
9898
use crate::http_server::SERVER_BASE_PATH;
99-
use mithril_common::entities::SignedEntityType;
99+
use crate::signed_entity_service::MockSignedEntityService;
100+
use mithril_common::entities::{Epoch, SignedEntity, SignedEntityType};
101+
use mithril_common::signable_builder::Artifact;
100102
use mithril_common::sqlite::HydrationError;
101103
use mithril_common::test_utils::apispec::APISpec;
102104
use mithril_common::test_utils::fake_data;
@@ -107,7 +109,6 @@ pub mod tests {
107109
use warp::test::request;
108110

109111
use super::*;
110-
use crate::database::provider::MockSignedEntityStorer;
111112

112113
fn setup_router(
113114
dependency_manager: Arc<DependencyManager>,
@@ -122,19 +123,39 @@ pub mod tests {
122123
.and(routes(dependency_manager).with(cors))
123124
}
124125

126+
pub fn create_signed_entities<T>(
127+
signed_entity_type: SignedEntityType,
128+
records: Vec<T>,
129+
) -> Vec<SignedEntity<T>>
130+
where
131+
T: Artifact,
132+
{
133+
records
134+
.into_iter()
135+
.enumerate()
136+
.map(|(idx, record)| SignedEntity {
137+
signed_entity_id: format!("{idx}"),
138+
signed_entity_type: signed_entity_type.to_owned(),
139+
certificate_id: format!("certificate-{idx}"),
140+
artifact: record,
141+
created_at: "2023-01-19T13:43:05.618857482Z".to_string(),
142+
})
143+
.collect()
144+
}
145+
125146
#[tokio::test]
126147
async fn test_mithril_stake_distributions_get_ok() {
127-
let signed_entity_records = shared::tests::create_signed_entity_records(
148+
let signed_entity_records = create_signed_entities(
128149
SignedEntityType::MithrilStakeDistribution(Epoch::default()),
129150
fake_data::mithril_stake_distributions(5),
130151
);
131152
let mut mock_signed_entity_service = MockSignedEntityService::new();
132153
mock_signed_entity_service
133-
.expect_get_last_signed_stake_distribution()
134-
.return_once(|_, _| Ok(signed_entity_records))
154+
.expect_get_last_signed_mithril_stake_distribution()
155+
.return_once(|_| Ok(signed_entity_records))
135156
.once();
136157
let mut dependency_manager = initialize_dependencies().await;
137-
dependency_manager.signed_entity_storer = Arc::new(mock_signed_entity_storer);
158+
dependency_manager.signed_entity_service = Arc::new(mock_signed_entity_service);
138159

139160
let method = Method::GET.as_str();
140161
let path = "/artifact/mithril-stake-distributions";
@@ -157,13 +178,13 @@ pub mod tests {
157178

158179
#[tokio::test]
159180
async fn test_mithril_stake_distributions_get_ko() {
160-
let mut mock_signed_entity_storer = MockSignedEntityStorer::new();
161-
mock_signed_entity_storer
162-
.expect_get_last_signed_entities_by_type()
163-
.return_once(|_, _| Err(HydrationError::InvalidData("invalid data".to_string()).into()))
181+
let mut mock_signed_entity_service = MockSignedEntityService::new();
182+
mock_signed_entity_service
183+
.expect_get_last_signed_mithril_stake_distribution()
184+
.return_once(|_| Err(HydrationError::InvalidData("invalid data".to_string()).into()))
164185
.once();
165186
let mut dependency_manager = initialize_dependencies().await;
166-
dependency_manager.signed_entity_storer = Arc::new(mock_signed_entity_storer);
187+
dependency_manager.signed_entity_service = Arc::new(mock_signed_entity_service);
167188

168189
let method = Method::GET.as_str();
169190
let path = "/artifact/mithril-stake-distributions";
@@ -186,20 +207,20 @@ pub mod tests {
186207

187208
#[tokio::test]
188209
async fn test_mithril_stake_distribution_get_ok() {
189-
let signed_entity_record = shared::tests::create_signed_entity_records(
210+
let signed_entity = create_signed_entities(
190211
SignedEntityType::MithrilStakeDistribution(Epoch::default()),
191212
fake_data::mithril_stake_distributions(1),
192213
)
193214
.first()
194215
.unwrap()
195216
.to_owned();
196-
let mut mock_signed_entity_storer = MockSignedEntityStorer::new();
197-
mock_signed_entity_storer
198-
.expect_get_signed_entity()
199-
.return_once(|_| Ok(Some(signed_entity_record)))
217+
let mut mock_signed_entity_service = MockSignedEntityService::new();
218+
mock_signed_entity_service
219+
.expect_get_signed_mithril_stake_distribution_by_id()
220+
.return_once(|_| Ok(Some(signed_entity)))
200221
.once();
201222
let mut dependency_manager = initialize_dependencies().await;
202-
dependency_manager.signed_entity_storer = Arc::new(mock_signed_entity_storer);
223+
dependency_manager.signed_entity_service = Arc::new(mock_signed_entity_service);
203224

204225
let method = Method::GET.as_str();
205226
let path = "/artifact/mithril-stake-distribution/{hash}";
@@ -222,13 +243,13 @@ pub mod tests {
222243

223244
#[tokio::test]
224245
async fn test_mithril_stake_distribution_ok_norecord() {
225-
let mut mock_signed_entity_storer = MockSignedEntityStorer::new();
226-
mock_signed_entity_storer
227-
.expect_get_signed_entity()
246+
let mut mock_signed_entity_service = MockSignedEntityService::new();
247+
mock_signed_entity_service
248+
.expect_get_signed_mithril_stake_distribution_by_id()
228249
.return_once(|_| Ok(None))
229250
.once();
230251
let mut dependency_manager = initialize_dependencies().await;
231-
dependency_manager.signed_entity_storer = Arc::new(mock_signed_entity_storer);
252+
dependency_manager.signed_entity_service = Arc::new(mock_signed_entity_service);
232253

233254
let method = Method::GET.as_str();
234255
let path = "/artifact/mithril-stake-distribution/{hash}";
@@ -251,13 +272,13 @@ pub mod tests {
251272

252273
#[tokio::test]
253274
async fn test_mithril_stake_distribution_get_ko() {
254-
let mut mock_signed_entity_storer = MockSignedEntityStorer::new();
255-
mock_signed_entity_storer
256-
.expect_get_signed_entity()
275+
let mut mock_signed_entity_service = MockSignedEntityService::new();
276+
mock_signed_entity_service
277+
.expect_get_signed_mithril_stake_distribution_by_id()
257278
.return_once(|_| Err(HydrationError::InvalidData("invalid data".to_string()).into()))
258279
.once();
259280
let mut dependency_manager = initialize_dependencies().await;
260-
dependency_manager.signed_entity_storer = Arc::new(mock_signed_entity_storer);
281+
dependency_manager.signed_entity_service = Arc::new(mock_signed_entity_service);
261282

262283
let method = Method::GET.as_str();
263284
let path = "/artifact/mithril-stake-distribution/{hash}";

mithril-aggregator/src/http_server/routes/artifact_routes/snapshot.rs

Lines changed: 62 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,9 @@ mod handlers {
228228
#[cfg(test)]
229229
mod tests {
230230
use crate::http_server::SERVER_BASE_PATH;
231-
use mithril_common::entities::SignedEntityType;
231+
use crate::signed_entity_service::MockSignedEntityService;
232+
use mithril_common::entities::{Beacon, SignedEntity, SignedEntityType};
233+
use mithril_common::signable_builder::Artifact;
232234
use mithril_common::sqlite::HydrationError;
233235
use mithril_common::test_utils::apispec::APISpec;
234236
use mithril_common::test_utils::fake_data;
@@ -239,7 +241,6 @@ mod tests {
239241
use warp::test::request;
240242

241243
use super::*;
242-
use crate::database::provider::MockSignedEntityStorer;
243244

244245
fn setup_router(
245246
dependency_manager: Arc<DependencyManager>,
@@ -254,19 +255,39 @@ mod tests {
254255
.and(routes(dependency_manager).with(cors))
255256
}
256257

258+
pub fn create_signed_entities<T>(
259+
signed_entity_type: SignedEntityType,
260+
records: Vec<T>,
261+
) -> Vec<SignedEntity<T>>
262+
where
263+
T: Artifact,
264+
{
265+
records
266+
.into_iter()
267+
.enumerate()
268+
.map(|(idx, record)| SignedEntity {
269+
signed_entity_id: format!("{idx}"),
270+
signed_entity_type: signed_entity_type.to_owned(),
271+
certificate_id: format!("certificate-{idx}"),
272+
artifact: record,
273+
created_at: "2023-01-19T13:43:05.618857482Z".to_string(),
274+
})
275+
.collect()
276+
}
277+
257278
#[tokio::test]
258279
async fn test_snapshots_get_ok() {
259-
let signed_entity_records = shared::tests::create_signed_entity_records(
280+
let signed_entities = create_signed_entities(
260281
SignedEntityType::CardanoImmutableFilesFull(Beacon::default()),
261282
fake_data::snapshots(5),
262283
);
263-
let mut mock_signed_entity_storer = MockSignedEntityStorer::new();
264-
mock_signed_entity_storer
265-
.expect_get_last_signed_entities_by_type()
266-
.return_once(|_, _| Ok(signed_entity_records))
284+
let mut mock_signed_entity_service = MockSignedEntityService::new();
285+
mock_signed_entity_service
286+
.expect_get_last_signed_snapshots()
287+
.return_once(|_| Ok(signed_entities))
267288
.once();
268289
let mut dependency_manager = initialize_dependencies().await;
269-
dependency_manager.signed_entity_storer = Arc::new(mock_signed_entity_storer);
290+
dependency_manager.signed_entity_service = Arc::new(mock_signed_entity_service);
270291

271292
let method = Method::GET.as_str();
272293
let path = "/artifact/snapshots";
@@ -289,13 +310,13 @@ mod tests {
289310

290311
#[tokio::test]
291312
async fn test_snapshots_get_ko() {
292-
let mut mock_signed_entity_storer = MockSignedEntityStorer::new();
293-
mock_signed_entity_storer
294-
.expect_get_last_signed_entities_by_type()
295-
.return_once(|_, _| Err(HydrationError::InvalidData("invalid data".to_string()).into()))
313+
let mut mock_signed_entity_service = MockSignedEntityService::new();
314+
mock_signed_entity_service
315+
.expect_get_last_signed_snapshots()
316+
.return_once(|_| Err(HydrationError::InvalidData("invalid data".to_string()).into()))
296317
.once();
297318
let mut dependency_manager = initialize_dependencies().await;
298-
dependency_manager.signed_entity_storer = Arc::new(mock_signed_entity_storer);
319+
dependency_manager.signed_entity_service = Arc::new(mock_signed_entity_service);
299320

300321
let method = Method::GET.as_str();
301322
let path = "/artifact/snapshots";
@@ -318,20 +339,20 @@ mod tests {
318339

319340
#[tokio::test]
320341
async fn test_snapshot_digest_get_ok() {
321-
let signed_entity_record = shared::tests::create_signed_entity_records(
342+
let signed_entity = create_signed_entities(
322343
SignedEntityType::CardanoImmutableFilesFull(Beacon::default()),
323344
fake_data::snapshots(1),
324345
)
325346
.first()
326347
.unwrap()
327348
.to_owned();
328-
let mut mock_signed_entity_storer = MockSignedEntityStorer::new();
329-
mock_signed_entity_storer
330-
.expect_get_signed_entity()
331-
.return_once(|_| Ok(Some(signed_entity_record)))
349+
let mut mock_signed_entity_service = MockSignedEntityService::new();
350+
mock_signed_entity_service
351+
.expect_get_signed_snapshot_by_id()
352+
.return_once(|_| Ok(Some(signed_entity)))
332353
.once();
333354
let mut dependency_manager = initialize_dependencies().await;
334-
dependency_manager.signed_entity_storer = Arc::new(mock_signed_entity_storer);
355+
dependency_manager.signed_entity_service = Arc::new(mock_signed_entity_service);
335356

336357
let method = Method::GET.as_str();
337358
let path = "/artifact/snapshot/{digest}";
@@ -354,13 +375,13 @@ mod tests {
354375

355376
#[tokio::test]
356377
async fn test_snapshot_digest_get_ok_nosnapshot() {
357-
let mut mock_signed_entity_storer = MockSignedEntityStorer::new();
358-
mock_signed_entity_storer
359-
.expect_get_signed_entity()
378+
let mut mock_signed_entity_service = MockSignedEntityService::new();
379+
mock_signed_entity_service
380+
.expect_get_signed_snapshot_by_id()
360381
.return_once(|_| Ok(None))
361382
.once();
362383
let mut dependency_manager = initialize_dependencies().await;
363-
dependency_manager.signed_entity_storer = Arc::new(mock_signed_entity_storer);
384+
dependency_manager.signed_entity_service = Arc::new(mock_signed_entity_service);
364385

365386
let method = Method::GET.as_str();
366387
let path = "/artifact/snapshot/{digest}";
@@ -383,13 +404,13 @@ mod tests {
383404

384405
#[tokio::test]
385406
async fn test_snapshot_digest_get_ko() {
386-
let mut mock_signed_entity_storer = MockSignedEntityStorer::new();
387-
mock_signed_entity_storer
388-
.expect_get_signed_entity()
407+
let mut mock_signed_entity_service = MockSignedEntityService::new();
408+
mock_signed_entity_service
409+
.expect_get_signed_snapshot_by_id()
389410
.return_once(|_| Err(HydrationError::InvalidData("invalid data".to_string()).into()))
390411
.once();
391412
let mut dependency_manager = initialize_dependencies().await;
392-
dependency_manager.signed_entity_storer = Arc::new(mock_signed_entity_storer);
413+
dependency_manager.signed_entity_service = Arc::new(mock_signed_entity_service);
393414

394415
let method = Method::GET.as_str();
395416
let path = "/artifact/snapshot/{digest}";
@@ -412,20 +433,20 @@ mod tests {
412433

413434
#[tokio::test]
414435
async fn test_snapshot_download_get_ok() {
415-
let signed_entity_record = shared::tests::create_signed_entity_records(
436+
let signed_entity = create_signed_entities(
416437
SignedEntityType::CardanoImmutableFilesFull(Beacon::default()),
417438
fake_data::snapshots(1),
418439
)
419440
.first()
420441
.unwrap()
421442
.to_owned();
422-
let mut mock_signed_entity_storer = MockSignedEntityStorer::new();
423-
mock_signed_entity_storer
424-
.expect_get_signed_entity()
425-
.return_once(|_| Ok(Some(signed_entity_record)))
443+
let mut mock_signed_entity_service = MockSignedEntityService::new();
444+
mock_signed_entity_service
445+
.expect_get_signed_snapshot_by_id()
446+
.return_once(|_| Ok(Some(signed_entity)))
426447
.once();
427448
let mut dependency_manager = initialize_dependencies().await;
428-
dependency_manager.signed_entity_storer = Arc::new(mock_signed_entity_storer);
449+
dependency_manager.signed_entity_service = Arc::new(mock_signed_entity_service);
429450

430451
let method = Method::GET.as_str();
431452
let path = "/artifact/snapshot/{digest}/download";
@@ -448,13 +469,13 @@ mod tests {
448469

449470
#[tokio::test]
450471
async fn test_snapshot_download_get_ok_nosnapshot() {
451-
let mut mock_signed_entity_storer = MockSignedEntityStorer::new();
452-
mock_signed_entity_storer
453-
.expect_get_signed_entity()
472+
let mut mock_signed_entity_service = MockSignedEntityService::new();
473+
mock_signed_entity_service
474+
.expect_get_signed_snapshot_by_id()
454475
.return_once(|_| Ok(None))
455476
.once();
456477
let mut dependency_manager = initialize_dependencies().await;
457-
dependency_manager.signed_entity_storer = Arc::new(mock_signed_entity_storer);
478+
dependency_manager.signed_entity_service = Arc::new(mock_signed_entity_service);
458479

459480
let method = Method::GET.as_str();
460481
let path = "/artifact/snapshot/{digest}/download";
@@ -477,13 +498,13 @@ mod tests {
477498

478499
#[tokio::test]
479500
async fn test_snapshot_download_get_ko() {
480-
let mut mock_signed_entity_storer = MockSignedEntityStorer::new();
481-
mock_signed_entity_storer
482-
.expect_get_signed_entity()
501+
let mut mock_signed_entity_service = MockSignedEntityService::new();
502+
mock_signed_entity_service
503+
.expect_get_signed_snapshot_by_id()
483504
.return_once(|_| Err(HydrationError::InvalidData("invalid data".to_string()).into()))
484505
.once();
485506
let mut dependency_manager = initialize_dependencies().await;
486-
dependency_manager.signed_entity_storer = Arc::new(mock_signed_entity_storer);
507+
dependency_manager.signed_entity_service = Arc::new(mock_signed_entity_service);
487508

488509
let method = Method::GET.as_str();
489510
let path = "/artifact/snapshot/{digest}/download";

mithril-aggregator/src/http_server/routes/middlewares.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::certifier_service::CertifierService;
22
use crate::event_store::{EventMessage, TransmitterService};
3+
use crate::signed_entity_service::SignedEntityService;
34
use crate::ticker_service::TickerService;
4-
use crate::SignedEntityService;
55
use crate::{
66
dependency::MultiSignerWrapper, CertificatePendingStore, CertificateStore, Configuration,
77
DependencyManager, ProtocolParametersStore, SignerRegisterer,

0 commit comments

Comments
 (0)