fix: start validating repo after registering webhook
Clone Repo wasn't sending the second message, so workaround: have it be sent after registering the webhook.
This commit is contained in:
parent
55d8ccb0bd
commit
68005d757d
5 changed files with 33 additions and 59 deletions
|
@ -21,12 +21,11 @@ ReceiveCIStatus --> [*] :on Fail
|
||||||
|
|
||||||
AdvanceNext --> ValidateRepo
|
AdvanceNext --> ValidateRepo
|
||||||
|
|
||||||
ReceiveRepoConfig --> ValidateRepo
|
|
||||||
ReceiveRepoConfig --> RegisterWebhook
|
ReceiveRepoConfig --> RegisterWebhook
|
||||||
|
|
||||||
RegisterWebhook --> WebhookRegistered
|
RegisterWebhook --> WebhookRegistered
|
||||||
|
|
||||||
WebhookRegistered --> [*]
|
WebhookRegistered --> ValidateRepo
|
||||||
|
|
||||||
AdvanceMain --> LoadConfigFromRepo :on repo config
|
AdvanceMain --> LoadConfigFromRepo :on repo config
|
||||||
AdvanceMain --> ValidateRepo :on server config
|
AdvanceMain --> ValidateRepo :on server config
|
||||||
|
|
|
@ -32,11 +32,6 @@ impl Handler<actor::messages::CloneRepo> for actor::RepoActor {
|
||||||
actor::messages::RegisterWebhook::new(),
|
actor::messages::RegisterWebhook::new(),
|
||||||
&self.log,
|
&self.log,
|
||||||
);
|
);
|
||||||
actor::do_send(
|
|
||||||
ctx.address(),
|
|
||||||
actor::messages::ValidateRepo::new(self.message_token),
|
|
||||||
&self.log,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
|
|
|
@ -9,9 +9,14 @@ impl Handler<actor::messages::WebhookRegistered> for actor::RepoActor {
|
||||||
fn handle(
|
fn handle(
|
||||||
&mut self,
|
&mut self,
|
||||||
msg: actor::messages::WebhookRegistered,
|
msg: actor::messages::WebhookRegistered,
|
||||||
_ctx: &mut Self::Context,
|
ctx: &mut Self::Context,
|
||||||
) -> Self::Result {
|
) -> Self::Result {
|
||||||
self.webhook_id.replace(msg.webhook_id().clone());
|
self.webhook_id.replace(msg.webhook_id().clone());
|
||||||
self.webhook_auth.replace(msg.webhook_auth().clone());
|
self.webhook_auth.replace(msg.webhook_auth().clone());
|
||||||
|
actor::do_send(
|
||||||
|
ctx.address(),
|
||||||
|
actor::messages::ValidateRepo::new(self.message_token),
|
||||||
|
&self.log,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[actix::test]
|
#[actix::test]
|
||||||
|
@ -105,31 +104,6 @@ async fn when_server_has_no_repo_config_should_send_load_from_repo() -> TestResu
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The server config can optionally include the names of the main, next and dev
|
|
||||||
/// branches. When it does we should go straight to sending a [ValidateRepo] message.
|
|
||||||
#[actix::test]
|
|
||||||
async fn when_server_has_repo_config_should_send_validate_repo() -> TestResult {
|
|
||||||
//given
|
|
||||||
let fs = given::a_filesystem();
|
|
||||||
let (mut open_repository, repo_details) = given::an_open_repository(&fs);
|
|
||||||
#[allow(clippy::unwrap_used)]
|
|
||||||
given::has_all_valid_remote_defaults(&mut open_repository, &repo_details);
|
|
||||||
|
|
||||||
let mut repository_factory = MockRepositoryFactory::new();
|
|
||||||
expect::open_repository(&mut repository_factory, open_repository);
|
|
||||||
fs.dir_create(&repo_details.gitdir)?;
|
|
||||||
|
|
||||||
//when
|
|
||||||
let (addr, log) = when::start_actor(repository_factory, repo_details, given::a_forge());
|
|
||||||
addr.send(CloneRepo::new()).await?;
|
|
||||||
System::current().stop();
|
|
||||||
|
|
||||||
//then
|
|
||||||
log.require_message_containing("send: ValidateRepo")?;
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
/// The server config can optionally include the names of the main, next and dev
|
/// The server config can optionally include the names of the main, next and dev
|
||||||
/// branches. When it does we should register the webhook by sending [RegisterWebhook] message.
|
/// branches. When it does we should register the webhook by sending [RegisterWebhook] message.
|
||||||
#[actix::test]
|
#[actix::test]
|
||||||
|
@ -212,28 +186,3 @@ async fn opened_repo_with_no_default_fetch_should_not_proceed() -> TestResult {
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test_log::test(actix::test)]
|
|
||||||
async fn valid_repo_with_default_remotes_should_assess_branch_positions() -> TestResult {
|
|
||||||
//given
|
|
||||||
let fs = given::a_filesystem();
|
|
||||||
let (mut open_repository, repo_details) = given::an_open_repository(&fs);
|
|
||||||
|
|
||||||
given::has_all_valid_remote_defaults(&mut open_repository, &repo_details);
|
|
||||||
|
|
||||||
let mut repository_factory = MockRepositoryFactory::new();
|
|
||||||
expect::open_repository(&mut repository_factory, open_repository);
|
|
||||||
fs.dir_create(&repo_details.gitdir)?;
|
|
||||||
|
|
||||||
//when
|
|
||||||
let (addr, log) = when::start_actor(repository_factory, repo_details, given::a_forge());
|
|
||||||
addr.send(CloneRepo::new()).await?;
|
|
||||||
System::current().stop();
|
|
||||||
|
|
||||||
//then
|
|
||||||
log.read()
|
|
||||||
.map_err(|e| e.to_string())
|
|
||||||
.map(|l| assert!(l.iter().any(|l| l.contains("send: ValidateRepo"))))?;
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
|
@ -28,3 +28,29 @@ async fn should_store_webhook_details() -> TestResult {
|
||||||
assert_eq!(view.webhook_auth, Some(webhook_auth));
|
assert_eq!(view.webhook_auth, Some(webhook_auth));
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[actix::test]
|
||||||
|
async fn should_send_validate_repo_message() -> TestResult {
|
||||||
|
//given
|
||||||
|
let fs = given::a_filesystem();
|
||||||
|
let (open_repository, repo_details) = given::an_open_repository(&fs);
|
||||||
|
let webhook_id = given::a_webhook_id();
|
||||||
|
let webhook_auth = given::a_webhook_auth();
|
||||||
|
|
||||||
|
//when
|
||||||
|
let (addr, log) = when::start_actor_with_open_repository(
|
||||||
|
Box::new(open_repository),
|
||||||
|
repo_details,
|
||||||
|
given::a_forge(),
|
||||||
|
);
|
||||||
|
addr.send(actor::messages::WebhookRegistered::new((
|
||||||
|
webhook_id.clone(),
|
||||||
|
webhook_auth.clone(),
|
||||||
|
)))
|
||||||
|
.await?;
|
||||||
|
System::current().stop();
|
||||||
|
|
||||||
|
//then
|
||||||
|
log.require_message_containing("send: ValidateRepo")?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue