2018-06-05 10:32:03 +00:00
|
|
|
package testhelpers
|
|
|
|
|
|
|
|
import (
|
2019-08-03 01:58:23 +00:00
|
|
|
"github.com/containous/traefik/v2/pkg/config/dynamic"
|
2018-06-05 10:32:03 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// BuildConfiguration is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func BuildConfiguration(dynamicConfigBuilders ...func(*dynamic.HTTPConfiguration)) *dynamic.HTTPConfiguration {
|
|
|
|
conf := &dynamic.HTTPConfiguration{}
|
2018-06-05 10:32:03 +00:00
|
|
|
for _, build := range dynamicConfigBuilders {
|
2018-11-14 09:18:03 +00:00
|
|
|
build(conf)
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
2018-11-14 09:18:03 +00:00
|
|
|
return conf
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
|
|
|
|
2018-11-14 09:18:03 +00:00
|
|
|
// WithRouters is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func WithRouters(opts ...func(*dynamic.Router) string) func(*dynamic.HTTPConfiguration) {
|
|
|
|
return func(c *dynamic.HTTPConfiguration) {
|
|
|
|
c.Routers = make(map[string]*dynamic.Router)
|
2018-06-05 10:32:03 +00:00
|
|
|
for _, opt := range opts {
|
2019-07-10 07:26:04 +00:00
|
|
|
b := &dynamic.Router{}
|
2018-06-05 10:32:03 +00:00
|
|
|
name := opt(b)
|
2018-11-14 09:18:03 +00:00
|
|
|
c.Routers[name] = b
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-14 09:18:03 +00:00
|
|
|
// WithRouter is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func WithRouter(routerName string, opts ...func(*dynamic.Router)) func(*dynamic.Router) string {
|
|
|
|
return func(r *dynamic.Router) string {
|
2018-06-05 10:32:03 +00:00
|
|
|
for _, opt := range opts {
|
2018-11-14 09:18:03 +00:00
|
|
|
opt(r)
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
2018-11-14 09:18:03 +00:00
|
|
|
return routerName
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-14 09:18:03 +00:00
|
|
|
// WithRouterMiddlewares is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func WithRouterMiddlewares(middlewaresName ...string) func(*dynamic.Router) {
|
|
|
|
return func(r *dynamic.Router) {
|
2018-11-14 09:18:03 +00:00
|
|
|
r.Middlewares = middlewaresName
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-14 09:18:03 +00:00
|
|
|
// WithServiceName is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func WithServiceName(serviceName string) func(*dynamic.Router) {
|
|
|
|
return func(r *dynamic.Router) {
|
2018-11-14 09:18:03 +00:00
|
|
|
r.Service = serviceName
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-14 09:18:03 +00:00
|
|
|
// WithLoadBalancerServices is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func WithLoadBalancerServices(opts ...func(service *dynamic.LoadBalancerService) string) func(*dynamic.HTTPConfiguration) {
|
|
|
|
return func(c *dynamic.HTTPConfiguration) {
|
|
|
|
c.Services = make(map[string]*dynamic.Service)
|
2018-11-14 09:18:03 +00:00
|
|
|
for _, opt := range opts {
|
2019-07-10 07:26:04 +00:00
|
|
|
b := &dynamic.LoadBalancerService{}
|
2018-11-14 09:18:03 +00:00
|
|
|
name := opt(b)
|
2019-07-10 07:26:04 +00:00
|
|
|
c.Services[name] = &dynamic.Service{
|
2018-11-14 09:18:03 +00:00
|
|
|
LoadBalancer: b,
|
|
|
|
}
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-14 09:18:03 +00:00
|
|
|
// WithService is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func WithService(name string, opts ...func(*dynamic.LoadBalancerService)) func(*dynamic.LoadBalancerService) string {
|
|
|
|
return func(r *dynamic.LoadBalancerService) string {
|
2018-06-05 10:32:03 +00:00
|
|
|
for _, opt := range opts {
|
2018-11-14 09:18:03 +00:00
|
|
|
opt(r)
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
2018-11-14 09:18:03 +00:00
|
|
|
return name
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-14 09:18:03 +00:00
|
|
|
// WithMiddlewares is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func WithMiddlewares(opts ...func(*dynamic.Middleware) string) func(*dynamic.HTTPConfiguration) {
|
|
|
|
return func(c *dynamic.HTTPConfiguration) {
|
|
|
|
c.Middlewares = make(map[string]*dynamic.Middleware)
|
2018-06-05 10:32:03 +00:00
|
|
|
for _, opt := range opts {
|
2019-07-10 07:26:04 +00:00
|
|
|
b := &dynamic.Middleware{}
|
2018-11-14 09:18:03 +00:00
|
|
|
name := opt(b)
|
|
|
|
c.Middlewares[name] = b
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
2018-11-14 09:18:03 +00:00
|
|
|
}
|
|
|
|
}
|
2018-06-06 13:20:03 +00:00
|
|
|
|
2018-11-14 09:18:03 +00:00
|
|
|
// WithMiddleware is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func WithMiddleware(name string, opts ...func(*dynamic.Middleware)) func(*dynamic.Middleware) string {
|
|
|
|
return func(r *dynamic.Middleware) string {
|
2018-11-14 09:18:03 +00:00
|
|
|
for _, opt := range opts {
|
|
|
|
opt(r)
|
2018-06-06 13:20:03 +00:00
|
|
|
}
|
2018-11-14 09:18:03 +00:00
|
|
|
return name
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-14 09:18:03 +00:00
|
|
|
// WithBasicAuth is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func WithBasicAuth(auth *dynamic.BasicAuth) func(*dynamic.Middleware) {
|
|
|
|
return func(r *dynamic.Middleware) {
|
2018-11-14 09:18:03 +00:00
|
|
|
r.BasicAuth = auth
|
2018-06-06 13:20:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-14 09:18:03 +00:00
|
|
|
// WithEntryPoints is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func WithEntryPoints(eps ...string) func(*dynamic.Router) {
|
|
|
|
return func(f *dynamic.Router) {
|
2018-06-05 10:32:03 +00:00
|
|
|
f.EntryPoints = eps
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-14 09:18:03 +00:00
|
|
|
// WithRule is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func WithRule(rule string) func(*dynamic.Router) {
|
|
|
|
return func(f *dynamic.Router) {
|
2018-11-14 09:18:03 +00:00
|
|
|
f.Rule = rule
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// WithServers is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func WithServers(opts ...func(*dynamic.Server)) func(*dynamic.LoadBalancerService) {
|
|
|
|
return func(b *dynamic.LoadBalancerService) {
|
2018-06-05 10:32:03 +00:00
|
|
|
for _, opt := range opts {
|
2019-07-10 07:26:04 +00:00
|
|
|
server := dynamic.Server{}
|
2018-11-14 09:18:03 +00:00
|
|
|
opt(&server)
|
|
|
|
b.Servers = append(b.Servers, server)
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-14 09:18:03 +00:00
|
|
|
// WithServer is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func WithServer(url string, opts ...func(*dynamic.Server)) func(*dynamic.Server) {
|
|
|
|
return func(s *dynamic.Server) {
|
2018-11-14 09:18:03 +00:00
|
|
|
for _, opt := range opts {
|
|
|
|
opt(s)
|
|
|
|
}
|
|
|
|
s.URL = url
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-14 09:18:03 +00:00
|
|
|
// WithStickiness is a helper to create a configuration.
|
2019-07-10 07:26:04 +00:00
|
|
|
func WithStickiness(cookieName string) func(*dynamic.LoadBalancerService) {
|
|
|
|
return func(b *dynamic.LoadBalancerService) {
|
|
|
|
b.Stickiness = &dynamic.Stickiness{
|
2018-11-14 09:18:03 +00:00
|
|
|
CookieName: cookieName,
|
2018-06-05 10:32:03 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|