forked from kemitix/git-next
refactor(server/config): move tests into their own file
This commit is contained in:
parent
18143c17fd
commit
e10561f853
2 changed files with 135 additions and 138 deletions
|
@ -392,142 +392,5 @@ impl Display for ForgeType {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "forgejo")]
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests;
|
||||||
|
|
||||||
use pretty_assertions::assert_eq;
|
|
||||||
|
|
||||||
use crate::filesystem::FileSystem;
|
|
||||||
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn load_should_parse_server_config() -> Result<(), OneOf<(std::io::Error, toml::de::Error)>> {
|
|
||||||
let fs = FileSystem::new_temp().map_err(OneOf::new)?;
|
|
||||||
fs.write_file(
|
|
||||||
"git-next-server.toml",
|
|
||||||
r#"
|
|
||||||
[webhook]
|
|
||||||
url = "http://localhost:9909/webhook"
|
|
||||||
|
|
||||||
[storage]
|
|
||||||
path = "/opt/git-next/data"
|
|
||||||
|
|
||||||
[forge.default]
|
|
||||||
forge_type = "MockForge"
|
|
||||||
hostname = "git.example.net"
|
|
||||||
user = "Bob"
|
|
||||||
token = "API-Token"
|
|
||||||
|
|
||||||
[forge.default.repos]
|
|
||||||
hello = { repo = "user/hello", branch = "main", gitdir = "/opt/git/user/hello.git" }
|
|
||||||
world = { repo = "user/world", branch = "master", main = "main", next = "next", dev = "dev" }
|
|
||||||
|
|
||||||
[forge.default.repos.sam]
|
|
||||||
repo = "user/sam"
|
|
||||||
branch = "main"
|
|
||||||
main = "master"
|
|
||||||
next = "upcoming"
|
|
||||||
dev = "sam-dev"
|
|
||||||
"#,
|
|
||||||
)
|
|
||||||
.map_err(OneOf::new)?;
|
|
||||||
let config = ServerConfig::load(&fs)?;
|
|
||||||
let expected = ServerConfig {
|
|
||||||
webhook: Webhook {
|
|
||||||
url: "http://localhost:9909/webhook".to_string(),
|
|
||||||
},
|
|
||||||
storage: ServerStorage {
|
|
||||||
path: "/opt/git-next/data".into(),
|
|
||||||
},
|
|
||||||
forge: HashMap::from([(
|
|
||||||
"default".to_string(),
|
|
||||||
ForgeConfig {
|
|
||||||
forge_type: ForgeType::MockForge,
|
|
||||||
hostname: "git.example.net".to_string(),
|
|
||||||
user: "Bob".to_string(),
|
|
||||||
token: "API-Token".to_string(),
|
|
||||||
repos: HashMap::from([
|
|
||||||
(
|
|
||||||
"hello".to_string(),
|
|
||||||
ServerRepoConfig {
|
|
||||||
repo: "user/hello".to_string(),
|
|
||||||
branch: "main".to_string(),
|
|
||||||
gitdir: Some("/opt/git/user/hello.git".into()),
|
|
||||||
main: None,
|
|
||||||
next: None,
|
|
||||||
dev: None,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"world".to_string(),
|
|
||||||
ServerRepoConfig {
|
|
||||||
repo: "user/world".to_string(),
|
|
||||||
branch: "master".to_string(),
|
|
||||||
gitdir: None,
|
|
||||||
main: Some("main".to_string()),
|
|
||||||
next: Some("next".to_string()),
|
|
||||||
dev: Some("dev".to_string()),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"sam".to_string(),
|
|
||||||
ServerRepoConfig {
|
|
||||||
repo: "user/sam".to_string(),
|
|
||||||
branch: "main".to_string(),
|
|
||||||
gitdir: None,
|
|
||||||
main: Some("master".to_string()),
|
|
||||||
next: Some("upcoming".to_string()),
|
|
||||||
dev: Some("sam-dev".to_string()),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]),
|
|
||||||
},
|
|
||||||
)]),
|
|
||||||
};
|
|
||||||
assert_eq!(config, expected, "ServerConfig");
|
|
||||||
|
|
||||||
if let Some(forge) = config.forge.get("world") {
|
|
||||||
if let Some(repo) = forge.repos.get("sam") {
|
|
||||||
let repo_config = repo.repo_config();
|
|
||||||
let expected = Some(RepoConfig {
|
|
||||||
branches: RepoBranches {
|
|
||||||
main: "master".to_string(),
|
|
||||||
next: "upcoming".to_string(),
|
|
||||||
dev: "sam-dev".to_string(),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
assert_eq!(repo_config, expected, "RepoConfig");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_repo_config_load() -> Result<(), OneOf<(toml::de::Error,)>> {
|
|
||||||
let toml = r#"
|
|
||||||
[branches]
|
|
||||||
main = "main"
|
|
||||||
next = "next"
|
|
||||||
dev = "dev"
|
|
||||||
|
|
||||||
[options]
|
|
||||||
"#;
|
|
||||||
let config = RepoConfig::load(toml)?;
|
|
||||||
|
|
||||||
assert_eq!(
|
|
||||||
config,
|
|
||||||
RepoConfig {
|
|
||||||
branches: RepoBranches {
|
|
||||||
main: "main".to_string(),
|
|
||||||
next: "next".to_string(),
|
|
||||||
dev: "dev".to_string(),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
134
src/server/config/tests.rs
Normal file
134
src/server/config/tests.rs
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
|
use crate::filesystem::FileSystem;
|
||||||
|
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn load_should_parse_server_config() -> Result<(), OneOf<(std::io::Error, toml::de::Error)>> {
|
||||||
|
let fs = FileSystem::new_temp().map_err(OneOf::new)?;
|
||||||
|
fs.write_file(
|
||||||
|
"git-next-server.toml",
|
||||||
|
r#"
|
||||||
|
[webhook]
|
||||||
|
url = "http://localhost:9909/webhook"
|
||||||
|
|
||||||
|
[storage]
|
||||||
|
path = "/opt/git-next/data"
|
||||||
|
|
||||||
|
[forge.default]
|
||||||
|
forge_type = "MockForge"
|
||||||
|
hostname = "git.example.net"
|
||||||
|
user = "Bob"
|
||||||
|
token = "API-Token"
|
||||||
|
|
||||||
|
[forge.default.repos]
|
||||||
|
hello = { repo = "user/hello", branch = "main", gitdir = "/opt/git/user/hello.git" }
|
||||||
|
world = { repo = "user/world", branch = "master", main = "main", next = "next", dev = "dev" }
|
||||||
|
|
||||||
|
[forge.default.repos.sam]
|
||||||
|
repo = "user/sam"
|
||||||
|
branch = "main"
|
||||||
|
main = "master"
|
||||||
|
next = "upcoming"
|
||||||
|
dev = "sam-dev"
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.map_err(OneOf::new)?;
|
||||||
|
let config = ServerConfig::load(&fs)?;
|
||||||
|
let expected = ServerConfig {
|
||||||
|
webhook: Webhook {
|
||||||
|
url: "http://localhost:9909/webhook".to_string(),
|
||||||
|
},
|
||||||
|
storage: ServerStorage {
|
||||||
|
path: "/opt/git-next/data".into(),
|
||||||
|
},
|
||||||
|
forge: HashMap::from([(
|
||||||
|
"default".to_string(),
|
||||||
|
ForgeConfig {
|
||||||
|
forge_type: ForgeType::MockForge,
|
||||||
|
hostname: "git.example.net".to_string(),
|
||||||
|
user: "Bob".to_string(),
|
||||||
|
token: "API-Token".to_string(),
|
||||||
|
repos: HashMap::from([
|
||||||
|
(
|
||||||
|
"hello".to_string(),
|
||||||
|
ServerRepoConfig {
|
||||||
|
repo: "user/hello".to_string(),
|
||||||
|
branch: "main".to_string(),
|
||||||
|
gitdir: Some("/opt/git/user/hello.git".into()),
|
||||||
|
main: None,
|
||||||
|
next: None,
|
||||||
|
dev: None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"world".to_string(),
|
||||||
|
ServerRepoConfig {
|
||||||
|
repo: "user/world".to_string(),
|
||||||
|
branch: "master".to_string(),
|
||||||
|
gitdir: None,
|
||||||
|
main: Some("main".to_string()),
|
||||||
|
next: Some("next".to_string()),
|
||||||
|
dev: Some("dev".to_string()),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"sam".to_string(),
|
||||||
|
ServerRepoConfig {
|
||||||
|
repo: "user/sam".to_string(),
|
||||||
|
branch: "main".to_string(),
|
||||||
|
gitdir: None,
|
||||||
|
main: Some("master".to_string()),
|
||||||
|
next: Some("upcoming".to_string()),
|
||||||
|
dev: Some("sam-dev".to_string()),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
)]),
|
||||||
|
};
|
||||||
|
assert_eq!(config, expected, "ServerConfig");
|
||||||
|
|
||||||
|
if let Some(forge) = config.forge.get("world") {
|
||||||
|
if let Some(repo) = forge.repos.get("sam") {
|
||||||
|
let repo_config = repo.repo_config();
|
||||||
|
let expected = Some(RepoConfig {
|
||||||
|
branches: RepoBranches {
|
||||||
|
main: "master".to_string(),
|
||||||
|
next: "upcoming".to_string(),
|
||||||
|
dev: "sam-dev".to_string(),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
assert_eq!(repo_config, expected, "RepoConfig");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_repo_config_load() -> Result<(), OneOf<(toml::de::Error,)>> {
|
||||||
|
let toml = r#"
|
||||||
|
[branches]
|
||||||
|
main = "main"
|
||||||
|
next = "next"
|
||||||
|
dev = "dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
"#;
|
||||||
|
let config = RepoConfig::load(toml)?;
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
config,
|
||||||
|
RepoConfig {
|
||||||
|
branches: RepoBranches {
|
||||||
|
main: "main".to_string(),
|
||||||
|
next: "next".to_string(),
|
||||||
|
dev: "dev".to_string(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
Loading…
Reference in a new issue