Files
memby/server/internal/api/remote_config_test.go
T

34 lines
975 B
Go

package api
import (
"net/http"
"net/http/httptest"
"testing"
"github.com/ponzischeme89/memby/server/internal/config"
)
func TestRemoteConfigSupportsETagRevalidationWithoutAuthentication(t *testing.T) {
server := &Server{cfg: config.Config{RemoteConfig: config.DefaultRemoteConfig()}}
first := httptest.NewRecorder()
server.handleRemoteConfig(first, httptest.NewRequest(http.MethodGet, "/v1/config", nil))
if first.Code != http.StatusOK {
t.Fatalf("status = %d", first.Code)
}
etag := first.Header().Get("ETag")
if etag == "" {
t.Fatal("missing ETag")
}
if got := first.Header().Get("X-Memby-Config-Version"); got != "1" {
t.Fatalf("version header = %q", got)
}
request := httptest.NewRequest(http.MethodGet, "/v1/config", nil)
request.Header.Set("If-None-Match", etag)
second := httptest.NewRecorder()
server.handleRemoteConfig(second, request)
if second.Code != http.StatusNotModified {
t.Fatalf("revalidation status = %d", second.Code)
}
}