mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 20:11:19 -04:00
Modified log scrubber to handle split lines
Log scrubber now scrubs addresses even in the case where they are split across calls to the scrubber's output io.Writer. Added test cases to test that the writer behaves correctly across split lines.
This commit is contained in:
parent
1ea467c4cf
commit
c6a4a4191f
2 changed files with 66 additions and 5 deletions
|
@ -50,7 +50,50 @@ func TestClientAddr(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestLogScrubber(t *testing.T) {
|
||||
//Check to make sure that addresses split across calls to write are still scrubbed
|
||||
func TestLogScrubberSplit(t *testing.T) {
|
||||
input := []byte("test\nhttp2: panic serving [2620:101:f000:780:9097:75b1:519f:dbb8]:58344: interface conversion: *http2.responseWriter is not http.Hijacker: missing method Hijack\n")
|
||||
|
||||
expected := "test\nhttp2: panic serving [scrubbed]:58344: interface conversion: *http2.responseWriter is not http.Hijacker: missing method Hijack\n"
|
||||
|
||||
var buff bytes.Buffer
|
||||
scrubber := &logScrubber{output: &buff}
|
||||
n, err := scrubber.Write(input[:12]) //test\nhttp2:
|
||||
if n != 12 {
|
||||
t.Errorf("wrong number of bytes %d", n)
|
||||
}
|
||||
if err != nil {
|
||||
t.Errorf("%q", err)
|
||||
}
|
||||
if buff.String() != "test\n" {
|
||||
t.Errorf("Got %q, expected %q", buff.String(), "test\n")
|
||||
}
|
||||
|
||||
n, err = scrubber.Write(input[12:30]) //panic serving [2620:101:f
|
||||
if n != 18 {
|
||||
t.Errorf("wrong number of bytes %d", n)
|
||||
}
|
||||
if err != nil {
|
||||
t.Errorf("%q", err)
|
||||
}
|
||||
if buff.String() != "test\n" {
|
||||
t.Errorf("Got %q, expected %q", buff.String(), "test\n")
|
||||
}
|
||||
|
||||
n, err = scrubber.Write(input[30:]) //000:780:9097:75b1:519f:dbb8]:58344: interface conversion: *http2.responseWriter is not http.Hijacker: missing method Hijack\n
|
||||
if n != (len(input) - 30) {
|
||||
t.Errorf("wrong number of bytes %d", n)
|
||||
}
|
||||
if err != nil {
|
||||
t.Errorf("%q", err)
|
||||
}
|
||||
if buff.String() != expected {
|
||||
t.Errorf("Got %q, expected %q", buff.String(), expected)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestLogScrubberFormats(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
input, expected string
|
||||
}{
|
||||
|
@ -98,7 +141,7 @@ func TestLogScrubber(t *testing.T) {
|
|||
} {
|
||||
var buff bytes.Buffer
|
||||
log.SetFlags(0) //remove all extra log output for test comparisons
|
||||
log.SetOutput(&logScrubber{&buff})
|
||||
log.SetOutput(&logScrubber{output: &buff})
|
||||
log.Print(test.input)
|
||||
if buff.String() != test.expected {
|
||||
t.Errorf("%q: got %q, expected %q", test.input, buff.String(), test.expected)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue