Skip to content

Commit 0e394d4

Browse files
committed
sentry - router - channel - get validator-messages:
- sentry - routers - tests for GET validator-messages channel routers - primitives - validator - MessageTypes::message_type helper fn - sentry - test_util - move body_to_string - sentry - test_util - body_to deserialize from response - sentry - routes - channel - clean-up
1 parent 4b47ee8 commit 0e394d4

File tree

6 files changed

+290
-51
lines changed

6 files changed

+290
-51
lines changed

primitives/src/validator.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,12 @@ pub mod messages {
400400
Heartbeat(Heartbeat),
401401
}
402402

403+
impl MessageTypes {
404+
pub fn message_type(&self) -> MessageType {
405+
self.into()
406+
}
407+
}
408+
403409
/// All available message type names.
404410
#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, FromStr, Display)]
405411
#[display(style = "CamelCase")]

sentry/src/middleware.rs

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,6 @@
11
//! This module contains all the routers' middlewares
22
//!
33
4-
#[cfg(test)]
5-
pub use test_util::*;
6-
74
pub mod auth;
85
pub mod campaign;
96
pub mod channel;
10-
11-
#[cfg(test)]
12-
pub mod test_util {
13-
use axum::{body::BoxBody, response::Response};
14-
15-
/// Extracts the body as a String from the Response.
16-
///
17-
/// Used when you want to check the response body or debug a response.
18-
pub async fn body_to_string(response: Response<BoxBody>) -> String {
19-
String::from_utf8(hyper::body::to_bytes(response).await.unwrap().to_vec()).unwrap()
20-
}
21-
}

sentry/src/middleware/auth.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,10 @@ mod test {
210210
};
211211
use primitives::test_util::{ADVERTISER, DUMMY_AUTH, FOLLOWER, IDS, LEADER, PUBLISHER};
212212

213-
use crate::{middleware::body_to_string, test_util::setup_dummy_app, Session};
213+
use crate::{
214+
test_util::{body_to_string, setup_dummy_app},
215+
Session,
216+
};
214217

215218
use super::*;
216219

sentry/src/routes/channel.rs

Lines changed: 25 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -744,9 +744,8 @@ pub mod validator_message {
744744

745745
use primitives::{
746746
balances::UncheckedState,
747-
config::GANACHE_CONFIG,
748747
sentry::validator_messages::ValidatorMessagesCreateRequest,
749-
test_util::{ADVERTISER, DUMMY_CAMPAIGN, IDS, LEADER},
748+
test_util::{ADVERTISER, CAMPAIGNS, IDS, LEADER},
750749
validator::{
751750
ApproveState, Heartbeat, MessageType, MessageTypes, NewState, RejectState,
752751
},
@@ -757,34 +756,25 @@ pub mod validator_message {
757756
async fn post_validator_messages() {
758757
let app_guard = setup_dummy_app().await;
759758
let app = Extension(Arc::new(app_guard.app.clone()));
760-
let config = GANACHE_CONFIG.clone();
761759
let all_message_types: [MessageType; 4] = [
762760
MessageType::NewState,
763761
MessageType::ApproveState,
764762
MessageType::RejectState,
765763
MessageType::Heartbeat,
766764
];
767765

768-
let channel_context = Extension(
769-
app.config
770-
.find_chain_of(DUMMY_CAMPAIGN.channel.token)
771-
.expect("Dummy channel Token should be present in config!")
772-
.with(DUMMY_CAMPAIGN.channel),
773-
);
774-
775-
let chain_context = config
776-
.find_chain_of(DUMMY_CAMPAIGN.channel.token)
777-
.expect("Campaign's Channel.token should be set in config");
766+
let channel_context = Extension(CAMPAIGNS[0].clone().of_channel());
778767

779768
insert_channel(&app.pool, &channel_context)
780769
.await
781770
.expect("should insert channel");
771+
782772
// Case when the request is not sent by a channel validator
783773
{
784774
let auth = Auth {
785775
era: 0,
786776
uid: IDS[&ADVERTISER],
787-
chain: chain_context.chain.clone(),
777+
chain: channel_context.chain.clone(),
788778
};
789779

790780
let req = ValidatorMessagesCreateRequest { messages: vec![] };
@@ -795,17 +785,19 @@ pub mod validator_message {
795785
channel_context.clone(),
796786
Json(req),
797787
)
798-
.await;
788+
.await
789+
.expect_err("We expect an error to be returned");
799790

800-
assert!(matches!(res, Err(ResponseError::Unauthorized)));
791+
assert_eq!(res, ResponseError::Unauthorized);
801792
}
793+
802794
// Cases where we insert validator messages
803795
// Case with 0 messages
804796
{
805797
let auth = Auth {
806798
era: 0,
807799
uid: IDS[&LEADER],
808-
chain: chain_context.chain.clone(),
800+
chain: channel_context.chain.clone(),
809801
};
810802

811803
let req = ValidatorMessagesCreateRequest { messages: vec![] };
@@ -836,17 +828,17 @@ pub mod validator_message {
836828
let auth = Auth {
837829
era: 0,
838830
uid: IDS[&LEADER],
839-
chain: chain_context.chain.clone(),
831+
chain: channel_context.chain.clone(),
840832
};
841833

842-
let message = Heartbeat {
834+
let message = MessageTypes::Heartbeat(Heartbeat {
843835
signature: String::new(),
844836
state_root: String::new(),
845837
timestamp: Utc::now(),
846-
};
838+
});
847839

848840
let req = ValidatorMessagesCreateRequest {
849-
messages: vec![MessageTypes::Heartbeat(message.clone())],
841+
messages: vec![message.clone()],
850842
};
851843

852844
create_validator_messages(
@@ -869,14 +861,14 @@ pub mod validator_message {
869861
.expect("should get messages");
870862
let inner_messages: Vec<MessageTypes> =
871863
messages.into_iter().map(|m| m.msg.clone()).collect();
872-
assert_eq!(inner_messages, vec![MessageTypes::Heartbeat(message)]);
864+
assert_eq!(inner_messages, vec![message]);
873865
}
874866
// Case with 4 messages (one of each type, heartbeat is already inserted)
875867
{
876868
let auth = Auth {
877869
era: 0,
878870
uid: IDS[&LEADER],
879-
chain: chain_context.chain.clone(),
871+
chain: channel_context.chain.clone(),
880872
};
881873

882874
let state_root =
@@ -888,31 +880,31 @@ pub mod validator_message {
888880
.expect("should unlock")
889881
.sign(&state_root.clone())
890882
.expect("should sign");
891-
let new_state: NewState<UncheckedState> = NewState {
883+
let new_state = MessageTypes::NewState(NewState {
892884
state_root: state_root.clone(),
893885
signature: signature.clone(),
894-
balances: Balances::new(),
895-
};
886+
balances: Balances::<UncheckedState>::new(),
887+
});
896888

897-
let approve_state = ApproveState {
889+
let approve_state = MessageTypes::ApproveState(ApproveState {
898890
state_root: state_root.clone(),
899891
signature: signature.clone(),
900892
is_healthy: true,
901-
};
893+
});
902894

903-
let reject_state = RejectState {
895+
let reject_state = MessageTypes::RejectState(RejectState {
904896
state_root,
905897
signature: signature.clone(),
906898
timestamp: Utc::now(),
907899
reason: "rejected".to_string(),
908900
balances: None,
909-
};
901+
});
910902

911903
let req = ValidatorMessagesCreateRequest {
912904
messages: vec![
913-
MessageTypes::NewState(new_state.clone()),
914-
MessageTypes::ApproveState(approve_state.clone()),
915-
MessageTypes::RejectState(reject_state.clone()),
905+
new_state.clone(),
906+
approve_state.clone(),
907+
reject_state.clone(),
916908
],
917909
};
918910

0 commit comments

Comments
 (0)