mirror of
https://github.com/netbirdio/netbird.git
synced 2024-12-03 13:34:41 +01:00
4771fed64f
In the case of disabled stub listeren the list of name servers is unordered. The solution is to configure the resolv.conf file directly instead of dbus API. Because third-party services also can manipulate the DNS settings the agent watch the resolv.conf file and keep it up to date. - apply file type DNS manager if in the name server list does not exist the 127.0.0.53 address - watching the resolv.conf file with inotify service and overwrite all the time if the configuration has changed and it invalid - fix resolv.conf generation algorithm
126 lines
2.7 KiB
Go
126 lines
2.7 KiB
Go
//go:build !android
|
|
|
|
package dns
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func Test_mergeSearchDomains(t *testing.T) {
|
|
searchDomains := []string{"a", "b"}
|
|
originDomains := []string{"c", "d"}
|
|
mergedDomains := mergeSearchDomains(searchDomains, originDomains)
|
|
if len(mergedDomains) != 4 {
|
|
t.Errorf("invalid len of result domains: %d, want: %d", len(mergedDomains), 4)
|
|
}
|
|
}
|
|
|
|
func Test_mergeSearchTooMuchDomains(t *testing.T) {
|
|
searchDomains := []string{"a", "b", "c", "d", "e", "f", "g"}
|
|
originDomains := []string{"h", "i"}
|
|
mergedDomains := mergeSearchDomains(searchDomains, originDomains)
|
|
if len(mergedDomains) != 6 {
|
|
t.Errorf("invalid len of result domains: %d, want: %d", len(mergedDomains), 6)
|
|
}
|
|
}
|
|
|
|
func Test_mergeSearchTooMuchDomainsInOrigin(t *testing.T) {
|
|
searchDomains := []string{"a", "b"}
|
|
originDomains := []string{"c", "d", "e", "f", "g"}
|
|
mergedDomains := mergeSearchDomains(searchDomains, originDomains)
|
|
if len(mergedDomains) != 6 {
|
|
t.Errorf("invalid len of result domains: %d, want: %d", len(mergedDomains), 6)
|
|
}
|
|
}
|
|
|
|
func Test_mergeSearchTooLongDomain(t *testing.T) {
|
|
searchDomains := []string{getLongLine()}
|
|
originDomains := []string{"b"}
|
|
mergedDomains := mergeSearchDomains(searchDomains, originDomains)
|
|
if len(mergedDomains) != 1 {
|
|
t.Errorf("invalid len of result domains: %d, want: %d", len(mergedDomains), 1)
|
|
}
|
|
|
|
searchDomains = []string{"b"}
|
|
originDomains = []string{getLongLine()}
|
|
|
|
mergedDomains = mergeSearchDomains(searchDomains, originDomains)
|
|
if len(mergedDomains) != 1 {
|
|
t.Errorf("invalid len of result domains: %d, want: %d", len(mergedDomains), 1)
|
|
}
|
|
}
|
|
|
|
func Test_isContains(t *testing.T) {
|
|
type args struct {
|
|
subList []string
|
|
list []string
|
|
}
|
|
tests := []struct {
|
|
args args
|
|
want bool
|
|
}{
|
|
{
|
|
args: args{
|
|
subList: []string{"a", "b", "c"},
|
|
list: []string{"a", "b", "c"},
|
|
},
|
|
want: true,
|
|
},
|
|
{
|
|
args: args{
|
|
subList: []string{"a"},
|
|
list: []string{"a", "b", "c"},
|
|
},
|
|
want: true,
|
|
},
|
|
{
|
|
args: args{
|
|
subList: []string{"d"},
|
|
list: []string{"a", "b", "c"},
|
|
},
|
|
want: false,
|
|
},
|
|
{
|
|
args: args{
|
|
subList: []string{"a"},
|
|
list: []string{},
|
|
},
|
|
want: false,
|
|
},
|
|
{
|
|
args: args{
|
|
subList: []string{},
|
|
list: []string{"b"},
|
|
},
|
|
want: true,
|
|
},
|
|
{
|
|
args: args{
|
|
subList: []string{},
|
|
list: []string{},
|
|
},
|
|
want: true,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run("list check test", func(t *testing.T) {
|
|
if got := isContains(tt.args.subList, tt.args.list); got != tt.want {
|
|
t.Errorf("isContains() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func getLongLine() string {
|
|
x := "search "
|
|
for {
|
|
for i := 0; i <= 9; i++ {
|
|
if len(x) > fileMaxLineCharsLimit {
|
|
return x
|
|
}
|
|
x = fmt.Sprintf("%s%d", x, i)
|
|
}
|
|
}
|
|
}
|