Skip to content

Commit

Permalink
Merge pull request #9 from pabateman/feature/lookuper-tests
Browse files Browse the repository at this point in the history
Lookuper tests
  • Loading branch information
pabateman authored Dec 16, 2024
2 parents de1b6e3 + 8399128 commit 33259b9
Show file tree
Hide file tree
Showing 12 changed files with 213 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,6 @@ testdata/output/*
dns-lookuper
out/
!out/.gitkeep

testdata/lookuper/output/*
!testdata/lookuper/output/.gitkeep
2 changes: 1 addition & 1 deletion internal/lookuper/lookuper.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ func Lookup(clictx *cli.Context) error {
func daemonMode(config *config) error {
intervalDuration, err := time.ParseDuration(config.Settings.DaemonSettings.Interval)
if err != nil {
return err
return fmt.Errorf("error while parsing lookup interval: %+v", err)
}

ticker := time.NewTicker(intervalDuration)
Expand Down
185 changes: 185 additions & 0 deletions internal/lookuper/lookuper_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
package lookuper

import (
"fmt"
"os"
"path"
"testing"

"github.com/stretchr/testify/require"
)

var (
outputDirectory = "../../testdata/lookuper/output"
listsDirectory = "../../testdata/lookuper/lists"
expectedContentDirectory = "../../testdata/lookuper/expected"
)

func getFilesAsString(paths ...string) ([]string, error) {
result := make([]string, 0)

for _, path := range paths {

file, err := os.ReadFile(path)
if err != nil {
return nil, fmt.Errorf("error while opening file: %v", err)
}
result = append(result, string(file))
}

return result, nil
}

func TestTaskBasic(t *testing.T) {
output := path.Join(outputDirectory, "actual-basic.txt")

settings := &settings{
LookupTimeout: "15s",
Fail: false,
}

task := &task{
Files: []string{
path.Join(listsDirectory, "basic.lst"),
},
Output: output,
}

err := performTask(task, settings)
require.Nil(t, err)

expected, err := getFilesAsString(path.Join(expectedContentDirectory, "basic-list.txt"))
require.Nil(t, err)

actual, err := getFilesAsString(output)
require.Nil(t, err)

require.Equal(t, expected, actual)

err = os.Remove(output)
require.Nil(t, err)
}

func TestTaskMultiple(t *testing.T) {
outputs := []string{
path.Join(outputDirectory, "actual-multiple-01.txt"),
path.Join(outputDirectory, "actual-multiple-02.txt"),
}

inputs := []string{
path.Join(listsDirectory, "basic.lst"),
path.Join(listsDirectory, "multiple-01.lst"),
path.Join(listsDirectory, "multiple-02.lst"),
}

expecteds := []string{
path.Join(expectedContentDirectory, "multiple-01.txt"),
path.Join(expectedContentDirectory, "multiple-02.txt"),
}

config := &config{
Settings: &settings{
LookupTimeout: "15s",
Fail: false,
},

Tasks: []task{
{
Files: inputs[:2],
Output: outputs[0],
},
{
Files: inputs[2:],
Output: outputs[1],
},
},
}

err := walkTasks(config)
require.Nil(t, err)

actual, err := getFilesAsString(outputs...)
require.Nil(t, err)

expected, err := getFilesAsString(expecteds...)
require.Nil(t, err)

require.Equal(t, expected, actual)

config.Settings.Fail = true
err = walkTasks(config)
require.NotNil(t, err)

for _, output := range outputs {
err = os.Remove(output)
require.Nil(t, err)
}
}

func TestTaskFails(t *testing.T) {
output := path.Join(outputDirectory, "actual-multiple-02.txt")
input := path.Join(listsDirectory, "multiple-02.lst")

config := &config{
Settings: &settings{
LookupTimeout: "15s",
Fail: false,
},

Tasks: []task{
{
Files: []string{input},
Output: output,
},
},
}

err := walkTasks(config)
require.Nil(t, err)

expected, err := getFilesAsString(path.Join(expectedContentDirectory, "multiple-02.txt"))
require.Nil(t, err)

actual, err := getFilesAsString(output)
require.Nil(t, err)

require.Equal(t, expected, actual)

config.Settings.Fail = true
err = walkTasks(config)
require.NotNil(t, err)

config.Settings.Fail = false
err = walkTasks(config)
require.Nil(t, err)

config.Settings.LookupTimeout = "1"
err = walkTasks(config)
require.NotNil(t, err)

config.Settings.LookupTimeout = "15s"
err = walkTasks(config)
require.Nil(t, err)

inputNxdomain := path.Join(listsDirectory, "inputnxdomain.lst")
outputNxdomainPath := path.Join(outputDirectory, "outputnxdomain.lst")
expectedNxdomainPath := path.Join(expectedContentDirectory, "stub")

config.Tasks[0].Files = []string{inputNxdomain}
config.Tasks[0].Output = outputNxdomainPath

err = walkTasks(config)
require.Nil(t, err)

actualNxdomain, err := getFilesAsString(outputNxdomainPath)
require.Nil(t, err)

expectedNxdomain, err := getFilesAsString(expectedNxdomainPath)
require.Nil(t, err)

require.Equal(t, expectedNxdomain, actualNxdomain)

config.Settings.Fail = true
err = walkTasks(config)
require.NotNil(t, err)
}
2 changes: 2 additions & 0 deletions testdata/lookuper/expected/basic-list.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
139.178.84.217
192.0.43.8
3 changes: 3 additions & 0 deletions testdata/lookuper/expected/multiple-01.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
139.178.84.217
192.0.43.8
76.76.21.21
2 changes: 2 additions & 0 deletions testdata/lookuper/expected/multiple-02.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
23.185.0.3
35.186.224.24
Empty file added testdata/lookuper/expected/stub
Empty file.
4 changes: 4 additions & 0 deletions testdata/lookuper/lists/basic.lst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# The comments
iana.org # is
kernel.org #every
# where foo.kernel.org
2 changes: 2 additions & 0 deletions testdata/lookuper/lists/inputnxdomain.lst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
foo.kernel.org
baz.iana.org
2 changes: 2 additions & 0 deletions testdata/lookuper/lists/multiple-01.lst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
terraform.io hashicorp.com
invalid$name
9 changes: 9 additions & 0 deletions testdata/lookuper/lists/multiple-02.lst
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
spotify.com
cncf.io






another/invalid/name
Empty file.

0 comments on commit 33259b9

Please sign in to comment.