fix: Add in the sub repos

This commit is contained in:
BluJ
2023-06-30 14:47:56 -06:00
committed by Aiden McClelland
parent 712fde46eb
commit 29b0850a94
7 changed files with 88 additions and 197 deletions

View File

@@ -324,11 +324,11 @@ async fn perform_backup<Db: DbHandle>(
.await
.with_kind(ErrorKind::Filesystem)?;
let luks_folder_old = backup_guard.as_ref().join("luks.old");
let luks_folder_old = backup_guard.lock().await.as_ref().join("luks.old");
if tokio::fs::metadata(&luks_folder_old).await.is_ok() {
tokio::fs::remove_dir_all(&luks_folder_old).await?;
}
let luks_folder_bak = backup_guard.as_ref().join("luks");
let luks_folder_bak = backup_guard.lock().await.as_ref().join("luks");
if tokio::fs::metadata(&luks_folder_bak).await.is_ok() {
tokio::fs::rename(&luks_folder_bak, &luks_folder_old).await?;
}

View File

@@ -344,14 +344,22 @@ fn configure(
.config_actions
.get(db, id)
.await?
.ok_or_else(not_found)?;
.ok_or_else(|| not_found!(&*id))?;
let dependencies = receipts
.dependencies
.get(db, id)
.await?
.ok_or_else(not_found)?;
let volumes = receipts.volumes.get(db, id).await?.ok_or_else(not_found)?;
let version = receipts.version.get(db, id).await?.ok_or_else(not_found)?;
.ok_or_else(|| not_found!(&*id))?;
let volumes = receipts
.volumes
.get(db, id)
.await?
.ok_or_else(|| not_found!(&*id))?;
let version = receipts
.version
.get(db, id)
.await?
.ok_or_else(|| not_found!(&*id))?;
// get current config and current spec
let ConfigRes {
@@ -370,7 +378,11 @@ fn configure(
)?
};
let manifest = receipts.manifest.get(db, id).await?.ok_or_else(not_found)?;
let manifest = receipts
.manifest
.get(db, id)
.await?
.ok_or_else(|| not_found!(&*id))?;
spec.validate(&manifest)?;
spec.matches(&config)?; // check that new config matches spec
@@ -389,7 +401,7 @@ fn configure(
.system_pointers
.get(db, id)
.await?
.ok_or_else(not_found)?;
.ok_or_else(|| not_found!(&*id))?;
sys.truncate(0);
let mut current_dependencies: CurrentDependencies = CurrentDependencies(
dependencies
@@ -498,7 +510,7 @@ fn configure(
.dependency_errors
.get(db, &id)
.await?
.ok_or_else(not_found)?;
.ok_or_else(|| not_found!(&*id))?;
tracing::warn!("Dependency Errors: {:?}", errs);
let errs = DependencyErrors::init(
ctx,
@@ -520,7 +532,7 @@ fn configure(
.current_dependents
.get(db, id)
.await?
.ok_or_else(not_found)?;
.ok_or_else(|| not_found!(&*id))?;
for (dependent, _dep_info) in dependents.0.iter().filter(|(dep_id, _)| dep_id != &id) {
let dependent_container = receipts.docker_containers.get(db, dependent).await?;
let dependent_container = &dependent_container;
@@ -534,7 +546,7 @@ fn configure(
.manifest
.get(db, dependent)
.await?
.ok_or_else(not_found)?;
.ok_or_else(|| not_found!(&*id))?;
if let Err(error) = cfg
.check(
ctx,

View File

@@ -557,7 +557,7 @@ mod tests {
.unwrap()
.canonicalize()
.unwrap();
let package_id = "test-package".parse().unwrap();
let package_id = "test-package".parse::<PackageId>().unwrap();
let package_version: Version = "0.3.0.3".parse().unwrap();
let name = ProcedureName::Action("test-rename".parse().unwrap());
let volumes: Volumes = serde_json::from_value(json!({
@@ -608,7 +608,7 @@ mod tests {
timeout,
ProcessGroupId(0),
None,
None,
Arc::new(OsApiMock::default()),
)
.await
.unwrap()
@@ -654,7 +654,7 @@ mod tests {
timeout,
ProcessGroupId(0),
None,
None,
Arc::new(OsApiMock::default()),
)
.await
.unwrap()
@@ -700,7 +700,7 @@ mod tests {
timeout,
ProcessGroupId(0),
None,
None,
Arc::new(OsApiMock::default()),
)
.await
.unwrap()
@@ -746,7 +746,7 @@ mod tests {
timeout,
ProcessGroupId(0),
None,
None,
Arc::new(OsApiMock::default()),
)
.await
.unwrap()
@@ -800,52 +800,6 @@ mod tests {
.unwrap();
}
#[tokio::test]
async fn js_action_test_deep_dir_escape() {
let js_action = JsProcedure { args: vec![] };
let path: PathBuf = "test/js_action_execute/"
.parse::<PathBuf>()
.unwrap()
.canonicalize()
.unwrap();
let package_id = "test-package".parse().unwrap();
let package_version: Version = "0.3.0.3".parse().unwrap();
let name = ProcedureName::Action("test-deep-dir-escape".parse().unwrap());
let volumes: Volumes = serde_json::from_value(json!({
"main": {
"type": "data"
},
"compat": {
"type": "assets"
},
"filebrowser" :{
"package-id": "filebrowser",
"path": "data",
"readonly": true,
"type": "pointer",
"volume-id": "main",
}
}))
.unwrap();
let input: Option<serde_json::Value> = None;
let timeout = Some(Duration::from_secs(10));
js_action
.execute::<serde_json::Value, serde_json::Value>(
&path,
&package_id,
&package_version,
name,
&volumes,
input,
timeout,
ProcessGroupId(0),
None,
Arc::new(OsApiMock::default()),
)
.await
.unwrap()
.unwrap();
}
#[tokio::test]
async fn js_permissions_and_own() {
let js_action = JsProcedure { args: vec![] };
let path: PathBuf = "test/js_action_execute/"
@@ -891,52 +845,6 @@ mod tests {
.unwrap()
.unwrap();
}
#[tokio::test]
async fn js_action_test_zero_dir() {
let js_action = JsProcedure { args: vec![] };
let path: PathBuf = "test/js_action_execute/"
.parse::<PathBuf>()
.unwrap()
.canonicalize()
.unwrap();
let package_id = "test-package".parse().unwrap();
let package_version: Version = "0.3.0.3".parse().unwrap();
let name = ProcedureName::Action("test-zero-dir".parse().unwrap());
let volumes: Volumes = serde_json::from_value(json!({
"main": {
"type": "data"
},
"compat": {
"type": "assets"
},
"filebrowser" :{
"package-id": "filebrowser",
"path": "data",
"readonly": true,
"type": "pointer",
"volume-id": "main",
}
}))
.unwrap();
let input: Option<serde_json::Value> = None;
let timeout = Some(Duration::from_secs(10));
js_action
.execute::<serde_json::Value, serde_json::Value>(
&path,
&package_id,
&package_version,
name,
&volumes,
input,
timeout,
ProcessGroupId(0),
None,
Arc::new(OsApiMock::default()),
)
.await
.unwrap()
.unwrap();
}
#[tokio::test]
async fn js_rsync() {
@@ -1048,50 +956,51 @@ mod tests {
.unwrap();
spawned.await.unwrap();
}
}
#[tokio::test]
async fn js_disk_usage() {
let js_action = JsProcedure { args: vec![] };
let path: PathBuf = "test/js_action_execute/"
.parse::<PathBuf>()
.unwrap()
.canonicalize()
#[tokio::test]
async fn js_disk_usage() {
let js_action = JsProcedure { args: vec![] };
let path: PathBuf = "test/js_action_execute/"
.parse::<PathBuf>()
.unwrap()
.canonicalize()
.unwrap();
let package_id = "test-package".parse().unwrap();
let package_version: Version = "0.3.0.3".parse().unwrap();
let name = ProcedureName::Action("test-disk-usage".parse().unwrap());
let volumes: Volumes = serde_json::from_value(serde_json::json!({
"main": {
"type": "data"
},
"compat": {
"type": "assets"
},
"filebrowser" :{
"package-id": "filebrowser",
"path": "data",
"readonly": true,
"type": "pointer",
"volume-id": "main",
}
}))
.unwrap();
let package_id = "test-package".parse().unwrap();
let package_version: Version = "0.3.0.3".parse().unwrap();
let name = ProcedureName::Action("test-disk-usage".parse().unwrap());
let volumes: Volumes = serde_json::from_value(serde_json::json!({
"main": {
"type": "data"
},
"compat": {
"type": "assets"
},
"filebrowser" :{
"package-id": "filebrowser",
"path": "data",
"readonly": true,
"type": "pointer",
"volume-id": "main",
}
}))
.unwrap();
let input: Option<serde_json::Value> = None;
let timeout = Some(Duration::from_secs(10));
dbg!(js_action
.execute::<serde_json::Value, serde_json::Value>(
&path,
&package_id,
&package_version,
name,
&volumes,
input,
timeout,
ProcessGroupId(0),
None,
)
.await
.unwrap()
.unwrap());
let input: Option<serde_json::Value> = None;
let timeout = Some(Duration::from_secs(10));
dbg!(js_action
.execute::<serde_json::Value, serde_json::Value>(
&path,
&package_id,
&package_version,
name,
&volumes,
input,
timeout,
ProcessGroupId(0),
None,
Arc::new(OsApiMock::default()),
)
.await
.unwrap()
.unwrap());
}
}

View File

@@ -247,22 +247,18 @@ mod tests {
fn versions() -> impl Strategy<Value = Version> {
prop_oneof![
<<<<<<< HEAD
Just(Version::V0_3_4_3(Wrapper(v0_3_4_3::Version::new()))),
=======
em_version().prop_map(|v| if v < v0_3_4_1::Version::new().semver() {
Version::LT0_3_4_1(LTWrapper(v0_3_4_1::Version::new(), v))
} else {
Version::LT0_3_4_1(LTWrapper(
v0_3_4_1::Version::new(),
emver::Version::new(0, 3, 0, 0),
))
}),
Just(Version::V0_3_4_1(Wrapper(v0_3_4_1::Version::new()))),
Just(Version::V0_3_4_2(Wrapper(v0_3_4_2::Version::new()))),
>>>>>>> e83250f1 (integration/refactors)
em_version().prop_map(Version::Other),
]
em_version().prop_map(|v| if v < v0_3_4_3::Version::new().semver() {
Version::LT0_3_4_3(LTWrapper(v0_3_4_3::Version::new(), v))
} else {
Version::LT0_3_4_3(LTWrapper(
v0_3_4_3::Version::new(),
emver::Version::new(0, 3, 0, 0),
))
}),
Just(Version::V0_3_4_3(Wrapper(v0_3_4_3::Version::new()))),
Just(Version::V0_4_0(Wrapper(v0_4_0::Version::new()))),
em_version().prop_map(Version::Other),
]
}
proptest! {

View File

@@ -1,5 +1,6 @@
use async_trait::async_trait;
use emver::VersionRange;
use lazy_static::lazy_static;
use super::*;
@@ -19,7 +20,7 @@ pub struct Version;
#[async_trait]
impl VersionT for Version {
type Previous = v0_3_4_2::Version;
type Previous = Self;
fn new() -> Self {
Version
}
@@ -30,12 +31,6 @@ impl VersionT for Version {
&*V0_3_0_COMPAT
}
async fn up<Db: DbHandle>(&self, db: &mut Db, _secrets: &PgPool) -> Result<(), Error> {
crate::db::DatabaseModel::new()
.server_info()
.get_mut(db)
.await?
.save(db)
.await?;
Ok(())
}
async fn down<Db: DbHandle>(&self, _db: &mut Db, _secrets: &PgPool) -> Result<(), Error> {

View File

@@ -17,7 +17,7 @@ pub struct Version;
#[async_trait]
impl VersionT for Version {
type Previous = v0_3_4::Version;
type Previous = v0_3_4_3::Version;
fn new() -> Self {
Version
}

View File

@@ -212,24 +212,3 @@ impl RpcMethod for SignalGroup {
"signal-group"
}
}
#[test]
fn example_echo_line() {
let input = r#"{"id":0,"jsonrpc":"2.0","method":"command","params":{"command":"echo","args":["world I am here"]}}"#;
let new_input = JsonRpc::<Input>::maybe_parse(input);
assert!(new_input.is_some());
assert_eq!(input, &serde_json::to_string(&new_input.unwrap()).unwrap());
}
#[test]
fn example_input_line() {
let output = JsonRpc::new(RpcId::UInt(0), Output::Line("world I am here".to_string()));
let output_str = output.maybe_serialize();
assert!(output_str.is_some());
let output_str = output_str.unwrap();
assert_eq!(
&output_str,
r#"{"id":0,"jsonrpc":"2.0","method":"line","params":"world I am here"}"#
);
assert_eq!(output, serde_json::from_str(&output_str).unwrap());
}