httpx/runner/runner_test.go
Aviv Keller c72d98628e
Introducing CanHaveTitleTag Function for MIME Type Validation (#1608)
* chore(deps): bump golang.org/x/crypto from 0.14.0 to 0.17.0 (#1493)

Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.14.0 to 0.17.0.
- [Commits](https://github.com/golang/crypto/compare/v0.14.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump github.com/cloudflare/circl from 1.3.3 to 1.3.7 (#1526)

Bumps [github.com/cloudflare/circl](https://github.com/cloudflare/circl) from 1.3.3 to 1.3.7.
- [Release notes](https://github.com/cloudflare/circl/releases)
- [Commits](https://github.com/cloudflare/circl/compare/v1.3.3...v1.3.7)

---
updated-dependencies:
- dependency-name: github.com/cloudflare/circl
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump github.com/quic-go/quic-go from 0.37.4 to 0.37.7 (#1531)

Bumps [github.com/quic-go/quic-go](https://github.com/quic-go/quic-go) from 0.37.4 to 0.37.7.
- [Release notes](https://github.com/quic-go/quic-go/releases)
- [Changelog](https://github.com/quic-go/quic-go/blob/master/Changelog.md)
- [Commits](https://github.com/quic-go/quic-go/compare/v0.37.4...v0.37.7)

---
updated-dependencies:
- dependency-name: github.com/quic-go/quic-go
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update Title Extraction

* Make Requsted Changes

* Import slices

* optional asn

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: sandeep <8293321+ehsandeep@users.noreply.github.com>
Co-authored-by: Sandeep Singh <sandeep@projectdiscovery.io>
Co-authored-by: mzack <marco.rivoli.nvh@gmail.com>
2024-03-23 21:47:40 +05:30

167 lines
4.1 KiB
Go

package runner
import (
"os"
"strings"
"testing"
_ "github.com/projectdiscovery/fdmax/autofdmax"
"github.com/projectdiscovery/httpx/common/httpx"
"github.com/stretchr/testify/require"
)
func TestRunner_domain_targets(t *testing.T) {
options := &Options{}
r, err := New(options)
require.Nil(t, err, "could not create httpx runner")
input := []string{"example.com", "*.example.com", "example.com,one.one.one.one"}
expected := []httpx.Target{{
Host: "example.com",
}, {
Host: "example.com",
}, {
Host: "one.one.one.one",
CustomHost: "example.com",
}}
got := []httpx.Target{}
for _, inp := range input {
for target := range r.targets(r.hp, inp) {
got = append(got, target)
}
}
require.ElementsMatch(t, expected, got, "could not exepcted output")
}
func TestRunner_probeall_targets(t *testing.T) {
options := &Options{
ProbeAllIPS: true,
}
r, err := New(options)
require.Nil(t, err, "could not create httpx runner")
input := "one.one.one.one"
expected := []httpx.Target{{
Host: "one.one.one.one",
CustomIP: "2606:4700:4700::1111",
},
{
Host: "one.one.one.one",
CustomIP: "2606:4700:4700::1001",
},
{
Host: "one.one.one.one",
CustomIP: "1.0.0.1",
},
{
Host: "one.one.one.one",
CustomIP: "1.1.1.1",
}}
got := []httpx.Target{}
for target := range r.targets(r.hp, input) {
got = append(got, target)
}
require.ElementsMatch(t, expected, got, "could not exepcted output")
}
func TestRunner_cidr_targets(t *testing.T) {
options := &Options{}
r, err := New(options)
require.Nil(t, err, "could not create httpx runner")
input := "173.0.84.0/30"
expected := []httpx.Target{
{
Host: "173.0.84.0",
}, {
Host: "173.0.84.1",
},
{
Host: "173.0.84.2",
},
{
Host: "173.0.84.3",
}}
got := []httpx.Target{}
for target := range r.targets(r.hp, input) {
got = append(got, target)
}
require.ElementsMatch(t, expected, got, "could not exepcted output")
}
func TestRunner_asn_targets(t *testing.T) {
if os.Getenv("PDCP_API_KEY") == "" {
return
}
options := &Options{}
r, err := New(options)
require.Nil(t, err, "could not create httpx runner")
input := "AS14421"
expected := []httpx.Target{}
expectedOutputFile := "tests/AS14421.txt"
// read the expected IPs from the file
fileContent, err := os.ReadFile(expectedOutputFile)
require.Nil(t, err, "could not read the expectedOutputFile file")
ips := strings.Split(strings.ReplaceAll(string(fileContent), "\r\n", "\n"), "\n")
for _, ip := range ips {
expected = append(expected, httpx.Target{Host: ip})
}
got := []httpx.Target{}
for target := range r.targets(r.hp, input) {
got = append(got, target)
}
require.ElementsMatch(t, expected, got, "could not exepcted output")
}
func TestRunner_countTargetFromRawTarget(t *testing.T) {
options := &Options{}
r, err := New(options)
require.Nil(t, err, "could not create httpx runner")
input := "example.com"
expected := 1
got := r.countTargetFromRawTarget(input)
require.Equal(t, expected, got, "got wrong output")
input = "example.com"
expected = 0
err = r.hm.Set(input, nil)
require.Nil(t, err, "could not set value to hm")
got = r.countTargetFromRawTarget(input)
require.Equal(t, expected, got, "got wrong output")
input = ""
expected = 0
got = r.countTargetFromRawTarget(input)
require.Equal(t, expected, got, "got wrong output")
if os.Getenv("PDCP_API_KEY") != "" {
input = "AS14421"
expected = 256
got = r.countTargetFromRawTarget(input)
require.Equal(t, expected, got, "got wrong output")
}
input = "173.0.84.0/24"
expected = 256
got = r.countTargetFromRawTarget(input)
require.Equal(t, expected, got, "got wrong output")
}
func TestRunner_urlWithComma_targets(t *testing.T) {
options := &Options{}
r, err := New(options)
require.Nil(t, err, "could not create httpx runner")
input := []string{"http://scanme.sh?a=1,2"}
expected := []httpx.Target{{
Host: "http://scanme.sh?a=1,2",
}}
got := []httpx.Target{}
for _, inp := range input {
for target := range r.targets(r.hp, inp) {
got = append(got, target)
}
}
require.ElementsMatch(t, expected, got, "could not exepcted output")
}