40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
package app
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestBrowserFetchDomainAllowedMatchesSubdomain(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
if !browserFetchDomainAllowed("https://mbd.baidu.com/bh/m/detail/ar_10234112381636647949", []string{"baidu.com"}) {
|
|
t.Fatalf("expected baidu.com to allow mbd.baidu.com")
|
|
}
|
|
if browserFetchDomainAllowed("https://notbaidu.com/article", []string{"baidu.com"}) {
|
|
t.Fatalf("expected baidu.com not to allow notbaidu.com")
|
|
}
|
|
}
|
|
|
|
func TestClassifiedSourceFetchErrorIncludesBrowserFallbackFailure(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
err := classifySourceFetchError("https://mbd.baidu.com/article", fmt.Errorf(
|
|
"webpage parser failed: status=%d body=invalid link; browser fetch fallback failed: domain is not allowed",
|
|
http.StatusInternalServerError,
|
|
))
|
|
|
|
message := err.Error()
|
|
for _, expected := range []string{
|
|
"source website fetch restricted status=500",
|
|
"webpage parser failed",
|
|
"browser fetch fallback failed: domain is not allowed",
|
|
} {
|
|
if !strings.Contains(message, expected) {
|
|
t.Fatalf("classified error = %q, want %q", message, expected)
|
|
}
|
|
}
|
|
}
|