#[cfg(feature = "blocking-network-client")]mod blocking_io { mod protocol_allow { use git_features::progress; use git_repository as git; use git_repository::remote::Direction::Fetch; use serial_test::serial; use crate::remote; #[test] fn deny() { for name in ["protocol_denied", "protocol_file_denied"] { let repo = remote::repo(name); let remote = repo.find_remote("origin").unwrap(); assert!(matches!( remote.connect(Fetch, progress::Discard).err(), Some(git::remote::connect::Error::ProtocolDenied { url: _, scheme: git::url::Scheme::File }) )); } } #[test] #[serial] fn user() -> crate::Result { for (env_value, should_allow) in [(None, true), (Some("0"), false), (Some("1"), true)] { let _env = env_value.map(|value| git_testtools::Env::new().set("GIT_PROTOCOL_FROM_USER", value)); let repo = git::open_opts( remote::repo("protocol_file_user").git_dir(), git::open::Options::isolated().permissions(git::Permissions { env: git::permissions::Environment { git_prefix: git_sec::Permission::Allow, ..git::permissions::Environment::all() }, ..git::Permissions::isolated() }), )?; let remote = repo.find_remote("origin")?; assert_eq!( remote.connect(Fetch, progress::Discard).is_ok(), should_allow, "Value = {:?}", env_value ); } Ok(()) } }}
#[cfg(feature = "blocking-network-client")]
mod blocking_io {
mod protocol_allow {
use git_features::progress;
use git_repository as git;
use git_repository::remote::Direction::Fetch;
use serial_test::serial;
use crate::remote;
#[test]
fn deny() {
for name in ["protocol_denied", "protocol_file_denied"] {
let repo = remote::repo(name);
let remote = repo.find_remote("origin").unwrap();
assert!(matches!(
remote.connect(Fetch, progress::Discard).err(),
Some(git::remote::connect::Error::ProtocolDenied {
url: _,
scheme: git::url::Scheme::File
})
));
}
}
#[test]
#[serial]
fn user() -> crate::Result {
for (env_value, should_allow) in [(None, true), (Some("0"), false), (Some("1"), true)] {
let _env = env_value.map(|value| git_testtools::Env::new().set("GIT_PROTOCOL_FROM_USER", value));
let repo = git::open_opts(
remote::repo("protocol_file_user").git_dir(),
git::open::Options::isolated().permissions(git::Permissions {
env: git::permissions::Environment {
git_prefix: git_sec::Permission::Allow,
..git::permissions::Environment::all()
},
..git::Permissions::isolated()
}),
)?;
let remote = repo.find_remote("origin")?;
assert_eq!(
remote.connect(Fetch, progress::Discard).is_ok(),
should_allow,
"Value = {:?}",
env_value
);
}
Ok(())
}
}
}