|
|
@@ -17,6 +17,7 @@ import (
|
|
|
"time"
|
|
|
|
|
|
"github.com/google/go-cmp/cmp"
|
|
|
+ "github.com/google/go-cmp/cmp/cmpopts"
|
|
|
"tailscale.com/tstest"
|
|
|
"tailscale.com/util/must"
|
|
|
"tailscale.com/util/vizerror"
|
|
|
@@ -485,8 +486,15 @@ func TestStdHandler(t *testing.T) {
|
|
|
Step: time.Second,
|
|
|
})
|
|
|
|
|
|
+ var onStartRecord, onCompletionRecord AccessLogRecord
|
|
|
rec := noopHijacker{httptest.NewRecorder(), false}
|
|
|
- h := StdHandler(test.rh, HandlerOptions{Logf: logf, Now: clock.Now, OnError: test.errHandler})
|
|
|
+ h := StdHandler(test.rh, HandlerOptions{
|
|
|
+ Logf: logf,
|
|
|
+ Now: clock.Now,
|
|
|
+ OnError: test.errHandler,
|
|
|
+ OnStart: func(r *http.Request, alr AccessLogRecord) { onStartRecord = alr },
|
|
|
+ OnCompletion: func(r *http.Request, alr AccessLogRecord) { onCompletionRecord = alr },
|
|
|
+ })
|
|
|
h.ServeHTTP(&rec, test.r)
|
|
|
res := rec.Result()
|
|
|
if res.StatusCode != test.wantCode {
|
|
|
@@ -502,6 +510,13 @@ func TestStdHandler(t *testing.T) {
|
|
|
}
|
|
|
return e.Error()
|
|
|
})
|
|
|
+ if diff := cmp.Diff(onStartRecord, test.wantLog, errTransform, cmpopts.IgnoreFields(
|
|
|
+ AccessLogRecord{}, "Time", "Seconds", "Code", "Err")); diff != "" {
|
|
|
+ t.Errorf("onStart callback returned unexpected request log (-got+want):\n%s", diff)
|
|
|
+ }
|
|
|
+ if diff := cmp.Diff(onCompletionRecord, test.wantLog, errTransform); diff != "" {
|
|
|
+ t.Errorf("onCompletion callback returned incorrect request log (-got+want):\n%s", diff)
|
|
|
+ }
|
|
|
if diff := cmp.Diff(logs[0], test.wantLog, errTransform); diff != "" {
|
|
|
t.Errorf("handler wrote incorrect request log (-got+want):\n%s", diff)
|
|
|
}
|