Boilerplate
This commit is contained in:
parent
316f5c0219
commit
7f39d8e8b7
3 changed files with 32 additions and 8 deletions
|
@ -19,7 +19,7 @@ pub use user::*;
|
||||||
|
|
||||||
use super::auth;
|
use super::auth;
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Debug, Clone, Default)]
|
||||||
pub struct Config {
|
pub struct Config {
|
||||||
pub reindex_every_n_seconds: Option<u64>,
|
pub reindex_every_n_seconds: Option<u64>,
|
||||||
pub album_art_pattern: Option<Regex>,
|
pub album_art_pattern: Option<Regex>,
|
||||||
|
@ -67,6 +67,18 @@ impl TryFrom<storage::Config> for Config {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<Config> for storage::Config {
|
||||||
|
fn from(c: Config) -> Self {
|
||||||
|
Self {
|
||||||
|
reindex_every_n_seconds: c.reindex_every_n_seconds,
|
||||||
|
album_art_pattern: c.album_art_pattern.map(|p| p.as_str().to_owned()),
|
||||||
|
mount_dirs: c.mount_dirs.into_iter().map(|d| d.into()).collect(),
|
||||||
|
ddns_url: c.ddns_url.map(|u| u.to_string()),
|
||||||
|
users: c.users.into_iter().map(|(_, u)| u.into()).collect(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Manager {
|
pub struct Manager {
|
||||||
config_file_path: PathBuf,
|
config_file_path: PathBuf,
|
||||||
|
@ -220,6 +232,7 @@ mod test {
|
||||||
users: vec![],
|
users: vec![],
|
||||||
};
|
};
|
||||||
ctx.config_manager.apply(new_config.clone()).await.unwrap();
|
ctx.config_manager.apply(new_config.clone()).await.unwrap();
|
||||||
assert_eq!(new_config, ctx.config_manager.config.read().await.clone(),);
|
let effective_config: Config = ctx.config_manager.config.read().await.clone().into();
|
||||||
|
assert_eq!(new_config, effective_config,);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,15 @@ impl TryFrom<storage::MountDir> for MountDir {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<MountDir> for storage::MountDir {
|
||||||
|
fn from(m: MountDir) -> Self {
|
||||||
|
Self {
|
||||||
|
source: m.source,
|
||||||
|
name: m.name,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Config {
|
impl Config {
|
||||||
pub fn set_mounts(&mut self, mount_dirs: Vec<storage::MountDir>) {
|
pub fn set_mounts(&mut self, mount_dirs: Vec<storage::MountDir>) {
|
||||||
self.mount_dirs = mount_dirs
|
self.mount_dirs = mount_dirs
|
||||||
|
|
|
@ -11,6 +11,12 @@ pub struct User {
|
||||||
pub hashed_password: String,
|
pub hashed_password: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl User {
|
||||||
|
pub fn is_admin(&self) -> bool {
|
||||||
|
self.admin == Some(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl TryFrom<storage::User> for User {
|
impl TryFrom<storage::User> for User {
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
|
|
||||||
|
@ -30,12 +36,6 @@ impl TryFrom<storage::User> for User {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl User {
|
|
||||||
pub fn is_admin(&self) -> bool {
|
|
||||||
self.admin == Some(true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<User> for storage::User {
|
impl From<User> for storage::User {
|
||||||
fn from(user: User) -> Self {
|
fn from(user: User) -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
@ -136,6 +136,7 @@ mod test {
|
||||||
const TEST_USERNAME: &str = "Walter";
|
const TEST_USERNAME: &str = "Walter";
|
||||||
const TEST_PASSWORD: &str = "super_secret!";
|
const TEST_PASSWORD: &str = "super_secret!";
|
||||||
|
|
||||||
|
#[test]
|
||||||
fn adds_password_hashes() {
|
fn adds_password_hashes() {
|
||||||
let user_in = storage::User {
|
let user_in = storage::User {
|
||||||
name: TEST_USERNAME.to_owned(),
|
name: TEST_USERNAME.to_owned(),
|
||||||
|
@ -152,6 +153,7 @@ mod test {
|
||||||
assert!(user_out.hashed_password.is_some());
|
assert!(user_out.hashed_password.is_some());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
fn preserves_password_hashes() {
|
fn preserves_password_hashes() {
|
||||||
let user_in = storage::User {
|
let user_in = storage::User {
|
||||||
name: TEST_USERNAME.to_owned(),
|
name: TEST_USERNAME.to_owned(),
|
||||||
|
|
Loading…
Add table
Reference in a new issue