aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/tests/util/forgejo_url_test.rs
blob: 3cdaac87e0361171e7d8ad81e59b05b6c0f1d064 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//! ref: composer/tests/Composer/Test/Util/ForgejoUrlTest.php

use shirabe::util::forgejo_url::ForgejoUrl;

#[test]
fn test_create() {
    for repo_url in create_provider() {
        let forgejo_url = ForgejoUrl::try_from(Some(repo_url));

        assert!(forgejo_url.is_some());
        let forgejo_url = forgejo_url.unwrap();
        assert_eq!("codeberg.org", forgejo_url.origin_url);
        assert_eq!("acme", forgejo_url.owner);
        assert_eq!("repo", forgejo_url.repository);
        assert_eq!(
            "https://codeberg.org/api/v1/repos/acme/repo",
            forgejo_url.api_url
        );
    }
}

fn create_provider() -> Vec<&'static str> {
    vec![
        "git@codeberg.org:acme/repo.git",
        "https://codeberg.org/acme/repo",
        "https://codeberg.org/acme/repo.git",
    ]
}

#[test]
fn test_create_invalid() {
    assert!(ForgejoUrl::create("https://example.org").is_err());
}

#[test]
fn test_generate_ssh_url() {
    let forgejo_url = ForgejoUrl::create("git@codeberg.org:acme/repo.git").unwrap();

    assert_eq!(
        "git@codeberg.org:acme/repo.git",
        forgejo_url.generate_ssh_url()
    );
}