mirror of
https://github.com/shadow1ng/fscan.git
synced 2026-09-22 03:10:42 +08:00
38 lines
854 B
Go
38 lines
854 B
Go
package web
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/shadow1ng/fscan/webscan/lib"
|
|
)
|
|
|
|
type faviconRoundTripper struct {
|
|
called bool
|
|
}
|
|
|
|
func (rt *faviconRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
|
|
rt.called = true
|
|
<-req.Context().Done()
|
|
return nil, req.Context().Err()
|
|
}
|
|
|
|
func TestFetchFaviconHashHonorsContext(t *testing.T) {
|
|
previous := lib.Client
|
|
rt := &faviconRoundTripper{}
|
|
lib.Client = &http.Client{Transport: rt}
|
|
defer func() { lib.Client = previous }()
|
|
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
cancel()
|
|
|
|
hashes := NewWebTitlePlugin().fetchFaviconHash(ctx, "http://example.com")
|
|
if !rt.called {
|
|
t.Fatal("favicon client was not called")
|
|
}
|
|
if len(hashes.MMH3) != 0 || len(hashes.MD5) != 0 {
|
|
t.Fatalf("fetchFaviconHash returned hashes for canceled context: %#v", hashes)
|
|
}
|
|
}
|