yellow~ opinionated web scanning pipeline for pentesters in a hurry |
| git clone https://github.com/djnnvx/yellow.git |
| log | files | refs | archive | README | LICENSE |
robotstxt_test.go (1794B)
1 package scan 2 3 import ( 4 "net/http" 5 "net/http/httptest" 6 "os" 7 "testing" 8 9 "evil.djnn.sh/djnn/yellow/core" 10 ) 11 12 const robotsBody = "User-agent: *\nDisallow: /admin\nDisallow: /backup\n" 13 14 func TestRobotsTxtSavesBody(t *testing.T) { 15 srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 16 _, _ = w.Write([]byte(robotsBody)) 17 })) 18 defer srv.Close() 19 20 dir := t.TempDir() 21 if err := (&RobotsTxt{}).Run(&core.Context{Domain: srv.URL, ScanPath: dir}); err != nil { 22 t.Fatalf("Run returned %v", err) 23 } 24 25 got, err := os.ReadFile(dir + "/robots.txt") 26 if err != nil { 27 t.Fatalf("robots.txt not written: %v", err) 28 } 29 if string(got) != robotsBody { 30 t.Errorf("got %q, want %q", got, robotsBody) 31 } 32 } 33 34 func TestRobotsTxt404WritesNothing(t *testing.T) { 35 srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 36 http.NotFound(w, r) 37 })) 38 defer srv.Close() 39 40 dir := t.TempDir() 41 if err := (&RobotsTxt{}).Run(&core.Context{Domain: srv.URL, ScanPath: dir}); err != nil { 42 t.Fatalf("Run returned %v", err) 43 } 44 45 if _, err := os.Stat(dir + "/robots.txt"); !os.IsNotExist(err) { 46 t.Error("404 left a robots.txt behind") 47 } 48 } 49 50 func TestSitemapSavesBody(t *testing.T) { 51 const body = `<?xml version="1.0"?><urlset><url><loc>https://x/a</loc></url></urlset>` 52 53 srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 54 _, _ = w.Write([]byte(body)) 55 })) 56 defer srv.Close() 57 58 dir := t.TempDir() 59 if err := (&Sitemap{}).Run(&core.Context{Domain: srv.URL, ScanPath: dir}); err != nil { 60 t.Fatalf("Run returned %v", err) 61 } 62 63 got, err := os.ReadFile(dir + "/sitemap.xml") 64 if err != nil { 65 t.Fatalf("sitemap.xml not written: %v", err) 66 } 67 if string(got) != body { 68 t.Errorf("got %q, want %q", got, body) 69 } 70 }