Skip to content

Commit 83f805c

Browse files
authored
domain - validator - MessageRepository::add() to receive ValidatorDesc (#109)
1 parent 515bb61 commit 83f805c

File tree

3 files changed

+20
-17
lines changed

3 files changed

+20
-17
lines changed

validator/src/application/message_propagation.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ impl<S: State> MessagePropagator<S> {
5757
let add_result =
5858
await!(self
5959
.message_repository
60-
.add(&channel.id, &validator.id, message.clone()))
60+
.add(&channel.id, &validator, message.clone()))
6161
.map_err(Into::into);
6262
results.push(add_result);
6363
}
@@ -75,7 +75,7 @@ mod test {
7575
use domain::channel::fixtures::get_channel;
7676
use domain::validator::message::fixtures::{get_reject_state, DummyState};
7777
use domain::validator::message::{Message, MessageType};
78-
use domain::{ChannelId, ValidatorId};
78+
use domain::{ChannelId, ValidatorDesc, ValidatorId};
7979
use domain::{RepositoryError, RepositoryFuture};
8080

8181
use crate::application::MessagePropagator;
@@ -95,7 +95,7 @@ mod test {
9595
fn add(
9696
&self,
9797
_channel: &ChannelId,
98-
_validator: &ValidatorId,
98+
_validator: &ValidatorDesc,
9999
_message: Message<DummyState>,
100100
) -> RepositoryFuture<()> {
101101
let result = self

validator/src/domain/validator.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,16 @@ pub trait Validator {
1818
}
1919

2020
pub mod repository {
21-
use domain::validator::message::{MessageType, State};
22-
use domain::validator::{Message, ValidatorId};
23-
use domain::{ChannelId, RepositoryFuture};
21+
use domain::validator::message::{Message, MessageType, State};
22+
use domain::{ChannelId, RepositoryFuture, ValidatorDesc, ValidatorId};
2423

2524
pub trait MessageRepository<S: State> {
25+
/// Adds a Message to the passed Validator
26+
/// Accepts ValidatorDesc instead of ValidatorId, as we need to know the Validator Url as well
2627
fn add(
2728
&self,
28-
channel: &ChannelId,
29-
validator: &ValidatorId,
29+
for_channel: &ChannelId,
30+
to_validator: &ValidatorDesc,
3031
message: Message<S>,
3132
) -> RepositoryFuture<()>;
3233

validator/src/infrastructure/persistence/validator/memory.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use futures::future::{ready, FutureExt};
44

55
use domain::validator::message::{MessageType, State};
66
use domain::validator::{Message, ValidatorId};
7-
use domain::{ChannelId, RepositoryFuture};
7+
use domain::{ChannelId, RepositoryFuture, ValidatorDesc};
88
use memory_repository::MemoryRepository;
99

1010
use crate::domain::validator::repository::MessageRepository;
@@ -21,6 +21,7 @@ impl State for MemoryState {
2121
pub struct MemoryMessage {
2222
pub message: Message<MemoryState>,
2323
pub channel: ChannelId,
24+
/// As we are not dealing with any URL requests here, we can only store and use the ValidatorId
2425
pub owner: ValidatorId,
2526
}
2627

@@ -41,14 +42,14 @@ impl MemoryMessageRepository {
4142
impl MessageRepository<MemoryState> for MemoryMessageRepository {
4243
fn add(
4344
&self,
44-
channel: &ChannelId,
45-
validator: &ValidatorId,
45+
for_channel: &ChannelId,
46+
to_validator: &ValidatorDesc,
4647
message: Message<MemoryState>,
4748
) -> RepositoryFuture<()> {
4849
let message = MemoryMessage {
4950
message,
50-
channel: *channel,
51-
owner: validator.clone(),
51+
channel: *for_channel,
52+
owner: to_validator.id.clone(),
5253
};
5354
// this should never match against the new record, that's why always pass false.
5455
ready(self.inner.add(&false, message).map_err(Into::into)).boxed()
@@ -92,6 +93,7 @@ mod test {
9293
use domain::validator::message::fixtures::{get_heartbeat, get_reject_state};
9394

9495
use super::*;
96+
use domain::validator::fixtures::get_validator;
9597
use domain::validator::message::TYPE_REJECT;
9698

9799
fn get_reject_memory_message(
@@ -109,7 +111,7 @@ mod test {
109111
#[test]
110112
fn adds_message_for_validator() {
111113
futures::executor::block_on(async {
112-
let validator = ValidatorId::try_from("identity").expect("ValidatorId failed");
114+
let validator = get_validator("identity", None);
113115
let repo = MemoryMessageRepository::new(&[]);
114116

115117
let message = get_reject_state(None);
@@ -124,15 +126,15 @@ mod test {
124126
.expect("Listing all Messages failed");
125127

126128
assert_eq!(1, list_all.len());
127-
assert_eq!(validator, list_all[0].owner);
129+
assert_eq!(validator.id, list_all[0].owner);
128130
assert_eq!(channel_id, list_all[0].channel);
129131
})
130132
}
131133

132134
#[test]
133135
fn getting_latest_message() {
134136
futures::executor::block_on(async {
135-
let validator = ValidatorId::try_from("identity").expect("ValidatorId failed");
137+
let validator = get_validator("identity", None);
136138
let channel = get_channel_id("channel id");
137139

138140
let repo = MemoryMessageRepository::new(&[]);
@@ -145,7 +147,7 @@ mod test {
145147
let new_message = Message::RejectState(get_reject_state(Some("my reason".to_string())));
146148
await!(repo.add(&channel, &validator, new_message)).expect("Adding a message failed");
147149

148-
let latest_any = await!(repo.latest(&channel, &validator, None))
150+
let latest_any = await!(repo.latest(&channel, &validator.id, None))
149151
.expect("Getting latest Message failed");
150152

151153
match latest_any.expect("There was no latest message returned") {

0 commit comments

Comments
 (0)