diff options
Diffstat (limited to 'service/headers/service_test.go')
-rw-r--r-- | service/headers/service_test.go | 288 |
1 files changed, 176 insertions, 112 deletions
diff --git a/service/headers/service_test.go b/service/headers/service_test.go index e4bbfb84..8d727c15 100644 --- a/service/headers/service_test.go +++ b/service/headers/service_test.go @@ -1,6 +1,7 @@ package headers import ( + "github.com/cenkalti/backoff/v4" json "github.com/json-iterator/go" "github.com/sirupsen/logrus" "github.com/sirupsen/logrus/hooks/test" @@ -35,16 +36,20 @@ func (cfg *testCfg) Unmarshal(out interface{}) error { } func Test_RequestHeaders(t *testing.T) { - logger, _ := test.NewNullLogger() - logger.SetLevel(logrus.DebugLevel) + bkoff := backoff.NewExponentialBackOff() + bkoff.MaxElapsedTime = time.Second * 15 - c := service.NewContainer(logger) - c.Register(rrhttp.ID, &rrhttp.Service{}) - c.Register(ID, &Service{}) + err := backoff.Retry(func() error { + logger, _ := test.NewNullLogger() + logger.SetLevel(logrus.DebugLevel) - assert.NoError(t, c.Init(&testCfg{ - headers: `{"request":{"input": "custom-header"}}`, - httpCfg: `{ + c := service.NewContainer(logger) + c.Register(rrhttp.ID, &rrhttp.Service{}) + c.Register(ID, &Service{}) + + assert.NoError(t, c.Init(&testCfg{ + headers: `{"request":{"input": "custom-header"}}`, + httpCfg: `{ "enable": true, "address": ":6078", "maxRequestSize": 1024, @@ -59,46 +64,62 @@ func Test_RequestHeaders(t *testing.T) { } }`})) - go func() { - err := c.Serve() + go func() { + err := c.Serve() + if err != nil { + t.Errorf("error during Serve: error %v", err) + } + }() + + time.Sleep(time.Millisecond * 100) + defer c.Stop() + + req, err := http.NewRequest("GET", "http://localhost:6078?hello=value", nil) if err != nil { - t.Errorf("error during Serve: error %v", err) + return err } - }() - time.Sleep(time.Millisecond * 100) - defer c.Stop() - req, err := http.NewRequest("GET", "http://localhost:6078?hello=value", nil) - assert.NoError(t, err) + r, err := http.DefaultClient.Do(req) + if err != nil { + return err + } - r, err := http.DefaultClient.Do(req) - assert.NoError(t, err) - defer func() { - err := r.Body.Close() + b, err := ioutil.ReadAll(r.Body) if err != nil { - t.Errorf("error during the body closing: error %v", err) + return err } - }() - b, err := ioutil.ReadAll(r.Body) - assert.NoError(t, err) + assert.Equal(t, 200, r.StatusCode) + assert.Equal(t, "CUSTOM-HEADER", string(b)) - assert.NoError(t, err) - assert.Equal(t, 200, r.StatusCode) - assert.Equal(t, "CUSTOM-HEADER", string(b)) + err = r.Body.Close() + if err != nil { + return err + } + + return nil + }, bkoff) + + if err != nil { + t.Fatal(err) + } } func Test_ResponseHeaders(t *testing.T) { - logger, _ := test.NewNullLogger() - logger.SetLevel(logrus.DebugLevel) + bkoff := backoff.NewExponentialBackOff() + bkoff.MaxElapsedTime = time.Second * 15 + + err := backoff.Retry(func() error { + logger, _ := test.NewNullLogger() + logger.SetLevel(logrus.DebugLevel) - c := service.NewContainer(logger) - c.Register(rrhttp.ID, &rrhttp.Service{}) - c.Register(ID, &Service{}) + c := service.NewContainer(logger) + c.Register(rrhttp.ID, &rrhttp.Service{}) + c.Register(ID, &Service{}) - assert.NoError(t, c.Init(&testCfg{ - headers: `{"response":{"output": "output-header"},"request":{"input": "custom-header"}}`, - httpCfg: `{ + assert.NoError(t, c.Init(&testCfg{ + headers: `{"response":{"output": "output-header"},"request":{"input": "custom-header"}}`, + httpCfg: `{ "enable": true, "address": ":6079", "maxRequestSize": 1024, @@ -113,46 +134,61 @@ func Test_ResponseHeaders(t *testing.T) { } }`})) - go func() { - err := c.Serve() + go func() { + err := c.Serve() + if err != nil { + t.Errorf("error during the Serve: error %v", err) + } + }() + time.Sleep(time.Millisecond * 100) + defer c.Stop() + + req, err := http.NewRequest("GET", "http://localhost:6079?hello=value", nil) + if err != nil { + return err + } + + r, err := http.DefaultClient.Do(req) if err != nil { - t.Errorf("error during the Serve: error %v", err) + return err } - }() - time.Sleep(time.Millisecond * 100) - defer c.Stop() - req, err := http.NewRequest("GET", "http://localhost:6079?hello=value", nil) - assert.NoError(t, err) + assert.Equal(t, "output-header", r.Header.Get("output")) - r, err := http.DefaultClient.Do(req) - assert.NoError(t, err) - defer func() { - err := r.Body.Close() + b, err := ioutil.ReadAll(r.Body) if err != nil { - t.Errorf("error during the body closing: error %v", err) + return err } - }() + assert.Equal(t, 200, r.StatusCode) + assert.Equal(t, "CUSTOM-HEADER", string(b)) - assert.Equal(t, "output-header", r.Header.Get("output")) + err = r.Body.Close() + if err != nil { + return err + } - b, err := ioutil.ReadAll(r.Body) - assert.NoError(t, err) + return nil + }, bkoff) - assert.Equal(t, 200, r.StatusCode) - assert.Equal(t, "CUSTOM-HEADER", string(b)) + if err != nil { + t.Fatal(err) + } } func TestCORS_OPTIONS(t *testing.T) { - logger, _ := test.NewNullLogger() - logger.SetLevel(logrus.DebugLevel) + bkoff := backoff.NewExponentialBackOff() + bkoff.MaxElapsedTime = time.Second * 15 + + err := backoff.Retry(func() error { + logger, _ := test.NewNullLogger() + logger.SetLevel(logrus.DebugLevel) - c := service.NewContainer(logger) - c.Register(rrhttp.ID, &rrhttp.Service{}) - c.Register(ID, &Service{}) + c := service.NewContainer(logger) + c.Register(rrhttp.ID, &rrhttp.Service{}) + c.Register(ID, &Service{}) - assert.NoError(t, c.Init(&testCfg{ - headers: `{ + assert.NoError(t, c.Init(&testCfg{ + headers: `{ "cors":{ "allowedOrigin": "*", "allowedHeaders": "*", @@ -162,7 +198,7 @@ func TestCORS_OPTIONS(t *testing.T) { "maxAge": 600 } }`, - httpCfg: `{ + httpCfg: `{ "enable": true, "address": ":6379", "maxRequestSize": 1024, @@ -177,50 +213,65 @@ func TestCORS_OPTIONS(t *testing.T) { } }`})) - go func() { - err := c.Serve() + go func() { + err := c.Serve() + if err != nil { + t.Errorf("error during the Serve: error %v", err) + } + }() + time.Sleep(time.Millisecond * 100) + defer c.Stop() + + req, err := http.NewRequest("OPTIONS", "http://localhost:6379", nil) if err != nil { - t.Errorf("error during the Serve: error %v", err) + return err } - }() - time.Sleep(time.Millisecond * 100) - defer c.Stop() - req, err := http.NewRequest("OPTIONS", "http://localhost:6379", nil) - assert.NoError(t, err) + r, err := http.DefaultClient.Do(req) + if err != nil { + return err + } - r, err := http.DefaultClient.Do(req) - assert.NoError(t, err) - defer func() { - err := r.Body.Close() + assert.Equal(t, "true", r.Header.Get("Access-Control-Allow-Credentials")) + assert.Equal(t, "*", r.Header.Get("Access-Control-Allow-Headers")) + assert.Equal(t, "GET,POST,PUT,DELETE", r.Header.Get("Access-Control-Allow-Methods")) + assert.Equal(t, "*", r.Header.Get("Access-Control-Allow-Origin")) + assert.Equal(t, "600", r.Header.Get("Access-Control-Max-Age")) + assert.Equal(t, "true", r.Header.Get("Access-Control-Allow-Credentials")) + + _, err = ioutil.ReadAll(r.Body) if err != nil { - t.Errorf("error during the body closing: error %v", err) + return err } - }() + assert.Equal(t, 200, r.StatusCode) - assert.Equal(t, "true", r.Header.Get("Access-Control-Allow-Credentials")) - assert.Equal(t, "*", r.Header.Get("Access-Control-Allow-Headers")) - assert.Equal(t, "GET,POST,PUT,DELETE", r.Header.Get("Access-Control-Allow-Methods")) - assert.Equal(t, "*", r.Header.Get("Access-Control-Allow-Origin")) - assert.Equal(t, "600", r.Header.Get("Access-Control-Max-Age")) - assert.Equal(t, "true", r.Header.Get("Access-Control-Allow-Credentials")) + err = r.Body.Close() + if err != nil { + return err + } - _, err = ioutil.ReadAll(r.Body) - assert.NoError(t, err) + return nil + }, bkoff) - assert.Equal(t, 200, r.StatusCode) + if err != nil { + t.Fatal(err) + } } func TestCORS_Pass(t *testing.T) { - logger, _ := test.NewNullLogger() - logger.SetLevel(logrus.DebugLevel) + bkoff := backoff.NewExponentialBackOff() + bkoff.MaxElapsedTime = time.Second * 15 - c := service.NewContainer(logger) - c.Register(rrhttp.ID, &rrhttp.Service{}) - c.Register(ID, &Service{}) + err := backoff.Retry(func() error { + logger, _ := test.NewNullLogger() + logger.SetLevel(logrus.DebugLevel) - assert.NoError(t, c.Init(&testCfg{ - headers: `{ + c := service.NewContainer(logger) + c.Register(rrhttp.ID, &rrhttp.Service{}) + c.Register(ID, &Service{}) + + assert.NoError(t, c.Init(&testCfg{ + headers: `{ "cors":{ "allowedOrigin": "*", "allowedHeaders": "*", @@ -230,7 +281,7 @@ func TestCORS_Pass(t *testing.T) { "maxAge": 600 } }`, - httpCfg: `{ + httpCfg: `{ "enable": true, "address": ":6672", "maxRequestSize": 1024, @@ -245,32 +296,45 @@ func TestCORS_Pass(t *testing.T) { } }`})) - go func() { - err := c.Serve() + go func() { + err := c.Serve() + if err != nil { + t.Errorf("error during the Serve: error %v", err) + } + }() + time.Sleep(time.Millisecond * 100) + defer c.Stop() + + req, err := http.NewRequest("GET", "http://localhost:6672", nil) + if err != nil { + return err + } + + r, err := http.DefaultClient.Do(req) if err != nil { - t.Errorf("error during the Serve: error %v", err) + return err } - }() - time.Sleep(time.Millisecond * 100) - defer c.Stop() - req, err := http.NewRequest("GET", "http://localhost:6672", nil) - assert.NoError(t, err) + assert.Equal(t, "true", r.Header.Get("Access-Control-Allow-Credentials")) + assert.Equal(t, "*", r.Header.Get("Access-Control-Allow-Headers")) + assert.Equal(t, "*", r.Header.Get("Access-Control-Allow-Origin")) + assert.Equal(t, "true", r.Header.Get("Access-Control-Allow-Credentials")) - r, err := http.DefaultClient.Do(req) - assert.NoError(t, err) - assert.Equal(t, "true", r.Header.Get("Access-Control-Allow-Credentials")) - assert.Equal(t, "*", r.Header.Get("Access-Control-Allow-Headers")) - assert.Equal(t, "*", r.Header.Get("Access-Control-Allow-Origin")) - assert.Equal(t, "true", r.Header.Get("Access-Control-Allow-Credentials")) + _, err = ioutil.ReadAll(r.Body) + if err != nil { + return err + } + assert.Equal(t, 200, r.StatusCode) - _, err = ioutil.ReadAll(r.Body) - assert.NoError(t, err) + err = r.Body.Close() + if err != nil { + return err + } - assert.Equal(t, 200, r.StatusCode) + return nil + }, bkoff) - err = r.Body.Close() if err != nil { - t.Errorf("error during the body closing: error %v", err) + t.Fatal(err) } } |