mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-11-17 10:58:29 -07:00
dfdbfee4fd
Merge in DNS/adguard-home from 2639-testify-require-4 to master Closes #2639. Squashed commit of the following: commit 0bb9125f42ab6d2511c1b8e481112aa5edd581d9 Merge: 0e9e9ed12c9992e0
Author: Eugene Burkov <e.burkov@adguard.com> Date: Thu Mar 11 15:47:21 2021 +0300 Merge branch 'master' into 2639-testify-require-4 commit 0e9e9ed16ae13ce648b5e1da6ffd123df911c2d7 Author: Eugene Burkov <e.burkov@adguard.com> Date: Wed Mar 10 12:43:15 2021 +0300 home: rm deletion error check commit 6bfbbcd2b7f9197a06856f9e6b959c2e1c4b8353 Merge: c8ebe5418811c881
Author: Eugene Burkov <e.burkov@adguard.com> Date: Wed Mar 10 12:30:07 2021 +0300 Merge branch 'master' into 2639-testify-require-4 commit c8ebe54142bba780226f76ddb72e33664ed28f30 Author: Eugene Burkov <e.burkov@adguard.com> Date: Wed Mar 10 12:28:43 2021 +0300 home: imp tests commit f0e1db456f02df5f5f56ca93e7bd40a48475b38c Author: Eugene Burkov <e.burkov@adguard.com> Date: Fri Mar 5 14:06:41 2021 +0300 dnsforward: imp tests commit 4528246105ed06471a8778abbe8e5c30fc5483d5 Merge: 54b08d9c90ebc4d8
Author: Eugene Burkov <e.burkov@adguard.com> Date: Thu Mar 4 18:17:52 2021 +0300 Merge branch 'master' into 2639-testify-require-4 commit 54b08d9c980b8d69d019a1a1b3931aa048275691 Author: Eugene Burkov <e.burkov@adguard.com> Date: Thu Feb 11 13:17:05 2021 +0300 dnsfilter: imp tests
158 lines
3.0 KiB
Go
158 lines
3.0 KiB
Go
package dnsforward
|
|
|
|
import (
|
|
"net"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestIsBlockedIP(t *testing.T) {
|
|
const (
|
|
ip int = iota
|
|
cidr
|
|
)
|
|
|
|
rules := []string{
|
|
ip: "1.1.1.1",
|
|
cidr: "2.2.0.0/16",
|
|
}
|
|
|
|
testCases := []struct {
|
|
name string
|
|
allowed bool
|
|
ip net.IP
|
|
wantDis bool
|
|
wantRule string
|
|
}{{
|
|
name: "allow_ip",
|
|
allowed: true,
|
|
ip: net.IPv4(1, 1, 1, 1),
|
|
wantDis: false,
|
|
wantRule: "",
|
|
}, {
|
|
name: "disallow_ip",
|
|
allowed: true,
|
|
ip: net.IPv4(1, 1, 1, 2),
|
|
wantDis: true,
|
|
wantRule: "",
|
|
}, {
|
|
name: "allow_cidr",
|
|
allowed: true,
|
|
ip: net.IPv4(2, 2, 1, 1),
|
|
wantDis: false,
|
|
wantRule: "",
|
|
}, {
|
|
name: "disallow_cidr",
|
|
allowed: true,
|
|
ip: net.IPv4(2, 3, 1, 1),
|
|
wantDis: true,
|
|
wantRule: "",
|
|
}, {
|
|
name: "allow_ip",
|
|
allowed: false,
|
|
ip: net.IPv4(1, 1, 1, 1),
|
|
wantDis: true,
|
|
wantRule: rules[ip],
|
|
}, {
|
|
name: "disallow_ip",
|
|
allowed: false,
|
|
ip: net.IPv4(1, 1, 1, 2),
|
|
wantDis: false,
|
|
wantRule: "",
|
|
}, {
|
|
name: "allow_cidr",
|
|
allowed: false,
|
|
ip: net.IPv4(2, 2, 1, 1),
|
|
wantDis: true,
|
|
wantRule: rules[cidr],
|
|
}, {
|
|
name: "disallow_cidr",
|
|
allowed: false,
|
|
ip: net.IPv4(2, 3, 1, 1),
|
|
wantDis: false,
|
|
wantRule: "",
|
|
}}
|
|
|
|
for _, tc := range testCases {
|
|
prefix := "allowed_"
|
|
if !tc.allowed {
|
|
prefix = "disallowed_"
|
|
}
|
|
|
|
t.Run(prefix+tc.name, func(t *testing.T) {
|
|
aCtx := &accessCtx{}
|
|
allowedRules := rules
|
|
var disallowedRules []string
|
|
|
|
if !tc.allowed {
|
|
allowedRules, disallowedRules = disallowedRules, allowedRules
|
|
}
|
|
|
|
require.Nil(t, aCtx.Init(allowedRules, disallowedRules, nil))
|
|
|
|
disallowed, rule := aCtx.IsBlockedIP(tc.ip)
|
|
assert.Equal(t, tc.wantDis, disallowed)
|
|
assert.Equal(t, tc.wantRule, rule)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestIsBlockedDomain(t *testing.T) {
|
|
aCtx := &accessCtx{}
|
|
require.Nil(t, aCtx.Init(nil, nil, []string{
|
|
"host1",
|
|
"*.host.com",
|
|
"||host3.com^",
|
|
}))
|
|
|
|
testCases := []struct {
|
|
name string
|
|
domain string
|
|
want bool
|
|
}{{
|
|
name: "plain_match",
|
|
domain: "host1",
|
|
want: true,
|
|
}, {
|
|
name: "plain_mismatch",
|
|
domain: "host2",
|
|
want: false,
|
|
}, {
|
|
name: "wildcard_type-1_match_short",
|
|
domain: "asdf.host.com",
|
|
want: true,
|
|
}, {
|
|
name: "wildcard_type-1_match_long",
|
|
domain: "qwer.asdf.host.com",
|
|
want: true,
|
|
}, {
|
|
name: "wildcard_type-1_mismatch_no-lead",
|
|
domain: "host.com",
|
|
want: false,
|
|
}, {
|
|
name: "wildcard_type-1_mismatch_bad-asterisk",
|
|
domain: "asdf.zhost.com",
|
|
want: false,
|
|
}, {
|
|
name: "wildcard_type-2_match_simple",
|
|
domain: "host3.com",
|
|
want: true,
|
|
}, {
|
|
name: "wildcard_type-2_match_complex",
|
|
domain: "asdf.host3.com",
|
|
want: true,
|
|
}, {
|
|
name: "wildcard_type-2_mismatch",
|
|
domain: ".host3.com",
|
|
want: false,
|
|
}}
|
|
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
assert.Equal(t, tc.want, aCtx.IsBlockedDomain(tc.domain))
|
|
})
|
|
}
|
|
}
|