mirror of
https://github.com/epi052/feroxbuster
synced 2024-07-08 19:45:45 +00:00
one more again
This commit is contained in:
parent
03a36f0b60
commit
d1a74207f4
2
.github/workflows/check.yml
vendored
2
.github/workflows/check.yml
vendored
|
@ -23,7 +23,7 @@ jobs:
|
|||
uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: nextest
|
||||
args: run --all-features --all-targets --retries 2
|
||||
args: run --all-features --all-targets --retries 10
|
||||
|
||||
fmt:
|
||||
name: Rust fmt
|
||||
|
|
2
.github/workflows/coverage.yml
vendored
2
.github/workflows/coverage.yml
vendored
|
@ -22,7 +22,7 @@ jobs:
|
|||
with:
|
||||
command: llvm-cov
|
||||
args: clean --workspace
|
||||
- run: cargo llvm-cov --all-features --no-fail-fast --lcov --output-path lcov.info
|
||||
- run: cargo llcargo llvm-cov nextest --all-features --no-fail-fast --lcov --output-path lcov.info -- --retries 10
|
||||
- name: Upload coverage to Codecov
|
||||
uses: codecov/codecov-action@v1
|
||||
with:
|
||||
|
|
|
@ -269,53 +269,53 @@ fn heuristics_static_wildcard_request_with_dont_filter() -> Result<(), Box<dyn s
|
|||
Ok(())
|
||||
}
|
||||
|
||||
// #[test]
|
||||
// /// test finds a static wildcard and reports as much to stdout
|
||||
// fn heuristics_wildcard_test_with_two_static_wildcards() {
|
||||
// let srv = MockServer::start();
|
||||
// let (tmp_dir, file) = setup_tmp_directory(&["LICENSE".to_string()], "wordlist").unwrap();
|
||||
#[test]
|
||||
/// test finds a static wildcard and reports as much to stdout
|
||||
fn heuristics_wildcard_test_with_two_static_wildcards() {
|
||||
let srv = MockServer::start();
|
||||
let (tmp_dir, file) = setup_tmp_directory(&["LICENSE".to_string()], "wordlist").unwrap();
|
||||
|
||||
// let mock = srv.mock(|when, then| {
|
||||
// when.method(GET)
|
||||
// .path_matches(Regex::new("/[a-zA-Z0-9]{32}/").unwrap());
|
||||
// then.status(200)
|
||||
// .body("this is a testAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||
// });
|
||||
let mock = srv.mock(|when, then| {
|
||||
when.method(GET)
|
||||
.path_matches(Regex::new("/[a-zA-Z0-9]{32}/").unwrap());
|
||||
then.status(200)
|
||||
.body("this is a testAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||
});
|
||||
|
||||
// let mock2 = srv.mock(|when, then| {
|
||||
// when.method(GET)
|
||||
// .path_matches(Regex::new("/[a-zA-Z0-9]{96}/").unwrap());
|
||||
// then.status(200)
|
||||
// .body("this is a testAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||
// });
|
||||
let mock2 = srv.mock(|when, then| {
|
||||
when.method(GET)
|
||||
.path_matches(Regex::new("/[a-zA-Z0-9]{96}/").unwrap());
|
||||
then.status(200)
|
||||
.body("this is a testAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||
});
|
||||
|
||||
// let cmd = Command::cargo_bin("feroxbuster")
|
||||
// .unwrap()
|
||||
// .arg("--url")
|
||||
// .arg(srv.url("/"))
|
||||
// .arg("--wordlist")
|
||||
// .arg(file.as_os_str())
|
||||
// .arg("--add-slash")
|
||||
// .arg("--threads")
|
||||
// .arg("1")
|
||||
// .unwrap();
|
||||
let cmd = Command::cargo_bin("feroxbuster")
|
||||
.unwrap()
|
||||
.arg("--url")
|
||||
.arg(srv.url("/"))
|
||||
.arg("--wordlist")
|
||||
.arg(file.as_os_str())
|
||||
.arg("--add-slash")
|
||||
.arg("--threads")
|
||||
.arg("1")
|
||||
.unwrap();
|
||||
|
||||
// teardown_tmp_directory(tmp_dir);
|
||||
teardown_tmp_directory(tmp_dir);
|
||||
|
||||
// cmd.assert().success().stdout(
|
||||
// predicate::str::contains("WLD")
|
||||
// .and(predicate::str::contains("Got"))
|
||||
// .and(predicate::str::contains("200"))
|
||||
// .and(predicate::str::contains("(url length: 32)"))
|
||||
// .and(predicate::str::contains("(url length: 96)"))
|
||||
// .and(predicate::str::contains(
|
||||
// "Wildcard response is static; auto-filtering 46",
|
||||
// )),
|
||||
// );
|
||||
cmd.assert().success().stdout(
|
||||
predicate::str::contains("WLD")
|
||||
.and(predicate::str::contains("Got"))
|
||||
.and(predicate::str::contains("200"))
|
||||
.and(predicate::str::contains("(url length: 32)"))
|
||||
.and(predicate::str::contains("(url length: 96)"))
|
||||
.and(predicate::str::contains(
|
||||
"Wildcard response is static; auto-filtering 46",
|
||||
)),
|
||||
);
|
||||
|
||||
// assert_eq!(mock.hits(), 1);
|
||||
// assert_eq!(mock2.hits(), 1);
|
||||
// }
|
||||
assert_eq!(mock.hits(), 1);
|
||||
assert_eq!(mock2.hits(), 1);
|
||||
}
|
||||
|
||||
#[test]
|
||||
/// test finds a static wildcard and reports nothing to stdout
|
||||
|
@ -359,126 +359,126 @@ fn heuristics_wildcard_test_with_two_static_wildcards_with_silent_enabled(
|
|||
Ok(())
|
||||
}
|
||||
|
||||
// #[test]
|
||||
// /// test finds a static wildcard and reports as much to stdout and a file
|
||||
// fn heuristics_wildcard_test_with_two_static_wildcards_and_output_to_file() {
|
||||
// let srv = MockServer::start();
|
||||
// let (tmp_dir, file) = setup_tmp_directory(&["LICENSE".to_string()], "wordlist").unwrap();
|
||||
// let outfile = tmp_dir.path().join("outfile");
|
||||
#[test]
|
||||
/// test finds a static wildcard and reports as much to stdout and a file
|
||||
fn heuristics_wildcard_test_with_two_static_wildcards_and_output_to_file() {
|
||||
let srv = MockServer::start();
|
||||
let (tmp_dir, file) = setup_tmp_directory(&["LICENSE".to_string()], "wordlist").unwrap();
|
||||
let outfile = tmp_dir.path().join("outfile");
|
||||
|
||||
// let mock = srv.mock(|when, then| {
|
||||
// when.method(GET)
|
||||
// .path_matches(Regex::new("/[a-zA-Z0-9]{32}/").unwrap());
|
||||
// then.status(200)
|
||||
// .body("this is a testAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||
// });
|
||||
let mock = srv.mock(|when, then| {
|
||||
when.method(GET)
|
||||
.path_matches(Regex::new("/[a-zA-Z0-9]{32}/").unwrap());
|
||||
then.status(200)
|
||||
.body("this is a testAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||
});
|
||||
|
||||
// let mock2 = srv.mock(|when, then| {
|
||||
// when.method(GET)
|
||||
// .path_matches(Regex::new("/[a-zA-Z0-9]{96}/").unwrap());
|
||||
// then.status(200)
|
||||
// .body("this is a testAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||
// });
|
||||
let mock2 = srv.mock(|when, then| {
|
||||
when.method(GET)
|
||||
.path_matches(Regex::new("/[a-zA-Z0-9]{96}/").unwrap());
|
||||
then.status(200)
|
||||
.body("this is a testAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||
});
|
||||
|
||||
// let cmd = Command::cargo_bin("feroxbuster")
|
||||
// .unwrap()
|
||||
// .arg("--url")
|
||||
// .arg(srv.url("/"))
|
||||
// .arg("--wordlist")
|
||||
// .arg(file.as_os_str())
|
||||
// .arg("--add-slash")
|
||||
// .arg("--output")
|
||||
// .arg(outfile.as_os_str())
|
||||
// .arg("--threads")
|
||||
// .arg("1")
|
||||
// .unwrap();
|
||||
let cmd = Command::cargo_bin("feroxbuster")
|
||||
.unwrap()
|
||||
.arg("--url")
|
||||
.arg(srv.url("/"))
|
||||
.arg("--wordlist")
|
||||
.arg(file.as_os_str())
|
||||
.arg("--add-slash")
|
||||
.arg("--output")
|
||||
.arg(outfile.as_os_str())
|
||||
.arg("--threads")
|
||||
.arg("1")
|
||||
.unwrap();
|
||||
|
||||
// let contents = std::fs::read_to_string(outfile).unwrap();
|
||||
let contents = std::fs::read_to_string(outfile).unwrap();
|
||||
|
||||
// teardown_tmp_directory(tmp_dir);
|
||||
teardown_tmp_directory(tmp_dir);
|
||||
|
||||
// assert!(contents.contains("WLD"));
|
||||
// assert!(contents.contains("Got"));
|
||||
// assert!(contents.contains("200"));
|
||||
// assert!(contents.contains("(url length: 32)"));
|
||||
// assert!(contents.contains("(url length: 96)"));
|
||||
assert!(contents.contains("WLD"));
|
||||
assert!(contents.contains("Got"));
|
||||
assert!(contents.contains("200"));
|
||||
assert!(contents.contains("(url length: 32)"));
|
||||
assert!(contents.contains("(url length: 96)"));
|
||||
|
||||
// cmd.assert().success().stdout(
|
||||
// predicate::str::contains("WLD")
|
||||
// .and(predicate::str::contains("Got"))
|
||||
// .and(predicate::str::contains("200"))
|
||||
// .and(predicate::str::contains("(url length: 32)"))
|
||||
// .and(predicate::str::contains("(url length: 96)"))
|
||||
// .and(predicate::str::contains(
|
||||
// "Wildcard response is static; auto-filtering 46",
|
||||
// )),
|
||||
// );
|
||||
cmd.assert().success().stdout(
|
||||
predicate::str::contains("WLD")
|
||||
.and(predicate::str::contains("Got"))
|
||||
.and(predicate::str::contains("200"))
|
||||
.and(predicate::str::contains("(url length: 32)"))
|
||||
.and(predicate::str::contains("(url length: 96)"))
|
||||
.and(predicate::str::contains(
|
||||
"Wildcard response is static; auto-filtering 46",
|
||||
)),
|
||||
);
|
||||
|
||||
// assert_eq!(mock.hits(), 1);
|
||||
// assert_eq!(mock2.hits(), 1);
|
||||
// }
|
||||
assert_eq!(mock.hits(), 1);
|
||||
assert_eq!(mock2.hits(), 1);
|
||||
}
|
||||
|
||||
// #[test]
|
||||
// /// test finds a static wildcard that returns 3xx, expect redirects to => in response as well as
|
||||
// /// in the output file
|
||||
// fn heuristics_wildcard_test_with_redirect_as_response_code(
|
||||
// ) -> Result<(), Box<dyn std::error::Error>> {
|
||||
// let srv = MockServer::start();
|
||||
#[test]
|
||||
/// test finds a static wildcard that returns 3xx, expect redirects to => in response as well as
|
||||
/// in the output file
|
||||
fn heuristics_wildcard_test_with_redirect_as_response_code(
|
||||
) -> Result<(), Box<dyn std::error::Error>> {
|
||||
let srv = MockServer::start();
|
||||
|
||||
// let (tmp_dir, file) = setup_tmp_directory(&["LICENSE".to_string()], "wordlist")?;
|
||||
// let outfile = tmp_dir.path().join("outfile");
|
||||
let (tmp_dir, file) = setup_tmp_directory(&["LICENSE".to_string()], "wordlist")?;
|
||||
let outfile = tmp_dir.path().join("outfile");
|
||||
|
||||
// let mock = srv.mock(|when, then| {
|
||||
// when.method(GET)
|
||||
// .path_matches(Regex::new("/[a-zA-Z0-9]{32}/").unwrap());
|
||||
// then.status(301)
|
||||
// .body("this is a testAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||
// });
|
||||
let mock = srv.mock(|when, then| {
|
||||
when.method(GET)
|
||||
.path_matches(Regex::new("/[a-zA-Z0-9]{32}/").unwrap());
|
||||
then.status(301)
|
||||
.body("this is a testAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||
});
|
||||
|
||||
// let mock2 = srv.mock(|when, then| {
|
||||
// when.method(GET)
|
||||
// .path_matches(Regex::new("/[a-zA-Z0-9]{96}/").unwrap());
|
||||
// then.status(301)
|
||||
// .header("Location", &srv.url("/some-redirect"))
|
||||
// .body("this is a testAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||
// });
|
||||
let mock2 = srv.mock(|when, then| {
|
||||
when.method(GET)
|
||||
.path_matches(Regex::new("/[a-zA-Z0-9]{96}/").unwrap());
|
||||
then.status(301)
|
||||
.header("Location", &srv.url("/some-redirect"))
|
||||
.body("this is a testAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||
});
|
||||
|
||||
// let cmd = Command::cargo_bin("feroxbuster")
|
||||
// .unwrap()
|
||||
// .arg("--url")
|
||||
// .arg(srv.url("/"))
|
||||
// .arg("--wordlist")
|
||||
// .arg(file.as_os_str())
|
||||
// .arg("--add-slash")
|
||||
// .arg("--output")
|
||||
// .arg(outfile.as_os_str())
|
||||
// .arg("--threads")
|
||||
// .arg("1")
|
||||
// .unwrap();
|
||||
let cmd = Command::cargo_bin("feroxbuster")
|
||||
.unwrap()
|
||||
.arg("--url")
|
||||
.arg(srv.url("/"))
|
||||
.arg("--wordlist")
|
||||
.arg(file.as_os_str())
|
||||
.arg("--add-slash")
|
||||
.arg("--output")
|
||||
.arg(outfile.as_os_str())
|
||||
.arg("--threads")
|
||||
.arg("1")
|
||||
.unwrap();
|
||||
|
||||
// let contents = std::fs::read_to_string(outfile).unwrap();
|
||||
let contents = std::fs::read_to_string(outfile).unwrap();
|
||||
|
||||
// teardown_tmp_directory(tmp_dir);
|
||||
teardown_tmp_directory(tmp_dir);
|
||||
|
||||
// assert!(contents.contains("WLD"));
|
||||
// assert!(contents.contains("301"));
|
||||
// assert!(contents.contains("/some-redirect"));
|
||||
// assert!(contents.contains(" => "));
|
||||
// assert!(contents.contains(&srv.url("/")));
|
||||
// assert!(contents.contains("(url length: 32)"));
|
||||
assert!(contents.contains("WLD"));
|
||||
assert!(contents.contains("301"));
|
||||
assert!(contents.contains("/some-redirect"));
|
||||
assert!(contents.contains(" => "));
|
||||
assert!(contents.contains(&srv.url("/")));
|
||||
assert!(contents.contains("(url length: 32)"));
|
||||
|
||||
// cmd.assert().success().stdout(
|
||||
// predicate::str::contains(" => ")
|
||||
// .and(predicate::str::contains("/some-redirect"))
|
||||
// .and(predicate::str::contains("301"))
|
||||
// .and(predicate::str::contains(srv.url("/")))
|
||||
// .and(predicate::str::contains("(url length: 32)"))
|
||||
// .and(predicate::str::contains("WLD")),
|
||||
// );
|
||||
cmd.assert().success().stdout(
|
||||
predicate::str::contains(" => ")
|
||||
.and(predicate::str::contains("/some-redirect"))
|
||||
.and(predicate::str::contains("301"))
|
||||
.and(predicate::str::contains(srv.url("/")))
|
||||
.and(predicate::str::contains("(url length: 32)"))
|
||||
.and(predicate::str::contains("WLD")),
|
||||
);
|
||||
|
||||
// assert_eq!(mock.hits(), 1);
|
||||
// assert_eq!(mock2.hits(), 1);
|
||||
// Ok(())
|
||||
// }
|
||||
assert_eq!(mock.hits(), 1);
|
||||
assert_eq!(mock2.hits(), 1);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
// todo figure out why ci hates these tests
|
||||
|
|
Loading…
Reference in New Issue
Block a user