mirror of
https://github.com/miekg/dns.git
synced 2025-10-11 01:41:00 +02:00
When an $INCLUDE was seen the arguments to parseZone where in the wrong order meaning the filename was used as the `neworigin` instead of the actual origin we need. Extend the testcase to check for the full name of the record.
49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package dns
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestParseZoneInclude(t *testing.T) {
|
|
|
|
tmpfile, err := ioutil.TempFile("", "dns")
|
|
if err != nil {
|
|
t.Fatalf("could not create tmpfile for test: %s", err)
|
|
}
|
|
|
|
if _, err := tmpfile.WriteString("foo\tIN\tA\t127.0.0.1"); err != nil {
|
|
t.Fatalf("unable to write content to tmpfile %q: %s", tmpfile.Name(), err)
|
|
}
|
|
if err := tmpfile.Close(); err != nil {
|
|
t.Fatalf("could not close tmpfile %q: %s", tmpfile.Name(), err)
|
|
}
|
|
|
|
zone := "$ORIGIN example.org.\n$INCLUDE " + tmpfile.Name()
|
|
|
|
tok := ParseZone(strings.NewReader(zone), "", "")
|
|
for x := range tok {
|
|
if x.Error != nil {
|
|
t.Fatalf("expected no error, but got %s", x.Error)
|
|
}
|
|
if x.RR.Header().Name != "foo.example.org." {
|
|
t.Fatalf("expected %s, but got %s", "foo.example.org.", x.RR.Header().Name)
|
|
}
|
|
}
|
|
|
|
os.Remove(tmpfile.Name())
|
|
|
|
tok = ParseZone(strings.NewReader(zone), "", "")
|
|
for x := range tok {
|
|
if x.Error == nil {
|
|
t.Fatalf("expected first token to contain an error but it didn't")
|
|
}
|
|
if !strings.Contains(x.Error.Error(), "failed to open") ||
|
|
!strings.Contains(x.Error.Error(), tmpfile.Name()) {
|
|
t.Fatalf(`expected error to contain: "failed to open" and %q but got: %s`, tmpfile.Name(), x.Error)
|
|
}
|
|
}
|
|
}
|