package sources import ( "context" "net/http" "net/http/httptest" "testing" "time" "github.com/salvacybersec/keyhunter/pkg/providers" "github.com/salvacybersec/keyhunter/pkg/recon" ) func TestNotion_Name(t *testing.T) { s := &NotionSource{} if s.Name() != "notion" { t.Fatalf("expected notion, got %s", s.Name()) } } func TestNotion_Enabled(t *testing.T) { s := &NotionSource{} if !s.Enabled(recon.Config{}) { t.Fatal("NotionSource should always be enabled (credentialless)") } } func TestNotion_Sweep(t *testing.T) { mux := http.NewServeMux() // Mock search endpoint returning a Notion page URL. mux.HandleFunc("/search", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") _, _ = w.Write([]byte(`{"results":[{"url":"` + "http://" + r.Host + `/page/abc123","title":"API Keys"}]}`)) }) // Mock page content with a leaked key. mux.HandleFunc("/page/abc123", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/html") _, _ = w.Write([]byte(`