mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
![David Calavera](/assets/img/avatar_default.png)
This makes separating middlewares from the core api easier. As an example, the authorization middleware is moved to it's own package. Initialize all static middlewares when the server is created, reducing allocations every time a route is wrapper with the middlewares. Signed-off-by: David Calavera <david.calavera@gmail.com>
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package server
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/docker/docker/api"
|
|
"github.com/docker/docker/api/server/httputils"
|
|
"github.com/docker/docker/api/server/middleware"
|
|
"github.com/docker/docker/pkg/version"
|
|
|
|
"golang.org/x/net/context"
|
|
)
|
|
|
|
func TestMiddlewares(t *testing.T) {
|
|
cfg := &Config{
|
|
Version: "0.1omega2",
|
|
}
|
|
srv := &Server{
|
|
cfg: cfg,
|
|
}
|
|
|
|
srv.UseMiddleware(middleware.NewVersionMiddleware(version.Version("0.1omega2"), api.DefaultVersion, api.MinVersion))
|
|
|
|
req, _ := http.NewRequest("GET", "/containers/json", nil)
|
|
resp := httptest.NewRecorder()
|
|
ctx := context.Background()
|
|
|
|
localHandler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
if httputils.VersionFromContext(ctx) == "" {
|
|
t.Fatalf("Expected version, got empty string")
|
|
}
|
|
|
|
if sv := w.Header().Get("Server"); !strings.Contains(sv, "Docker/0.1omega2") {
|
|
t.Fatalf("Expected server version in the header `Docker/0.1omega2`, got %s", sv)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
handlerFunc := srv.handleWithGlobalMiddlewares(localHandler)
|
|
if err := handlerFunc(ctx, resp, req, map[string]string{}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|