Test structure fixes

This commit is contained in:
Joona Hoikkala 2016-11-26 16:23:22 +02:00
parent 4269069a54
commit b4cc6b8e81
No known key found for this signature in database
GPG Key ID: C14AAE0F5ADCB854
2 changed files with 27 additions and 17 deletions

View File

@ -6,14 +6,12 @@ import (
"fmt" "fmt"
log "github.com/Sirupsen/logrus" log "github.com/Sirupsen/logrus"
"github.com/miekg/dns" "github.com/miekg/dns"
"os"
"strings" "strings"
"testing" "testing"
"time"
) )
var testAddr1 = "0.0.0.0:15353" var resolv resolver
var testAddr2 = "0.0.0.0:15354" var server *dns.Server
var records = []string{ var records = []string{
"auth.example.org. A 192.168.1.100", "auth.example.org. A 192.168.1.100",
@ -77,8 +75,7 @@ func findRecordFromMemory(rrstr string, host string, qtype uint16) error {
return errors.New(errmsg) return errors.New(errmsg)
} }
func startDNSServer(addr string) (*dns.Server, resolver) { func setupConfig() {
var dbcfg = dbsettings{ var dbcfg = dbsettings{
Engine: "sqlite3", Engine: "sqlite3",
Connection: ":memory:", Connection: ":memory:",
@ -97,6 +94,9 @@ func startDNSServer(addr string) (*dns.Server, resolver) {
} }
DNSConf = dnscfg DNSConf = dnscfg
}
func startDNSServer(addr string) (*dns.Server, resolver) {
// DNS server part // DNS server part
dns.HandleFunc(".", handleRequest) dns.HandleFunc(".", handleRequest)
@ -107,15 +107,13 @@ func startDNSServer(addr string) (*dns.Server, resolver) {
log.Errorf("%v", err) log.Errorf("%v", err)
} }
}() }()
time.sleep(2)
return server, resolver{server: addr} return server, resolver{server: addr}
} }
func TestResolveA(t *testing.T) { func TestResolveA(t *testing.T) {
RR.Parse(records) RR.Parse(records)
server, resolver := startDNSServer(testAddr1) setupConfig()
defer server.Shutdown() answer, err := resolv.lookup("auth.example.org", dns.TypeA)
answer, err := resolver.lookup("auth.example.org", dns.TypeA)
if err != nil { if err != nil {
t.Errorf("%v", err) t.Errorf("%v", err)
} }
@ -129,11 +127,11 @@ func TestResolveA(t *testing.T) {
} else { } else {
t.Error("No answer for DNS query") t.Error("No answer for DNS query")
} }
server.Shutdown()
} }
func TestResolveTXT(t *testing.T) { func TestResolveTXT(t *testing.T) {
flag.Parse() flag.Parse()
setupConfig()
if *postgres { if *postgres {
DNSConf.Database.Engine = "postgres" DNSConf.Database.Engine = "postgres"
err := DB.Init("postgres", "postgres://acmedns:acmedns@localhost/acmedns") err := DB.Init("postgres", "postgres://acmedns:acmedns@localhost/acmedns")
@ -147,9 +145,6 @@ func TestResolveTXT(t *testing.T) {
} }
defer DB.DB.Close() defer DB.DB.Close()
server, resolver := startDNSServer(testAddr2)
defer server.Shutdown()
validTXT := "______________valid_response_______________" validTXT := "______________valid_response_______________"
atxt, err := DB.Register() atxt, err := DB.Register()
@ -174,10 +169,10 @@ func TestResolveTXT(t *testing.T) {
{atxt.Subdomain, "invalid", true, false}, {atxt.Subdomain, "invalid", true, false},
{"a097455b-52cc-4569-90c8-7a4b97c6eba8", validTXT, false, false}, {"a097455b-52cc-4569-90c8-7a4b97c6eba8", validTXT, false, false},
} { } {
answer, err := resolver.lookup(test.subDomain+".auth.example.org", dns.TypeTXT) answer, err := resolv.lookup(test.subDomain+".auth.example.org", dns.TypeTXT)
if err != nil { if err != nil {
if test.getAnswer { if test.getAnswer {
t.Errorf("Test %d: Expected answer but got: %v", i, err) t.Fatalf("Test %d: Expected answer but got: %v", i, err)
} }
} else { } else {
if !test.getAnswer { if !test.getAnswer {
@ -205,5 +200,4 @@ func TestResolveTXT(t *testing.T) {
} }
} }
} }
server.Shutdown()
} }

16
main_test.go Normal file
View File

@ -0,0 +1,16 @@
package main
import (
"flag"
"os"
"testing"
)
func TestMain(m *testing.M) {
server, resolv = startDNSServer("0.0.0.0:15353")
flag.Parse()
exitval := m.Run()
server.Shutdown()
DB.DB.Close()
os.Exit(exitval)
}