mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-12-18 05:41:55 +03:00
81 lines
1.7 KiB
Go
81 lines
1.7 KiB
Go
|
package home
|
||
|
|
||
|
import (
|
||
|
"net"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/AdguardTeam/AdGuardHome/internal/filtering"
|
||
|
"github.com/AdguardTeam/AdGuardHome/internal/schedule"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func TestApplyAdditionalFiltering_blockedServices(t *testing.T) {
|
||
|
filtering.InitModule()
|
||
|
|
||
|
var (
|
||
|
globalBlockedServices = []string{"ok"}
|
||
|
clientBlockedServices = []string{"ok", "mail_ru", "vk"}
|
||
|
invalidBlockedServices = []string{"invalid"}
|
||
|
|
||
|
err error
|
||
|
)
|
||
|
|
||
|
Context.filters, err = filtering.New(&filtering.Config{
|
||
|
BlockedServices: &filtering.BlockedServices{
|
||
|
Schedule: schedule.EmptyWeekly(),
|
||
|
IDs: globalBlockedServices,
|
||
|
},
|
||
|
}, nil)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
Context.clients.idIndex = map[string]*Client{
|
||
|
"client_1": {
|
||
|
UseOwnBlockedServices: false,
|
||
|
},
|
||
|
"client_2": {
|
||
|
UseOwnBlockedServices: true,
|
||
|
},
|
||
|
"client_3": {
|
||
|
BlockedServices: clientBlockedServices,
|
||
|
UseOwnBlockedServices: true,
|
||
|
},
|
||
|
"client_4": {
|
||
|
BlockedServices: invalidBlockedServices,
|
||
|
UseOwnBlockedServices: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
testCases := []struct {
|
||
|
name string
|
||
|
ip net.IP
|
||
|
id string
|
||
|
setts *filtering.Settings
|
||
|
wantLen int
|
||
|
}{{
|
||
|
name: "global_settings",
|
||
|
id: "client_1",
|
||
|
wantLen: len(globalBlockedServices),
|
||
|
}, {
|
||
|
name: "custom_settings",
|
||
|
id: "client_2",
|
||
|
wantLen: 0,
|
||
|
}, {
|
||
|
name: "custom_settings_block",
|
||
|
id: "client_3",
|
||
|
wantLen: len(clientBlockedServices),
|
||
|
}, {
|
||
|
name: "custom_settings_invalid",
|
||
|
id: "client_4",
|
||
|
wantLen: 0,
|
||
|
}}
|
||
|
|
||
|
for _, tc := range testCases {
|
||
|
t.Run(tc.name, func(t *testing.T) {
|
||
|
setts := &filtering.Settings{}
|
||
|
|
||
|
applyAdditionalFiltering(net.IP{1, 2, 3, 4}, tc.id, setts)
|
||
|
require.Len(t, setts.ServicesRules, tc.wantLen)
|
||
|
})
|
||
|
}
|
||
|
}
|