2016-10-01 15:35:06 +00:00
|
|
|
//
|
|
|
|
// imag - the personal information management suite for the commandline
|
2019-01-03 01:32:07 +00:00
|
|
|
// Copyright (C) 2015-2019 Matthias Beyer <mail@beyermatthias.de> and contributors
|
2016-10-01 15:35:06 +00:00
|
|
|
//
|
|
|
|
// This library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; version
|
|
|
|
// 2.1 of the License.
|
|
|
|
//
|
|
|
|
// This library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with this library; if not, write to the Free Software
|
|
|
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
//
|
|
|
|
|
2016-03-05 10:37:23 +00:00
|
|
|
use toml::Value;
|
2016-03-05 10:37:06 +00:00
|
|
|
|
2018-10-30 17:40:50 +00:00
|
|
|
use failure::Fallible as Result;
|
|
|
|
use failure::ResultExt;
|
|
|
|
use failure::Error;
|
|
|
|
|
|
|
|
use libimagerror::errors::ErrorMsg as EM;
|
2016-09-19 19:00:45 +00:00
|
|
|
|
2016-07-16 20:36:36 +00:00
|
|
|
/// Checks whether the store configuration has a key "implicit-create" which maps to a boolean
|
|
|
|
/// value. If that key is present, the boolean is returned, otherwise false is returned.
|
2017-12-22 10:24:04 +00:00
|
|
|
pub fn config_implicit_store_create_allowed(config: &Option<Value>) -> Result<bool> {
|
2018-01-12 15:31:13 +00:00
|
|
|
use toml_query::read::TomlValueReadTypeExt;
|
2017-12-22 10:49:20 +00:00
|
|
|
|
2017-12-22 10:24:04 +00:00
|
|
|
let key = "store.implicit-create";
|
2017-12-22 10:20:53 +00:00
|
|
|
|
2017-12-22 10:24:04 +00:00
|
|
|
if let Some(ref t) = *config {
|
2018-10-30 17:40:50 +00:00
|
|
|
t.read_bool(key)
|
|
|
|
.map_err(Error::from)
|
|
|
|
.context(EM::TomlQueryError)?
|
|
|
|
.ok_or_else(|| format_err!("Config key missing: {}", key))
|
2017-12-22 10:20:53 +00:00
|
|
|
} else {
|
|
|
|
Ok(false)
|
|
|
|
}
|
2016-07-16 20:36:36 +00:00
|
|
|
}
|
|
|
|
|
2017-05-03 15:33:52 +00:00
|
|
|
#[cfg(test)]
|
|
|
|
mod tests {
|
|
|
|
use toml::de::from_str as toml_from_str;
|
|
|
|
use configuration::*;
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_implicit_store_create_allowed_no_toml() {
|
2017-12-22 10:24:04 +00:00
|
|
|
assert!(!config_implicit_store_create_allowed(&None).unwrap());
|
2017-05-03 15:33:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_implicit_store_create_allowed_toml_empty() {
|
|
|
|
let config = toml_from_str("").unwrap();
|
2017-12-22 10:24:04 +00:00
|
|
|
assert!(config_implicit_store_create_allowed(&Some(config)).is_err());
|
2017-05-03 15:33:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_implicit_store_create_allowed_toml_false() {
|
|
|
|
let config = toml_from_str(r#"
|
2017-12-22 10:24:04 +00:00
|
|
|
[store]
|
2017-05-03 15:33:52 +00:00
|
|
|
implicit-create = false
|
|
|
|
"#).unwrap();
|
|
|
|
|
2017-12-22 10:24:04 +00:00
|
|
|
assert!(!config_implicit_store_create_allowed(&Some(config)).unwrap());
|
2017-05-03 15:33:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_implicit_store_create_allowed_toml_true() {
|
|
|
|
let config = toml_from_str(r#"
|
2017-12-22 10:24:04 +00:00
|
|
|
[store]
|
2017-05-03 15:33:52 +00:00
|
|
|
implicit-create = true
|
|
|
|
"#).unwrap();
|
|
|
|
|
2017-12-22 10:24:04 +00:00
|
|
|
assert!(config_implicit_store_create_allowed(&Some(config)).unwrap());
|
2017-05-03 15:33:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2016-03-05 15:05:31 +00:00
|
|
|
|