signoz/pkg/http/middleware/cache_test.go
Vibhu Pandey bfeceb0ed2
feat(web): add web package (#5743)
### Summary

Add a web package for serving frontend

#### Related Issues / PR's

https://github.com/SigNoz/signoz/pull/5710
2024-08-22 20:56:15 +05:30

57 lines
1023 B
Go

package middleware
import (
"net"
"net/http"
"strconv"
"testing"
"time"
"github.com/stretchr/testify/require"
)
func TestCache(t *testing.T) {
t.Parallel()
age := 20 * 24 * time.Hour
m := NewCache(age)
listener, err := net.Listen("tcp", "localhost:0")
require.NoError(t, err)
server := &http.Server{
Handler: m.Wrap(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
rw.WriteHeader(204)
})),
}
go func() {
require.NoError(t, server.Serve(listener))
}()
testCases := []struct {
name string
age time.Duration
}{
{
name: "Success",
age: age,
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
req, err := http.NewRequest("GET", "http://"+listener.Addr().String(), nil)
require.NoError(t, err)
res, err := http.DefaultClient.Do(req)
require.NoError(t, err)
actual := res.Header.Get("Cache-control")
require.NoError(t, err)
require.Equal(t, "max-age="+strconv.Itoa(int(age.Seconds())), string(actual))
})
}
}