Files
Li4n0 3559894acc feat: complete basic functions
Support http,dns and mysql connection. Support custom http, dns response. Support dns rebinding.
Support mysql load local files and jdbc deserialize exploit.
2021-04-21 18:55:16 +08:00

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)
}
}