Files
core/test/dever-tests/tests/authorization_runtime.rs
T

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();
}