summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2024-02-02 17:32:21 +0200
committerLars Wirzenius <liw@liw.fi>2024-02-02 17:39:46 +0200
commit13e2c2488e2ccbdcfefd46d76ad6fc42040184c1 (patch)
treed3935f9c925306c4dfe6966eaa59cf1421c62f0d
parentc468331c10aee5b848230c38799a88685bf1936d (diff)
downloadradicle-ci-broker-13e2c2488e2ccbdcfefd46d76ad6fc42040184c1.tar.gz
tests(src/msg.rs): use test helpers from test.rs
This simplifies the test code somewhat. Signed-off-by: Lars Wirzenius <liw@liw.fi>
-rw-r--r--src/msg.rs118
1 files changed, 54 insertions, 64 deletions
diff --git a/src/msg.rs b/src/msg.rs
index 071bc0a..df67cb8 100644
--- a/src/msg.rs
+++ b/src/msg.rs
@@ -593,45 +593,35 @@ pub enum MessageError {
}
#[cfg(test)]
-mod tests {
+pub mod tests {
use crate::event::BrokerEvent;
use crate::msg::Request;
- use radicle::crypto::ssh::Keystore;
- use radicle::crypto::test::signer::MockSigner;
- use radicle::crypto::Signer;
use radicle::git::raw::Oid;
use radicle::git::RefString;
use radicle::patch::{MergeTarget, Patches};
use radicle::prelude::Did;
- use radicle::profile::{Config, Home};
use radicle::storage::ReadRepository;
- use radicle::test::setup::Node;
- use radicle::Profile;
+
+ use crate::test::{MockNode, TestResult};
#[test]
- fn trigger_push() {
- let root = tempfile::tempdir().unwrap();
- let ms = MockSigner::default();
- let alias = "broker_test_alias";
- let node = Node::new(root, ms, alias);
- let prj = node.project();
- let repo_head = prj.repo.head().unwrap().1;
- let cmt =
- radicle::test::fixtures::commit("my test commit", &[repo_head.into()], &prj.backend);
- let profile = Profile {
- home: Home::new(node.root.clone()).unwrap(),
- storage: node.storage,
- keystore: Keystore::new(&node.root),
- public_key: node.signer.public_key().to_owned(),
- config: Config::new(alias.parse().unwrap()),
- };
+ fn trigger_push() -> TestResult<()> {
+ let mock_node = MockNode::new()?;
+ let profile = mock_node.profile()?;
+
+ let project = mock_node.node().project();
+ let (_, repo_head) = project.repo.head()?;
+ let cmt = radicle::test::fixtures::commit(
+ "my test commit",
+ &[repo_head.into()],
+ &project.backend,
+ );
let be = BrokerEvent::RefChanged {
- rid: prj.id,
+ rid: project.id,
name: RefString::try_from(
"refs/namespaces/$nid/refs/heads/master".replace("$nid", &profile.id().to_string()),
- )
- .unwrap(),
+ )?,
oid: cmt,
old: Some(repo_head),
};
@@ -642,73 +632,71 @@ mod tests {
push,
patch,
} = req;
+
assert!(patch.is_none());
assert!(push.is_some());
assert_eq!(common.event_type, "push");
- assert_eq!(common.repository.id, prj.id);
- assert_eq!(common.repository.name, prj.repo.project().unwrap().name());
+ assert_eq!(common.repository.id, project.id);
+ assert_eq!(common.repository.name, project.repo.project()?.name());
let push = push.unwrap();
assert_eq!(push.after, cmt);
assert_eq!(push.before, repo_head);
assert_eq!(push.commits, vec![cmt]);
assert_eq!(push.pusher.id, Did::from(profile.id()));
+
+ Ok(())
}
#[test]
- fn trigger_patch() {
- let root = tempfile::tempdir().unwrap();
- let alias = "broker_test_alias";
- let node = Node::new(root, MockSigner::default(), alias);
- let prj = node.project();
- let repo_head = prj.repo.head().unwrap().1;
- let cmt =
- radicle::test::fixtures::commit("my test commit", &[repo_head.into()], &prj.backend);
-
- let mut patches = Patches::open(&prj.repo).unwrap();
- let patch_cob = patches
- .create(
- "my patch title",
- "my patch description",
- MergeTarget::Delegates,
- repo_head,
- cmt,
- &[],
- &node.signer,
- )
- .unwrap();
-
- let profile = Profile {
- home: Home::new(node.root.clone()).unwrap(),
- storage: node.storage,
- keystore: Keystore::new(&node.root),
- public_key: node.signer.public_key().to_owned(),
- config: Config::new(alias.parse().unwrap()),
- };
+ fn trigger_patch() -> TestResult<()> {
+ let mock_node = MockNode::new()?;
+ let profile = mock_node.profile()?;
+
+ let project = mock_node.node().project();
+ let (_, repo_head) = project.repo.head()?;
+ let cmt = radicle::test::fixtures::commit(
+ "my test commit",
+ &[repo_head.into()],
+ &project.backend,
+ );
+
+ let node = mock_node.node();
+
+ let mut patches = Patches::open(&project.repo)?;
+ let patch_cob = patches.create(
+ "my patch title",
+ "my patch description",
+ MergeTarget::Delegates,
+ repo_head,
+ cmt,
+ &[],
+ &node.signer,
+ )?;
let be = BrokerEvent::RefChanged {
- rid: prj.id,
+ rid: project.id,
name: RefString::try_from(
"refs/namespaces/$nid/refs/cobs/xyz.radicle.patch/$patchId"
.replace("$nid", &profile.id().to_string())
.replace("$patchId", &patch_cob.id.to_string()),
- )
- .unwrap(),
- oid: radicle_git_ext::Oid::from(Oid::from_str(&patch_cob.id.to_string()).unwrap()),
+ )?,
+ oid: radicle_git_ext::Oid::from(Oid::from_str(&patch_cob.id.to_string())?),
old: None,
};
- let req = Request::trigger(&profile, &be).expect("expect request trigger");
+ let req = Request::trigger(&profile, &be)?;
let Request::Trigger {
common,
push,
patch,
} = req;
+
assert!(patch.is_some());
assert!(push.is_none());
assert_eq!(common.event_type, "patch");
- assert_eq!(common.repository.id, prj.id);
- assert_eq!(common.repository.name, prj.repo.project().unwrap().name());
+ assert_eq!(common.repository.id, project.id);
+ assert_eq!(common.repository.name, project.repo.project()?.name());
let patch = patch.unwrap();
assert_eq!(patch.action, "created");
@@ -727,5 +715,7 @@ mod tests {
assert_eq!(patch.patch.after, cmt);
assert_eq!(patch.patch.before, repo_head);
assert_eq!(patch.patch.commits, vec![cmt]);
+
+ Ok(())
}
}