testing | dont be recursive for external domains | finalize oauth #5
|
@ -2,3 +2,4 @@
|
|||
hatecomputers.club
|
||||
Dockerfile
|
||||
*.db
|
||||
.drone.yml
|
||||
|
|
|
@ -2,6 +2,8 @@ package hcdns
|
|||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"os"
|
||||
"sync"
|
||||
"testing"
|
||||
|
@ -9,17 +11,24 @@ import (
|
|||
"git.hatecomputers.club/hatecomputers/hatecomputers.club/args"
|
||||
"git.hatecomputers.club/hatecomputers/hatecomputers.club/database"
|
||||
"git.hatecomputers.club/hatecomputers/hatecomputers.club/hcdns"
|
||||
"git.hatecomputers.club/hatecomputers/hatecomputers.club/utils"
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
const (
|
||||
testDBPath = "test.db"
|
||||
address = "127.0.0.1:8353"
|
||||
dnsPort = 8353
|
||||
)
|
||||
func destroy(conn *sql.DB, path string) {
|
||||
conn.Close()
|
||||
os.Remove(path)
|
||||
}
|
||||
|
||||
func setup(dbPath string) (*sql.DB, *dns.Server, *sync.WaitGroup) {
|
||||
testDb := database.MakeConn(&dbPath)
|
||||
func randomPort() int {
|
||||
return rand.Intn(3000) + 10000
|
||||
}
|
||||
|
||||
func setup() (*sql.DB, *dns.Server, int, *string, func()) {
|
||||
randomDb := utils.RandomId()
|
||||
dnsPort := randomPort()
|
||||
|
||||
testDb := database.MakeConn(&randomDb)
|
||||
database.Migrate(testDb)
|
||||
testUser := &database.User{
|
||||
ID: "test",
|
||||
|
@ -37,20 +46,21 @@ func setup(dbPath string) (*sql.DB, *dns.Server, *sync.WaitGroup) {
|
|||
waitGroup.Done()
|
||||
}()
|
||||
|
||||
return testDb, server, &waitGroup
|
||||
}
|
||||
address := fmt.Sprintf("127.0.0.1:%d", dnsPort)
|
||||
return testDb, server, dnsPort, &address, func() {
|
||||
testDb.Close()
|
||||
os.Remove(randomDb)
|
||||
|
||||
func destroy(conn *sql.DB, path string) {
|
||||
conn.Close()
|
||||
os.Remove(path)
|
||||
server.Shutdown()
|
||||
waitGroup.Wait()
|
||||
}
|
||||
}
|
||||
|
||||
func TestWhenCNAMEIsResolved(t *testing.T) {
|
||||
t.Log("TestWhenCNAMEIsResolved")
|
||||
|
||||
testDb, server, _ := setup(testDBPath)
|
||||
defer destroy(testDb, testDBPath)
|
||||
defer server.Shutdown()
|
||||
testDb, _, _, addr, cleanup := setup()
|
||||
defer cleanup()
|
||||
|
||||
cname := &database.DNSRecord{
|
||||
ID: "1",
|
||||
|
@ -79,7 +89,7 @@ func TestWhenCNAMEIsResolved(t *testing.T) {
|
|||
message := new(dns.Msg)
|
||||
message.SetQuestion(domain, qtype)
|
||||
|
||||
in, _, err := client.Exchange(message, address)
|
||||
in, _, err := client.Exchange(message, *addr)
|
||||
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
@ -125,9 +135,8 @@ func TestWhenCNAMEIsResolved(t *testing.T) {
|
|||
func TestWhenNoRecordNxDomain(t *testing.T) {
|
||||
t.Log("TestWhenNoRecordNxDomain")
|
||||
|
||||
testDb, server, _ := setup(testDBPath)
|
||||
defer destroy(testDb, testDBPath)
|
||||
defer server.Shutdown()
|
||||
_, _, _, addr, cleanup := setup()
|
||||
defer cleanup()
|
||||
|
||||
qtype := dns.TypeA
|
||||
domain := dns.Fqdn("nonexistant.example.com.")
|
||||
|
@ -135,7 +144,7 @@ func TestWhenNoRecordNxDomain(t *testing.T) {
|
|||
message := new(dns.Msg)
|
||||
message.SetQuestion(domain, qtype)
|
||||
|
||||
in, _, err := client.Exchange(message, address)
|
||||
in, _, err := client.Exchange(message, *addr)
|
||||
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
@ -153,9 +162,8 @@ func TestWhenNoRecordNxDomain(t *testing.T) {
|
|||
func TestWhenUnresolvingCNAME(t *testing.T) {
|
||||
t.Log("TestWhenUnresolvingCNAME")
|
||||
|
||||
testDb, server, _ := setup(testDBPath)
|
||||
defer destroy(testDb, testDBPath)
|
||||
defer server.Shutdown()
|
||||
testDb, _, _, addr, cleanup := setup()
|
||||
defer cleanup()
|
||||
|
||||
cname := &database.DNSRecord{
|
||||
ID: "1",
|
||||
|
@ -174,7 +182,7 @@ func TestWhenUnresolvingCNAME(t *testing.T) {
|
|||
message := new(dns.Msg)
|
||||
message.SetQuestion(domain, qtype)
|
||||
|
||||
in, _, err := client.Exchange(message, address)
|
||||
in, _, err := client.Exchange(message, *addr)
|
||||
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
@ -208,9 +216,8 @@ func TestWhenUnresolvingCNAME(t *testing.T) {
|
|||
func TestWhenUnresolvingCNAMEWithMaxDepth(t *testing.T) {
|
||||
t.Log("TestWhenUnresolvingCNAMEWithMaxDepth")
|
||||
|
||||
testDb, server, _ := setup(testDBPath)
|
||||
defer destroy(testDb, testDBPath)
|
||||
defer server.Shutdown()
|
||||
testDb, _, _, addr, cleanup := setup()
|
||||
defer cleanup()
|
||||
|
||||
cname := &database.DNSRecord{
|
||||
ID: "1",
|
||||
|
@ -229,7 +236,7 @@ func TestWhenUnresolvingCNAMEWithMaxDepth(t *testing.T) {
|
|||
message := new(dns.Msg)
|
||||
message.SetQuestion(domain, qtype)
|
||||
|
||||
in, _, err := client.Exchange(message, address)
|
||||
in, _, err := client.Exchange(message, *addr)
|
||||
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
|
Loading…
Reference in New Issue