34 lines
975 B
Go
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)
|
||
|
|
}
|
||
|
|
}
|