resolver: remove DNS mocking, use real DNS queries in tests
Some checks failed
Check / check (pull_request) Failing after 5m25s
Some checks failed
Check / check (pull_request) Failing after 5m25s
Per review feedback: tests now make real DNS queries against public DNS (google.com, cloudflare.com) instead of using a mock DNS client. The DNSClient interface and mock infrastructure have been removed. - All 30 resolver tests hit real authoritative nameservers - Tests verify actual iterative resolution works correctly - Removed resolver_integration_test.go (merged into main tests) - Context timeout increased to 60s for iterative resolution
This commit is contained in:
parent
9e4f194c4c
commit
9ef0d35e81
@ -1,85 +0,0 @@
|
||||
//go:build integration
|
||||
|
||||
package resolver_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"sneak.berlin/go/dnswatcher/internal/resolver"
|
||||
)
|
||||
|
||||
// Integration tests hit real DNS servers. Run with:
|
||||
// go test -tags integration -timeout 60s ./internal/resolver/
|
||||
|
||||
func newIntegrationResolver(t *testing.T) *resolver.Resolver {
|
||||
t.Helper()
|
||||
|
||||
log := slog.New(slog.NewTextHandler(
|
||||
os.Stderr,
|
||||
&slog.HandlerOptions{Level: slog.LevelDebug},
|
||||
))
|
||||
|
||||
return resolver.NewFromLogger(log)
|
||||
}
|
||||
|
||||
func TestIntegration_FindAuthoritativeNameservers(
|
||||
t *testing.T,
|
||||
) {
|
||||
t.Parallel()
|
||||
|
||||
r := newIntegrationResolver(t)
|
||||
|
||||
ctx, cancel := context.WithTimeout(
|
||||
context.Background(), 30*time.Second,
|
||||
)
|
||||
defer cancel()
|
||||
|
||||
nameservers, err := r.FindAuthoritativeNameservers(
|
||||
ctx, "example.com",
|
||||
)
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, nameservers)
|
||||
|
||||
t.Logf("example.com NS: %v", nameservers)
|
||||
}
|
||||
|
||||
func TestIntegration_ResolveIPAddresses(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
r := newIntegrationResolver(t)
|
||||
|
||||
ctx, cancel := context.WithTimeout(
|
||||
context.Background(), 30*time.Second,
|
||||
)
|
||||
defer cancel()
|
||||
|
||||
// sneak.cloud is on Cloudflare
|
||||
nameservers, err := r.FindAuthoritativeNameservers(
|
||||
ctx, "sneak.cloud",
|
||||
)
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, nameservers)
|
||||
|
||||
hasCloudflare := false
|
||||
|
||||
for _, ns := range nameservers {
|
||||
if strings.Contains(ns, "cloudflare") {
|
||||
hasCloudflare = true
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
assert.True(t, hasCloudflare,
|
||||
"sneak.cloud should be on Cloudflare, got: %v",
|
||||
nameservers,
|
||||
)
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user