Complete SSH transport release audit (#118)
Dependency security audit / rustsec (push) Has been cancelled

This commit is contained in:
hugo committed 2026-08-25 22:07:47 +02:00
1 parent a737e74aae
commit a3da9fda69
18 files changed
+489 -212

No files matched your search

+47 -44
View File
@@ -545,66 +545,69 @@ fn assert_pack_request(request: &[u8], old: Option<&str>, new: &str) {
#[test]
fn new_branch_fast_forward_and_already_current_push_are_confirmed() {
for (old_kind, behavior) in [
(None, ReceiveBehavior::Success),
(Some("base"), ReceiveBehavior::Success),
] {
for scp_like in [false, true] {
for old_kind in [None, Some("base")] {
let temporary = tempfile::tempdir().expect("temporary directory");
let local = local_repository(&temporary.path().join("local"));
let base = commit(&local, ".gpg-id", b"ALICE\n", "Initialize");
let new = commit(&local, "entry.gpg", b"ciphertext", "Add entry");
let old = old_kind.map(|_| base.clone());
let user_key = key();
let server = start_server(
user_key.public_key().clone(),
None,
old.clone(),
ReceiveBehavior::Success,
false,
1,
);
let remote = remote(temporary.path(), &server, &user_key, scp_like);
let mut local = local;
local.add_remote("origin", remote.url()).expect("remote");
let outcome = local
.push(&remote, Some("main"), &Credentials)
.expect("push");
assert_eq!(outcome.new_id(), new);
assert_eq!(tracking_id(&local), Some(new.clone()));
server.join.join().expect("server");
let observed = server.observed.lock().expect("observed");
let expected = if scp_like {
b"git-receive-pack 'team/store.git'".to_vec()
} else {
b"git-receive-pack '/team/store.git'".to_vec()
};
assert_eq!(observed.commands, [expected]);
assert_eq!(observed.receive_requests.len(), 1);
assert_pack_request(&observed.receive_requests[0], old.as_deref(), &new);
}
}
for scp_like in [false, true] {
let temporary = tempfile::tempdir().expect("temporary directory");
let local = local_repository(&temporary.path().join("local"));
let base = commit(&local, ".gpg-id", b"ALICE\n", "Initialize");
let new = commit(&local, "entry.gpg", b"ciphertext", "Add entry");
let old = old_kind.map(|_| base.clone());
let head = commit(&local, ".gpg-id", b"ALICE\n", "Initialize");
let user_key = key();
let server = start_server(
user_key.public_key().clone(),
None,
old.clone(),
behavior,
Some(head.clone()),
ReceiveBehavior::Success,
false,
1,
);
let remote = remote(temporary.path(), &server, &user_key, false);
let remote = remote(temporary.path(), &server, &user_key, scp_like);
let mut local = local;
local.add_remote("origin", remote.url()).expect("remote");
let outcome = local
local
.push(&remote, Some("main"), &Credentials)
.expect("push");
assert_eq!(outcome.new_id(), new);
assert_eq!(tracking_id(&local), Some(new.clone()));
.expect("current push");
assert_eq!(tracking_id(&local), Some(head));
server.join.join().expect("server");
let observed = server.observed.lock().expect("observed");
assert_eq!(
observed.commands,
[b"git-receive-pack '/team/store.git'".to_vec()]
server.observed.lock().expect("observed").receive_requests,
[b"0000".to_vec()]
);
assert_eq!(observed.receive_requests.len(), 1);
assert_pack_request(&observed.receive_requests[0], old.as_deref(), &new);
}
let temporary = tempfile::tempdir().expect("temporary directory");
let local = local_repository(&temporary.path().join("local"));
let head = commit(&local, ".gpg-id", b"ALICE\n", "Initialize");
let user_key = key();
let server = start_server(
user_key.public_key().clone(),
None,
Some(head.clone()),
ReceiveBehavior::Success,
false,
1,
);
let remote = remote(temporary.path(), &server, &user_key, false);
let mut local = local;
local.add_remote("origin", remote.url()).expect("remote");
local
.push(&remote, Some("main"), &Credentials)
.expect("current push");
assert_eq!(tracking_id(&local), Some(head));
server.join.join().expect("server");
assert_eq!(
server.observed.lock().expect("observed").receive_requests,
[b"0000".to_vec()]
);
}
#[test]