Merge pull request #46548 from timstclair/audit-policy

Automatic merge from submit-queue

Fix audit level none

... and add a testcase for it

https://github.com/kubernetes/features/issues/22

/cc @sttts @ericchiang
This commit is contained in:
Kubernetes Submit Queue 2017-05-29 02:38:34 -07:00 committed by GitHub
commit a673d99731
2 changed files with 22 additions and 4 deletions

View File

@ -71,6 +71,7 @@ func WithAudit(handler http.Handler, requestContextMapper request.RequestContext
if level == auditinternal.LevelNone { if level == auditinternal.LevelNone {
// Don't audit. // Don't audit.
handler.ServeHTTP(w, req) handler.ServeHTTP(w, req)
return
} }
ev, err := audit.NewEventFromRequest(req, level, attribs) ev, err := audit.NewEventFromRequest(req, level, attribs)

View File

@ -333,15 +333,12 @@ func TestAudit(t *testing.T) {
req, _ := http.NewRequest("GET", test.path, nil) req, _ := http.NewRequest("GET", test.path, nil)
req.RemoteAddr = "127.0.0.1" req.RemoteAddr = "127.0.0.1"
done := make(chan struct{}) func() {
go func() {
defer func() { defer func() {
recover() recover()
close(done)
}() }()
handler.ServeHTTP(httptest.NewRecorder(), req) handler.ServeHTTP(httptest.NewRecorder(), req)
}() }()
<-done
t.Logf("[%s] audit log: %v", test.desc, buf.String()) t.Logf("[%s] audit log: %v", test.desc, buf.String())
@ -394,3 +391,23 @@ func TestAuditNoPanicOnNilUser(t *testing.T) {
req.RemoteAddr = "127.0.0.1" req.RemoteAddr = "127.0.0.1"
handler.ServeHTTP(httptest.NewRecorder(), req) handler.ServeHTTP(httptest.NewRecorder(), req)
} }
func TestAuditLevelNone(t *testing.T) {
sink := &fakeAuditSink{}
var handler http.Handler
handler = http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
w.WriteHeader(200)
})
policyChecker := policy.FakeChecker(auditinternal.LevelNone)
handler = WithAudit(handler, &fakeRequestContextMapper{
user: &user.DefaultInfo{Name: "admin"},
}, sink, policyChecker, nil)
req, _ := http.NewRequest("GET", "/api/v1/namespaces/default/pods", nil)
req.RemoteAddr = "127.0.0.1"
handler.ServeHTTP(httptest.NewRecorder(), req)
if len(sink.events) > 0 {
t.Errorf("Generated events, but should not have: %#v", sink.events)
}
}