| |
}
|
| |
|
| |
#[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),
|
| |
};
|
| |
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");
|