1
0
Fork 0
golang-github-twin-whois/whois_test.go
Daniel Baumann 504a5578e5
Adding upstream version 1.1.10.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-05-17 06:08:25 +02:00

148 lines
3.1 KiB
Go

package whois
import (
"strings"
"testing"
"time"
)
func TestClient(t *testing.T) {
scenarios := []struct {
domain string
wantErr bool
}{
{
domain: "name.com",
wantErr: false,
},
{
domain: "name.org",
wantErr: false,
},
{
domain: "name.net",
wantErr: false,
},
{
domain: "name.sh",
wantErr: false,
},
{
domain: "name.io",
wantErr: false,
},
{
domain: "get.dev",
wantErr: false,
},
{
domain: "name.red",
wantErr: false,
},
{
domain: "name.green",
wantErr: false,
},
{
domain: "color.black",
wantErr: false,
},
{
domain: "name.cn",
wantErr: false,
},
{
domain: "name.de",
wantErr: true,
},
{
domain: "google.com.br", // name.com.br is handled weirdly by whois.registro.br, so we'll use this instead
wantErr: false,
},
{
domain: "name.ua",
wantErr: false,
},
{
domain: "name.pp.ua",
wantErr: false,
},
{
domain: "name.co.uk",
wantErr: false,
},
{
domain: "name.cz",
wantErr: false,
},
{
domain: "name.me",
wantErr: false,
},
{
domain: "name.im",
wantErr: false,
},
{
domain: "name.uk",
wantErr: false,
},
{
domain: "dot.scot", // name.scot not registered
wantErr: false,
},
{
domain: "name.ru", // expiration date in `paid-till` field
wantErr: false,
},
{
domain: "register.su", // expiration date in `paid-till` field
wantErr: false,
},
{
domain: "nic.mx",
wantErr: false,
},
}
client := NewClient().WithReferralCache(true)
for _, scenario := range scenarios {
t.Run(scenario.domain+"_Query", func(t *testing.T) {
output, err := client.Query(scenario.domain)
if scenario.wantErr && err == nil {
t.Error("expected error, got none")
t.FailNow()
}
if !scenario.wantErr {
if err != nil {
t.Error("expected no error, got", err.Error())
}
if !strings.Contains(strings.ToLower(output), scenario.domain) {
t.Errorf("expected %s in output, got %s", scenario.domain, output)
}
}
})
time.Sleep(50 * time.Millisecond) // Give the WHOIS servers some breathing room
t.Run(scenario.domain+"_QueryAndParse", func(t *testing.T) {
response, err := client.QueryAndParse(scenario.domain)
if scenario.wantErr && err == nil {
t.Error("expected error, got none")
t.FailNow()
}
if !scenario.wantErr {
if err != nil {
t.Error("expected no error, got", err.Error(), "for domain", scenario.domain)
}
if response.ExpirationDate.Unix() <= 0 {
t.Error("expected to have a valid expiry date, got", response.ExpirationDate.Unix(), "for domain", scenario.domain)
}
if len(response.NameServers) == 0 {
t.Errorf("expected to have at least one name server for domain %s", scenario.domain)
}
if len(response.DomainStatuses) == 0 && !strings.HasSuffix(scenario.domain, ".im") && !strings.HasSuffix(scenario.domain, ".mx") && !strings.HasSuffix(scenario.domain, ".cz") {
t.Errorf("expected to have at least one domain status for domain %s", scenario.domain)
}
}
})
time.Sleep(50 * time.Millisecond) // Give the WHOIS servers some breathing room
}
}