@@ -8,17 +8,19 @@ import (
88 "encoding/json"
99 "fmt"
1010 "io"
11+ "log"
1112 "math"
1213 "net/http"
1314 "net/http/httptest"
1415 "net/url"
1516 "os"
17+ "strings"
1618 "sync"
1719 "testing"
1820
1921 "github.com/buchgr/bazel-remote/v2/cache"
2022 "github.com/buchgr/bazel-remote/v2/cache/disk"
21- "github.com/buchgr/bazel-remote/v2/utils"
23+ testutils "github.com/buchgr/bazel-remote/v2/utils"
2224
2325 pb "github.com/buchgr/bazel-remote/v2/genproto/build/bazel/remote/execution/v2"
2426 "google.golang.org/protobuf/proto"
@@ -564,3 +566,35 @@ func TestManglingACKeys(t *testing.T) {
564566 t .Errorf ("Wrong status code, expected %d, got %d" , http .StatusNotFound , statusCode )
565567 }
566568}
569+
570+ func TestResponseLog (t * testing.T ) {
571+ cacheDir := testutils .TempDir (t )
572+ defer func () { _ = os .RemoveAll (cacheDir ) }()
573+
574+ blobSize := int64 (1024 )
575+
576+ data , hash := testutils .RandomDataAndHash (blobSize )
577+
578+ // Add some overhead for likely CAS blob storage expansion.
579+ cacheSize := blobSize * 2 + disk .BlockSize
580+
581+ c , err := disk .New (cacheDir , cacheSize , disk .WithAccessLogger (testutils .NewSilentLogger ()))
582+ if err != nil {
583+ t .Fatal (err )
584+ }
585+ var w bytes.Buffer
586+ logger := log .New (& w , "bz-remote" , 0 )
587+ h := NewHTTPCache (c , logger , testutils .NewSilentLogger (), true , false , false , false , "" , "" , math .MaxInt64 )
588+
589+ rr := httptest .NewRecorder ()
590+ handler := http .HandlerFunc (h .CacheHandler )
591+
592+ pr := httptest .NewRequest ("PUT" , "/cas/" + hash , bytes .NewReader (data ))
593+ pr .Header .Add ("X-Forwarded-For" , "10.11.12.13" )
594+ handler .ServeHTTP (rr , pr )
595+
596+ logLine := w .String ()
597+ if ! strings .Contains (logLine , "10.11.12.13" ) {
598+ t .Errorf ("expected logged IP to use X-Forwarded-For header but saw `%s`" , logLine )
599+ }
600+ }
0 commit comments