2018-06-05 12:32:03 +02:00
package testhelpers
import (
"github.com/containous/traefik/provider"
"github.com/containous/traefik/types"
)
// BuildConfiguration is a helper to create a configuration.
func BuildConfiguration ( dynamicConfigBuilders ... func ( * types . Configuration ) ) * types . Configuration {
config := & types . Configuration { }
for _ , build := range dynamicConfigBuilders {
build ( config )
}
return config
}
// -- Backend
// WithBackends is a helper to create a configuration
func WithBackends ( opts ... func ( * types . Backend ) string ) func ( * types . Configuration ) {
return func ( c * types . Configuration ) {
c . Backends = make ( map [ string ] * types . Backend )
for _ , opt := range opts {
b := & types . Backend { }
name := opt ( b )
c . Backends [ name ] = b
}
}
}
// WithBackendNew is a helper to create a configuration
func WithBackendNew ( name string , opts ... func ( * types . Backend ) ) func ( * types . Backend ) string {
return func ( b * types . Backend ) string {
for _ , opt := range opts {
opt ( b )
}
return name
}
}
// WithServersNew is a helper to create a configuration
func WithServersNew ( opts ... func ( * types . Server ) string ) func ( * types . Backend ) {
return func ( b * types . Backend ) {
b . Servers = make ( map [ string ] types . Server )
for _ , opt := range opts {
s := & types . Server { Weight : 1 }
name := opt ( s )
b . Servers [ name ] = * s
}
}
}
// WithServerNew is a helper to create a configuration
func WithServerNew ( url string , opts ... func ( * types . Server ) ) func ( * types . Server ) string {
return func ( s * types . Server ) string {
for _ , opt := range opts {
opt ( s )
}
s . URL = url
return provider . Normalize ( url )
}
}
// WithLBMethod is a helper to create a configuration
func WithLBMethod ( method string ) func ( * types . Backend ) {
return func ( b * types . Backend ) {
if b . LoadBalancer == nil {
b . LoadBalancer = & types . LoadBalancer { }
}
b . LoadBalancer . Method = method
}
}
// -- Frontend
// WithFrontends is a helper to create a configuration
func WithFrontends ( opts ... func ( * types . Frontend ) string ) func ( * types . Configuration ) {
return func ( c * types . Configuration ) {
c . Frontends = make ( map [ string ] * types . Frontend )
for _ , opt := range opts {
f := & types . Frontend { }
name := opt ( f )
c . Frontends [ name ] = f
}
}
}
// WithFrontend is a helper to create a configuration
func WithFrontend ( backend string , opts ... func ( * types . Frontend ) ) func ( * types . Frontend ) string {
return func ( f * types . Frontend ) string {
for _ , opt := range opts {
opt ( f )
}
2018-06-06 15:20:03 +02:00
// related the function WithFrontendName
name := f . Backend
2018-06-05 12:32:03 +02:00
f . Backend = backend
2018-06-06 15:20:03 +02:00
if len ( name ) > 0 {
return name
}
2018-06-05 12:32:03 +02:00
return backend
}
}
2018-06-06 15:20:03 +02:00
// WithFrontendName is a helper to create a configuration
func WithFrontendName ( name string ) func ( * types . Frontend ) {
return func ( f * types . Frontend ) {
// store temporary the frontend name into the backend name
f . Backend = name
}
}
2018-06-05 12:32:03 +02:00
// WithEntryPoints is a helper to create a configuration
func WithEntryPoints ( eps ... string ) func ( * types . Frontend ) {
return func ( f * types . Frontend ) {
f . EntryPoints = eps
}
}
// WithRoutes is a helper to create a configuration
func WithRoutes ( opts ... func ( * types . Route ) string ) func ( * types . Frontend ) {
return func ( f * types . Frontend ) {
f . Routes = make ( map [ string ] types . Route )
for _ , opt := range opts {
s := & types . Route { }
name := opt ( s )
f . Routes [ name ] = * s
}
}
}
// WithRoute is a helper to create a configuration
func WithRoute ( name string , rule string ) func ( * types . Route ) string {
return func ( r * types . Route ) string {
r . Rule = rule
return name
}
}
2018-06-06 17:56:03 +02:00
// WithBasicAuth is a helper to create a configuration
2018-07-02 11:52:04 +02:00
// Deprecated
2018-06-06 17:56:03 +02:00
func WithBasicAuth ( username string , password string ) func ( * types . Frontend ) {
return func ( fe * types . Frontend ) {
fe . BasicAuth = [ ] string { username + ":" + password }
}
}
2018-07-02 11:52:04 +02:00
// WithFrontEndAuth is a helper to create a configuration
func WithFrontEndAuth ( auth * types . Auth ) func ( * types . Frontend ) {
return func ( fe * types . Frontend ) {
fe . Auth = auth
}
}
2018-06-05 12:32:03 +02:00
// WithLBSticky is a helper to create a configuration
func WithLBSticky ( cookieName string ) func ( * types . Backend ) {
return func ( b * types . Backend ) {
if b . LoadBalancer == nil {
b . LoadBalancer = & types . LoadBalancer { }
}
b . LoadBalancer . Stickiness = & types . Stickiness { CookieName : cookieName }
}
}