Skip to content
Snippets Groups Projects
Select Git revision
  • eddb4a7a259f55b8d413d4ff365312f9ca5a4460
  • master default
  • renovate/github.com-jhillyerd-enmime-2.x
  • renovate/go-1.x
  • renovate/golang.org-x-sync-0.x
  • renovate/github.com-prometheus-client_golang-1.x
6 results

collector_test.go

Blame
  • collector_test.go 8.55 KiB
    package reportscollector
    
    import (
    	"io/ioutil"
    	"net/http"
    	"net/http/httptest"
    	"path/filepath"
    	"strings"
    	"testing"
    
    	"github.com/chrj/smtpd"
    )
    
    type countingSink struct {
    	counter int
    }
    
    func (c *countingSink) Send(e Event) {
    	c.counter++
    }
    
    func (c *countingSink) reset() { c.counter = 0 }
    
    func createTestCollector() (*countingSink, string, func()) {
    	sink := new(countingSink)
    	c := NewCollector(
    		sink,
    		new(ReportHandler),
    		new(TLSRPTHandler),
    		new(LegacyCSPHandler),
    		new(DMARCHandler),
    	)
    	srv := httptest.NewServer(c)
    	return sink, srv.URL, func() {
    		srv.Close()
    	}
    }
    
    func doRequest(t *testing.T, uri, contentType, data string) {
    	req, err := http.NewRequest("POST", uri, strings.NewReader(data))
    	if err != nil {
    		t.Fatalf("NewRequest failed: %v", err)
    	}
    	req.Header.Set("Content-Type", contentType)
    	client := new(http.Client)
    	resp, err := client.Do(req)
    	if err != nil {
    		t.Fatalf("request failed: %v", err)
    	}
    	defer resp.Body.Close()
    	if resp.StatusCode >= 300 {
    		t.Fatalf("request failed with status %d: %s", resp.StatusCode, resp.Status)
    	}
    }
    
    var reportsTestData = `[{
      "type": "csp",
      "age": 10,
      "url": "https://example.com/vulnerable-page/",
      "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0",
      "body": {
        "blocked": "https://evil.com/evil.js",
        "directive": "script-src",
        "policy": "script-src 'self'; object-src 'none'",
        "status": 200,
        "referrer": "https://evil.com/"
      }
    }, {
      "type": "hpkp",
      "age": 32,