|
5 | 5 | package logger
|
6 | 6 |
|
7 | 7 | import (
|
| 8 | + "bytes" |
8 | 9 | "context"
|
| 10 | + "encoding/json" |
| 11 | + "net" |
9 | 12 | "net/http"
|
10 | 13 | "net/http/httptest"
|
11 | 14 | "testing"
|
12 | 15 | "time"
|
13 | 16 |
|
| 17 | + "github.com/rs/zerolog" |
14 | 18 | "github.com/stretchr/testify/require"
|
15 |
| - |
16 |
| - testlog "github.com/elastic/fleet-server/v7/internal/pkg/testing/log" |
17 | 19 | )
|
18 | 20 |
|
19 | 21 | func TestMiddleware(t *testing.T) {
|
20 |
| - ctx := testlog.SetLogger(t).WithContext(context.Background()) |
21 | 22 | h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
22 | 23 | ts, ok := CtxStartTime(r.Context())
|
23 | 24 | require.True(t, ok, "expected context to have start time")
|
24 | 25 | require.False(t, ts.Equal(time.Time{}), "expected start time to be non-zero")
|
25 | 26 |
|
26 |
| - w.WriteHeader(http.StatusOK) |
| 27 | + w.WriteHeader(http.StatusBadRequest) |
27 | 28 | _, _ = w.Write([]byte(`hello, world`))
|
28 | 29 | })
|
29 | 30 |
|
30 |
| - w := httptest.NewRecorder() |
31 |
| - req := httptest.NewRequest("GET", "/", nil).WithContext(ctx) |
32 |
| - |
33 |
| - Middleware(h).ServeHTTP(w, req) |
34 |
| - res := w.Result() |
| 31 | + var b bytes.Buffer |
| 32 | + logger := zerolog.New(&b).Level(zerolog.InfoLevel) |
| 33 | + ctx := logger.WithContext(context.Background()) |
| 34 | + |
| 35 | + srv := httptest.NewUnstartedServer(Middleware(h)) |
| 36 | + srv.Config.BaseContext = func(_ net.Listener) context.Context { |
| 37 | + return ctx |
| 38 | + } |
| 39 | + srv.Start() |
| 40 | + defer srv.Close() |
| 41 | + reqCtx, cancel := context.WithCancel(context.Background()) |
| 42 | + defer cancel() |
| 43 | + req, err := http.NewRequestWithContext(reqCtx, "GET", srv.URL, nil) |
| 44 | + require.NoError(t, err) |
| 45 | + |
| 46 | + res, err := srv.Client().Do(req) |
| 47 | + require.NoError(t, err) |
35 | 48 | res.Body.Close()
|
36 |
| - require.Equal(t, http.StatusOK, res.StatusCode) |
| 49 | + require.Equal(t, http.StatusBadRequest, res.StatusCode) |
37 | 50 | _, ok := res.Header[HeaderRequestID]
|
38 | 51 | require.True(t, ok, "expected to have a request ID")
|
39 |
| - reqID := req.Header.Get(HeaderRequestID) |
40 |
| - require.NotEmpty(t, reqID) |
| 52 | + |
| 53 | + var obj map[string]any |
| 54 | + err = json.Unmarshal(b.Bytes(), &obj) |
| 55 | + require.NoError(t, err) |
| 56 | + v, ok := obj[ECSServerAddress] |
| 57 | + require.Truef(t, ok, "expected to find key: %s in %v", ECSServerAddress, obj) |
| 58 | + require.NotEmpty(t, v) |
41 | 59 | }
|
0 commit comments