github.com/oinume/lekcije@v0.0.0-20231017100347-5b4c5eb6ab24/backend/interface/http/ga_measurement_test.go (about)

     1  package http
     2  
     3  import (
     4  	"net/http"
     5  	"net/http/httptest"
     6  	"reflect"
     7  	"testing"
     8  
     9  	"github.com/oinume/lekcije/backend/model2"
    10  )
    11  
    12  func TestNewGAMeasurementEventFromRequest(t *testing.T) {
    13  	const (
    14  		userAgent  = "go-test"
    15  		ipOverride = "1.1.1.1"
    16  	)
    17  	tests := map[string]struct {
    18  		request *http.Request
    19  		want    *model2.GAMeasurementEvent
    20  	}{
    21  		"normal": {
    22  			request: httptest.NewRequest("POST", "http://localhost/event", nil),
    23  			want: &model2.GAMeasurementEvent{
    24  				UserAgentOverride: userAgent,
    25  				ClientID:          "",
    26  				DocumentHostName:  "localhost",
    27  				DocumentPath:      "/event",
    28  				DocumentTitle:     "/event",
    29  				DocumentReferrer:  "",
    30  				IPOverride:        ipOverride,
    31  			},
    32  		},
    33  	}
    34  	for name, test := range tests {
    35  		test.request.Header.Set("User-Agent", userAgent)
    36  		test.request.Header.Set("X-Forwarded-For", ipOverride)
    37  		t.Run(name, func(t *testing.T) {
    38  			if got := newGAMeasurementEventFromRequest(test.request); !reflect.DeepEqual(got, test.want) {
    39  				t.Errorf("newGAMeasurementEventFromRequest() = %v, want %v", got, test.want)
    40  			}
    41  		})
    42  	}
    43  }