refactor(bare): enhance security and performance optimizations
- Remove unnecessary sorting in advertise_refs for deterministic output - Add path traversal detection and validation in bare_dir construction - Implement symlink resolution checks to prevent security vulnerabilities - Refactor cache system with CRC validation and improved metrics - Integrate repo-specific cache invalidation using indexed keys - Add comprehensive unit tests for commit operations and diff functionality - Move configuration constants to centralized config module - Optimize string operations in disk cache random value generation - Enhance license detection algorithm with cleaner matching logic - Streamline argument processing in various git operations - Update dependencies including crc32fast and flate2 for performance - Add signal handling capability to tokio runtime configuration
This commit is contained in:
@@ -266,3 +266,79 @@ async fn test_get_patch() {
|
||||
.collect();
|
||||
assert!(combined.contains("diff --git") || combined.contains("@@"));
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn test_find_changed_paths() {
|
||||
let (_dir, gb) = common::setup_bare_repo();
|
||||
let feature_oid = common::get_feature_oid(&gb);
|
||||
let main_oid = common::get_main_oid(&gb);
|
||||
let resp = gb.find_changed_paths(FindChangedPathsRequest {
|
||||
repository: Some(hdr()),
|
||||
base: feature_oid,
|
||||
head: main_oid,
|
||||
paths: vec![],
|
||||
}).unwrap();
|
||||
assert!(!resp.paths.is_empty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_find_changed_paths_same_ref() {
|
||||
let (_dir, gb) = common::setup_bare_repo();
|
||||
let oid = common::get_main_oid(&gb);
|
||||
let resp = gb.find_changed_paths(FindChangedPathsRequest {
|
||||
repository: Some(hdr()),
|
||||
base: oid.clone(),
|
||||
head: oid,
|
||||
paths: vec![],
|
||||
}).unwrap();
|
||||
assert!(resp.paths.is_empty());
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn test_raw_diff() {
|
||||
let (_dir, gb) = common::setup_bare_repo();
|
||||
let feature_oid = common::get_feature_oid(&gb);
|
||||
let main_oid = common::get_main_oid(&gb);
|
||||
let chunks = gb.raw_diff(RawDiffRequest {
|
||||
repository: Some(hdr()),
|
||||
base: feature_oid,
|
||||
head: main_oid,
|
||||
options: None,
|
||||
}).unwrap();
|
||||
assert!(!chunks.is_empty());
|
||||
let combined: Vec<u8> = chunks.iter().flat_map(|c| c.data.clone()).collect();
|
||||
let text = String::from_utf8_lossy(&combined);
|
||||
assert!(text.contains("diff"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_raw_patch() {
|
||||
let (_dir, gb) = common::setup_bare_repo();
|
||||
let feature_oid = common::get_feature_oid(&gb);
|
||||
let main_oid = common::get_main_oid(&gb);
|
||||
let chunks = gb.raw_patch(RawPatchRequest {
|
||||
repository: Some(hdr()),
|
||||
base: feature_oid,
|
||||
head: main_oid,
|
||||
}).unwrap();
|
||||
assert!(!chunks.is_empty());
|
||||
let combined: Vec<u8> = chunks.iter().flat_map(|c| c.data.clone()).collect();
|
||||
let text = String::from_utf8_lossy(&combined);
|
||||
assert!(text.contains("From"));
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn test_get_raw_changes() {
|
||||
let (_dir, gb) = common::setup_bare_repo();
|
||||
let feature_oid = common::get_feature_oid(&gb);
|
||||
let main_oid = common::get_main_oid(&gb);
|
||||
let resp = gb.get_raw_changes(GetRawChangesRequest {
|
||||
repository: Some(hdr()),
|
||||
base: feature_oid,
|
||||
head: main_oid,
|
||||
}).unwrap();
|
||||
assert!(!resp.changes.is_empty());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user