Have random quotes in the footer

This commit is contained in:
Joakim Hellsén 2024-02-05 04:37:47 +01:00
commit 75000150bf
4 changed files with 113 additions and 3 deletions

200
validate_test.go Normal file
View file

@ -0,0 +1,200 @@
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
// URL starts with http://
func TestURLStartsWithHTTP(t *testing.T) {
url := "http://example.com"
err := validateURL(url)
assert.Nil(t, err)
}
// URL starts with https://
func TestURLStartsWithHTTPS(t *testing.T) {
url := "https://example.com"
err := validateURL(url)
assert.Nil(t, err)
}
// URL contains a valid domain
func TestURLContainsValidDomain(t *testing.T) {
url := "http://example.com"
err := validateURL(url)
assert.Nil(t, err)
}
// URL is empty
func TestURLEmpty(t *testing.T) {
url := ""
err := validateURL(url)
assert.NotNil(t, err)
assert.Equal(t, "URL must start with http:// or https://", err.Error())
}
// URL does not contain a domain
func TestURLNotNumbers(t *testing.T) {
url := "12345"
err := validateURL(url)
assert.NotNil(t, err)
assert.Equal(t, "URL must start with http:// or https://", err.Error())
}
// URL is not a valid URL
func TestURLNotValidURL(t *testing.T) {
url := "example.com"
err := validateURL(url)
assert.NotNil(t, err)
assert.Equal(t, "URL must start with http:// or https://", err.Error())
}
// Domain is resolvable
func TestDomainIsResolvable(t *testing.T) {
url := "http://example.com"
err := validateURL(url)
assert.Nil(t, err)
}
// Domain does not end with .local
func TestDomainDoesNotEndWithLocal(t *testing.T) {
url := "http://example.com"
err := validateURL(url)
assert.Nil(t, err)
}
// Domain is not localhost
func TestDomainIsNotLocalhost(t *testing.T) {
url := "http://example.com"
err := validateURL(url)
assert.Nil(t, err)
}
// Domain is not an IP address
func TestDomainIsNotIPAddress(t *testing.T) {
url := "http://example.com"
err := validateURL(url)
assert.Nil(t, err)
}
// URL is a file path
func TestURLIsFilePath(t *testing.T) {
url := "/path/to/file"
err := validateURL(url)
assert.NotNil(t, err)
assert.Equal(t, "URL must start with http:// or https://", err.Error())
}
// URL is a relative path
func TestURLIsRelativePath(t *testing.T) {
url := "/path/to/resource"
err := validateURL(url)
assert.NotNil(t, err)
assert.Equal(t, "URL must start with http:// or https://", err.Error())
}
// URL is a non-existent domain
func TestNonExistentDomainURL(t *testing.T) {
url := "http://jfsalksajlkfsajklfsajklfllfjffffkfsklslsksassflfskjlfjlfsjkalfsaf.com"
err := validateURL(url)
assert.NotNil(t, err)
assert.Equal(t, "failed to resolve domain", err.Error())
}
// URL is a malformed URL
func TestMalformedURL(t *testing.T) {
url := "malformedurl"
err := validateURL(url)
assert.NotNil(t, err)
assert.Equal(t, "URL must start with http:// or https://", err.Error())
}
// URL is a domain that does not support HTTP/HTTPS
func TestURLDomainNotSupportHTTP(t *testing.T) {
url := "ftp://example.com"
err := validateURL(url)
assert.NotNil(t, err)
assert.Equal(t, "URL must start with http:// or https://", err.Error())
}
// URL is an unreachable domain
func TestUnreachableDomain(t *testing.T) {
url := "http://fafsffsfsfsfsafsasafassfs.com"
err := validateURL(url)
assert.NotNil(t, err)
assert.Equal(t, "failed to resolve domain", err.Error())
}
// URL is an IP address
func TestURLIsIPAddress(t *testing.T) {
url := "http://84.55.107.42"
err := validateURL(url)
assert.NotNil(t, err)
assert.Equal(t, "IP address URLs are not allowed", err.Error())
}
// URL ends with .local
func TestURLEndsWithLocal(t *testing.T) {
url := "http://example.local"
err := validateURL(url)
assert.NotNil(t, err)
assert.Equal(t, "URLs ending with .local are not allowed", err.Error())
}
func TestLocalURLs(t *testing.T) {
localURLs := []string{
"https://localhost",
"https://home.arpa",
"https://airbox.home",
"https://airport",
"https://arcor.easybox",
"https://aterm.me",
"https://bthub.home",
"https://bthomehub.home",
"https://congstar.box",
"https://connect.box",
"https://console.gl-inet.com",
"https://easy.box",
"https://etxr",
"https://fire.walla",
"https://fritz.box",
"https://fritz.nas",
"https://fritz.repeater",
"https://giga.cube",
"https://hi.link",
"https://hitronhub.home",
"https://homerouter.cpe",
"https://huaweimobilewifi.com",
"https://localbattle.net",
"https://myfritz.box",
"https://mobile.hotspot",
"https://ntt.setup",
"https://pi.hole",
"https://plex.direct",
"https://repeater.asus.com",
"https://router.asus.com",
"https://routerlogin.com",
"https://routerlogin.net",
"https://samsung.router",
"https://speedport.ip",
"https://steamloopback.host",
"https://tplinkap.net",
"https://tplinkeap.net",
"https://tplinkmodem.net",
"https://tplinkplclogin.net",
"https://tplinkrepeater.net",
"https://tplinkwifi.net",
"https://web.setup",
"https://web.setup.home",
}
for _, localURL := range localURLs {
err := validateURL(localURL)
if err == nil {
t.Errorf("Expected an error for local URL %s, got nil", localURL)
}
assert.Equal(t, "local URLs are not allowed", err.Error())
}
}