github.com/xmidt-org/webpa-common@v1.11.9/bookkeeping/bookkeeper_test.go (about) 1 package bookkeeping 2 3 import ( 4 "net/http" 5 "net/http/httptest" 6 "testing" 7 8 gokithttp "github.com/go-kit/kit/transport/http" 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11 "github.com/xmidt-org/webpa-common/logging" 12 "github.com/xmidt-org/webpa-common/logging/logginghttp" 13 "github.com/xmidt-org/webpa-common/xhttp/xcontext" 14 ) 15 16 func TestEmptyBookkeeper(t *testing.T) { 17 var ( 18 assert = assert.New(t) 19 require = require.New(t) 20 transactorCalled = false 21 22 bookkeeper = New() 23 logger = logging.NewCaptureLogger() 24 ) 25 require.NotNil(bookkeeper) 26 req := httptest.NewRequest("GET", "/", nil) 27 req = req.WithContext(logging.WithLogger(req.Context(), logger)) 28 29 handler := http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) { 30 transactorCalled = true 31 writer.Write([]byte("payload")) 32 writer.WriteHeader(200) 33 }) 34 rr := httptest.NewRecorder() 35 36 bookkeeper(handler).ServeHTTP(rr, req) 37 assert.True(transactorCalled) 38 39 select { 40 case result := <-logger.Output(): 41 assert.Len(result, 4) 42 default: 43 assert.Fail("CaptureLogger must capture something") 44 45 } 46 } 47 48 func TestBookkeeper(t *testing.T) { 49 var ( 50 assert = assert.New(t) 51 require = require.New(t) 52 transactorCalled = false 53 54 bookkeeper = New(WithResponses(Code)) 55 logger = logging.NewCaptureLogger() 56 ) 57 58 require.NotNil(bookkeeper) 59 req := httptest.NewRequest("GET", "/", nil) 60 61 req = req.WithContext(logging.WithLogger(req.Context(), logger)) 62 63 rr := httptest.NewRecorder() 64 65 customLogInfo := xcontext.Populate( 66 logginghttp.SetLogger(logger, 67 logginghttp.RequestInfo, 68 ), 69 gokithttp.PopulateRequestContext, 70 ) 71 72 handler := http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) { 73 transactorCalled = true 74 writer.Write([]byte("payload")) 75 writer.WriteHeader(200) 76 }) 77 78 bookkeeper(customLogInfo(handler)).ServeHTTP(rr, req) 79 80 assert.True(transactorCalled) 81 82 select { 83 case result := <-logger.Output(): 84 assert.Len(result, 8) 85 assert.Equal(req.RequestURI, result["requestURI"]) 86 assert.Equal(200, result["code"]) 87 default: 88 assert.Fail("CaptureLogger must capture something") 89 90 } 91 }