Radish alpha
r
Radicle CI broker
Radicle
Git (anonymous pull)
Log in to clone via SSH
tests(src/msg.rs): use test helpers from test.rs
Lars Wirzenius committed 2 years ago
commit 13e2c2488e2ccbdcfefd46d76ad6fc42040184c1
parent c468331c10aee5b848230c38799a88685bf1936d
1 file changed +54 -64
modified 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(())
    }
}