package dnsforward

import (
	"testing"

	"github.com/AdguardTeam/dnsproxy/proxy"
	"github.com/miekg/dns"
	"github.com/stretchr/testify/assert"
)

func TestIPSET(t *testing.T) {
	s := Server{}
	s.conf.IPSETList = append(s.conf.IPSETList, "HOST.com/name")
	s.conf.IPSETList = append(s.conf.IPSETList, "host2.com,host3.com/name23")
	s.conf.IPSETList = append(s.conf.IPSETList, "host4.com/name4,name41")
	c := ipsetCtx{}
	c.init(s.conf.IPSETList)

	assert.Equal(t, "name", c.ipsetList["host.com"][0])
	assert.Equal(t, "name23", c.ipsetList["host2.com"][0])
	assert.Equal(t, "name23", c.ipsetList["host3.com"][0])
	assert.Equal(t, "name4", c.ipsetList["host4.com"][0])
	assert.Equal(t, "name41", c.ipsetList["host4.com"][1])

	_, ok := c.ipsetList["host0.com"]
	assert.False(t, ok)

	ctx := &dnsContext{
		srv: &s,
	}
	ctx.proxyCtx = &proxy.DNSContext{}
	ctx.proxyCtx.Req = &dns.Msg{
		Question: []dns.Question{
			{
				Name:  "host.com.",
				Qtype: dns.TypeA,
			},
		},
	}
	assert.Equal(t, resultDone, c.process(ctx))
}