diff --git a/forge/forgeflux/src/lib.rs b/forge/forgeflux/src/lib.rs index 1bd7097..316abe9 100644 --- a/forge/forgeflux/src/lib.rs +++ b/forge/forgeflux/src/lib.rs @@ -60,7 +60,16 @@ impl PartialEq for ForgeFlux { #[async_trait] impl SCForge for ForgeFlux { async fn is_forge(&self) -> bool { - true + let u = self.instance_url.clone(); + let mut node_info_url = self.instance_url.clone(); + node_info_url.set_path(FORGEFLUX_NODEINFO); + let resp = self.client.get(node_info_url).send().await.unwrap(); + if resp.status() == 200 { + let res: schema::Nodeinfo = resp.json().await.unwrap(); + return res.software.name == FORGEFLUX_IDENTIFIER; + } else { + false + } } fn get_url(&self) -> &Url { @@ -81,9 +90,9 @@ impl SCForge for ForgeFlux { } } - let mut tags = Tags::default(); + let tags = Tags::default(); let mut users = UserMap::default(); - let mut internal_users = UserMap::default(); + let internal_users = UserMap::default(); let mut repos = Repositories::default(); let instance_url = self.instance_url.clone(); diff --git a/forge/forgeflux/src/schema.rs b/forge/forgeflux/src/schema.rs index 1f47a7f..a0aeceb 100644 --- a/forge/forgeflux/src/schema.rs +++ b/forge/forgeflux/src/schema.rs @@ -46,6 +46,16 @@ pub struct Repository { pub summary: String, } +#[derive(Debug, Clone, PartialEq, Hash, Eq, Serialize, Deserialize)] +pub struct Software { + pub name: String, +} + +#[derive(Debug, Clone, PartialEq, Hash, Eq, Serialize, Deserialize)] +pub struct Nodeinfo { + pub software: Software, +} + #[cfg(test)] mod tests { use super::*; diff --git a/src/pages/auth/add.rs b/src/pages/auth/add.rs index 8c93d7a..6917e38 100644 --- a/src/pages/auth/add.rs +++ b/src/pages/auth/add.rs @@ -105,7 +105,7 @@ mod tests { use crate::errors::ServiceError; use crate::pages::auth::add::{AddChallenge, AddChallengePayload, ReadableError}; use crate::pages::errors::*; - use crate::settings::Settings; + #[actix_rt::test] async fn add_page_works() { diff --git a/src/pages/routes.rs b/src/pages/routes.rs index 6123f65..8fa4e95 100644 --- a/src/pages/routes.rs +++ b/src/pages/routes.rs @@ -63,6 +63,12 @@ pub struct Auth { pub verify: &'static str, } +impl Default for Auth { + fn default() -> Self { + Self::new() + } +} + impl Auth { /// create new instance of Authentication route pub const fn new() -> Auth { diff --git a/src/settings.rs b/src/settings.rs index 6573092..ba07200 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -318,60 +318,6 @@ fn set_separator_field(mut s: ConfigBuilder) -> ConfigBuilder = - Box::new(Gitea::new(instance_url.clone(), self.client.clone())); + Box::new(ForgeFlux::new(instance_url.clone(), self.client.clone())); let forge = if forge.is_forge().await { forge } else { - let forgeflux = Box::new(ForgeFlux::new(instance_url.clone(), self.client.clone())); - if forgeflux.is_forge().await { - forgeflux + let gitea = Box::new(Gitea::new(instance_url.clone(), self.client.clone())); + if gitea.is_forge().await { + gitea } else { unimplemented!("Forge type unimplemented"); } diff --git a/src/tests.rs b/src/tests.rs index cbf6bce..ab0e090 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -17,7 +17,6 @@ */ use std::env; -pub use std::sync::Arc; use crate::ctx::Ctx; pub use crate::db::BoxDB; @@ -58,6 +57,10 @@ pub mod sqlx_sqlite { env::set_var("DATABASE_URL", &url); println!("found db url: {url}"); let tmp_dir = Temp::new_dir().unwrap(); + let d = tmp_dir.as_path(); + let _ = std::fs::remove_dir_all(d); + let _ = std::fs::create_dir(d); + env::set_var("STARCHART__REPOSITORY__ROOT", tmp_dir.to_str().unwrap()); let mut settings = Settings::new().unwrap();