summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dockerignore1
-rw-r--r--test/dns_test.go63
2 files changed, 36 insertions, 28 deletions
diff --git a/.dockerignore b/.dockerignore
index 52be0d9..6045466 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -2,3 +2,4 @@
hatecomputers.club
Dockerfile
*.db
+.drone.yml
diff --git a/test/dns_test.go b/test/dns_test.go
index ce6deb5..55bb060 100644
--- a/test/dns_test.go
+++ b/test/dns_test.go
@@ -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 randomPort() int {
+ return rand.Intn(3000) + 10000
+}
-func setup(dbPath string) (*sql.DB, *dns.Server, *sync.WaitGroup) {
- testDb := database.MakeConn(&dbPath)
+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)