github.com/hellofresh/janus@v0.0.0-20230925145208-ce8de8183c67/pkg/middleware/debug_trace_test.go (about)

     1  package middleware
     2  
     3  import (
     4  	"net/http"
     5  	"net/http/httptest"
     6  	"testing"
     7  
     8  	"github.com/magiconair/properties/assert"
     9  	"go.opencensus.io/plugin/ochttp/propagation/b3"
    10  )
    11  
    12  func TestDebugTrace(t *testing.T) {
    13  	format := &b3.HTTPFormat{}
    14  
    15  	testHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {})
    16  
    17  	tests := []struct {
    18  		testName            string
    19  		debugHeader         string
    20  		expectedTraceHeader bool
    21  	}{
    22  		{
    23  			testName:            "'X-Debug-Trace: secret-key' produces response debug header",
    24  			debugHeader:         "secret-key",
    25  			expectedTraceHeader: true,
    26  		},
    27  		{
    28  			testName:            "'X-Debug-Trace: 0' does not produce response debug header",
    29  			debugHeader:         "0",
    30  			expectedTraceHeader: false,
    31  		},
    32  		{
    33  			testName:            "'X-Debug-Trace: true' does not response debug header",
    34  			debugHeader:         "true",
    35  			expectedTraceHeader: false,
    36  		},
    37  		{
    38  			testName:            "'X-Debug-Trace: ' does not produce response debug header",
    39  			debugHeader:         "",
    40  			expectedTraceHeader: false,
    41  		},
    42  	}
    43  
    44  	middleware := DebugTrace(format, "secret-key")
    45  
    46  	for _, test := range tests {
    47  		req, _ := http.NewRequest("GET", "http://hello-world", nil)
    48  		req.Header.Add("X-Debug-Trace", test.debugHeader)
    49  
    50  		rr := httptest.NewRecorder()
    51  		middleware(testHandler).ServeHTTP(rr, req)
    52  		hasDebugHeader := rr.Header().Get("X-Debug-Trace") != ""
    53  		assert.Equal(t, hasDebugHeader, test.expectedTraceHeader, test.testName)
    54  	}
    55  }