github.com/avenga/couper@v1.12.2/server/cookies_test.go (about)

     1  package server_test
     2  
     3  import (
     4  	"net"
     5  	"net/http"
     6  	"net/http/httptest"
     7  	"testing"
     8  	"time"
     9  
    10  	"github.com/avenga/couper/internal/test"
    11  )
    12  
    13  func TestCookies_IntegrationStrip(t *testing.T) {
    14  	helper := test.New(t)
    15  	seenCh := make(chan struct{}, 1)
    16  
    17  	origin := httptest.NewUnstartedServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
    18  		rw.Header().Set("Set-Cookie", "n=v; Path=path; Secure")
    19  		rw.WriteHeader(http.StatusOK)
    20  
    21  		seenCh <- struct{}{}
    22  		close(seenCh)
    23  	}))
    24  
    25  	ln, err := net.Listen("tcp4", testProxyAddr[7:])
    26  	helper.Must(err)
    27  	origin.Listener = ln
    28  	origin.Start()
    29  	defer origin.Close()
    30  
    31  	confPath := "testdata/settings/01_couper.hcl"
    32  	shutdown, _ := newCouper(confPath, test.New(t))
    33  	defer shutdown()
    34  
    35  	req, err := http.NewRequest(http.MethodGet, "http://anyserver:8080", nil)
    36  	helper.Must(err)
    37  
    38  	res, err := newClient().Do(req)
    39  	helper.Must(err)
    40  
    41  	if v := res.Header.Get("Set-Cookie"); v != "n=v; Path=path" {
    42  		t.Errorf("Unexpected Set-Cookie header given: %s", v)
    43  	}
    44  
    45  	timer := time.NewTimer(time.Second)
    46  	defer timer.Stop()
    47  
    48  	select {
    49  	case <-timer.C:
    50  		t.Error("Origin request failed")
    51  	case <-seenCh:
    52  	}
    53  }