mirror of
https://github.com/Li4n0/revsuit.git
synced 2026-09-22 06:40:43 +08:00
Support http,dns and mysql connection. Support custom http, dns response. Support dns rebinding. Support mysql load local files and jdbc deserialize exploit.
96 lines
2.7 KiB
Go
96 lines
2.7 KiB
Go
package newdns
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestIsDomain(t *testing.T) {
|
|
assert.True(t, IsDomain("example.com", false))
|
|
assert.False(t, IsDomain("example.com", true))
|
|
assert.True(t, IsDomain("example.com.", true))
|
|
assert.True(t, IsDomain(" example.com.", true))
|
|
assert.False(t, IsDomain("", false))
|
|
assert.True(t, IsDomain("x", false))
|
|
assert.True(t, IsDomain(".", false))
|
|
}
|
|
|
|
func TestInZone(t *testing.T) {
|
|
assert.True(t, InZone("example.com.", "foo.example.com."))
|
|
assert.True(t, InZone("example.com", "foo.example.com"))
|
|
assert.True(t, InZone("example.com", "example.com"))
|
|
assert.True(t, InZone(".", "com"))
|
|
assert.True(t, InZone(".", "."))
|
|
assert.False(t, InZone("", "."))
|
|
assert.False(t, InZone("", ""))
|
|
assert.False(t, InZone("foo.example.com", "example.com"))
|
|
}
|
|
|
|
func TestTrimZone(t *testing.T) {
|
|
assert.Equal(t, "foo", TrimZone("example.com.", "foo.example.com."))
|
|
assert.Equal(t, "foo", TrimZone("example.com", "foo.example.com"))
|
|
assert.Equal(t, "", TrimZone("example.com", "example.com"))
|
|
assert.Equal(t, "example.com", TrimZone("foo.example.com", "example.com"))
|
|
}
|
|
|
|
func TestNormalizeDomain(t *testing.T) {
|
|
assert.Equal(t, "", NormalizeDomain("", false, false, false))
|
|
assert.Equal(t, ".", NormalizeDomain("", false, true, false))
|
|
assert.Equal(t, "foo", NormalizeDomain(" foo", false, false, false))
|
|
assert.Equal(t, "foo", NormalizeDomain("foo ", false, false, false))
|
|
assert.Equal(t, "foo", NormalizeDomain(" fOO ", true, false, false))
|
|
assert.Equal(t, "foo.", NormalizeDomain(" fOO ", true, true, false))
|
|
assert.Equal(t, "foo", NormalizeDomain(" fOO. ", true, false, true))
|
|
}
|
|
|
|
func TestSplitDomain(t *testing.T) {
|
|
assert.Equal(t, []string(nil), SplitDomain("", false))
|
|
assert.Equal(t, []string(nil), SplitDomain(".", false))
|
|
assert.Equal(t, []string{"foo"}, SplitDomain("foo", false))
|
|
assert.Equal(t, []string{"foo", "bar"}, SplitDomain("foo.bar", false))
|
|
|
|
assert.Equal(t, []string(nil), SplitDomain("", true))
|
|
assert.Equal(t, []string(nil), SplitDomain(".", true))
|
|
assert.Equal(t, []string{"foo"}, SplitDomain("foo", true))
|
|
assert.Equal(t, []string{"foo.bar", "bar"}, SplitDomain("foo.bar", true))
|
|
}
|
|
|
|
func TestTransferCase(t *testing.T) {
|
|
table := []struct {
|
|
src string
|
|
dst string
|
|
out string
|
|
}{
|
|
{
|
|
src: "example.com",
|
|
dst: "example.com",
|
|
out: "example.com",
|
|
},
|
|
{
|
|
src: "EXAmple.com",
|
|
dst: "example.com",
|
|
out: "EXAmple.com",
|
|
},
|
|
{
|
|
src: "FOO.com",
|
|
dst: "bar.com",
|
|
out: "bar.com",
|
|
},
|
|
{
|
|
src: "foo.EXAmple.com",
|
|
dst: "example.com",
|
|
out: "EXAmple.com",
|
|
},
|
|
{
|
|
src: "foo.EXAmple.com",
|
|
dst: "bar.example.com",
|
|
out: "bar.example.com",
|
|
},
|
|
}
|
|
|
|
for i, item := range table {
|
|
assert.Equal(t, item.out, TransferCase(item.src, item.dst), i)
|
|
}
|
|
}
|