diff --git a/src/api.rs b/src/api.rs index d66ff7a..1a0dc79 100644 --- a/src/api.rs +++ b/src/api.rs @@ -160,9 +160,9 @@ fn version() -> Json { Json(current_version) } -#[derive(Serialize)] -struct InitialSetup { - has_any_users: bool, +#[derive(PartialEq, Debug, Serialize, Deserialize)] +pub struct InitialSetup { + pub has_any_users: bool, } #[get("/initial_setup")] diff --git a/src/api_tests.rs b/src/api_tests.rs index 7959770..2bc19d0 100644 --- a/src/api_tests.rs +++ b/src/api_tests.rs @@ -40,6 +40,16 @@ fn get_test_environment(db_name: &str) -> TestEnvironment TestEnvironment { client, command_sender } } +fn complete_initial_setup(client: &Client) { + client.get("/api/initial_setup").dispatch(); + client.put("/api/settings") + .body(r#" + { "users": [{ "name": "test_user", "password": "test_password", "admin": true }] + , "mount_dirs": [{ "name": "collection", "source": "test/collection" }] + }"#) + .dispatch(); +} + #[test] fn version() { let env = get_test_environment("api_version.sqlite"); @@ -52,3 +62,27 @@ fn version() { let response_json: api::Version = serde_json::from_str(&response_body).unwrap(); assert_eq!(response_json, api::Version{major: 3, minor: 0}); } + +#[test] +fn initial_setup() { + let env = get_test_environment("api_initial_setup.sqlite"); + let client = &env.client; + + { + let mut response = client.get("/api/initial_setup").dispatch(); + assert_eq!(response.status(), Status::Ok); + let response_body = response.body_string().unwrap(); + let response_json: api::InitialSetup = serde_json::from_str(&response_body).unwrap(); + assert_eq!(response_json, api::InitialSetup{has_any_users: false}); + } + + complete_initial_setup(client); + + { + let mut response = client.get("/api/initial_setup").dispatch(); + assert_eq!(response.status(), Status::Ok); + let response_body = response.body_string().unwrap(); + let response_json: api::InitialSetup = serde_json::from_str(&response_body).unwrap(); + assert_eq!(response_json, api::InitialSetup{has_any_users: true}); + } +}