53 lines
1.7 KiB
Rust
53 lines
1.7 KiB
Rust
mod support;
|
|
|
|
#[cfg(feature = "sqlite")]
|
|
#[test]
|
|
fn sqlite_authorization_uses_exact_site_scoped_role_permissions() {
|
|
use dever_runtime::{config, database};
|
|
|
|
let executable = std::env::current_exe().unwrap();
|
|
if executable.file_stem().unwrap() != "authorization-runtime-case" {
|
|
let project = support::temp::TemporaryDirectory::new();
|
|
std::fs::create_dir(project.path().join("config")).unwrap();
|
|
std::fs::write(
|
|
project.path().join("config/setting.json"),
|
|
r#"{"database":{"default":{"type":"sqlite","path":"data/db/auth.db","max_connections":2}}}"#,
|
|
)
|
|
.unwrap();
|
|
let child = project.path().join("authorization-runtime-case");
|
|
std::fs::copy(executable, &child).unwrap();
|
|
let output = std::process::Command::new(child)
|
|
.args([
|
|
"--exact",
|
|
"sqlite_authorization_uses_exact_site_scoped_role_permissions",
|
|
"--nocapture",
|
|
])
|
|
.output()
|
|
.unwrap();
|
|
assert!(
|
|
output.status.success(),
|
|
"{}\n{}",
|
|
String::from_utf8_lossy(&output.stdout),
|
|
String::from_utf8_lossy(&output.stderr),
|
|
);
|
|
return;
|
|
}
|
|
|
|
config::bootstrap(
|
|
config::RuntimeProfile {
|
|
sqlite: true,
|
|
postgres: false,
|
|
},
|
|
&[(Some("default"), "auth")],
|
|
&[],
|
|
)
|
|
.unwrap();
|
|
dever_runtime::task::run_entry(async {
|
|
let catalog = database::database_for(Some("default"), "auth").unwrap();
|
|
support::authorization::assert_contract(catalog.clone(), catalog).await;
|
|
database::shutdown().await.unwrap();
|
|
Ok(())
|
|
})
|
|
.unwrap();
|
|
}
|