1
0
Fork 0

Add marathon label to configure basic auth, similar to docker and rancher providers

This commit is contained in:
Matt Christiansen 2017-06-27 17:22:17 -07:00 committed by Ludovic Fernandez
parent c31b4c55c2
commit 4dfbb6d489
4 changed files with 62 additions and 5 deletions

View file

@ -98,6 +98,7 @@ func TestMarathonLoadConfig(t *testing.T) {
`frontend-test`: {
Backend: "backend-test",
PassHostHeader: true,
BasicAuth: []string{},
EntryPoints: []string{},
Routes: map[string]types.Route{
`route-host-test`: {
@ -151,6 +152,7 @@ func TestMarathonLoadConfig(t *testing.T) {
`frontend-testLoadBalancerAndCircuitBreaker.dot`: {
Backend: "backend-testLoadBalancerAndCircuitBreaker.dot",
PassHostHeader: true,
BasicAuth: []string{},
EntryPoints: []string{},
Routes: map[string]types.Route{
`route-host-testLoadBalancerAndCircuitBreaker.dot`: {
@ -209,6 +211,7 @@ func TestMarathonLoadConfig(t *testing.T) {
`frontend-testMaxConn`: {
Backend: "backend-testMaxConn",
PassHostHeader: true,
BasicAuth: []string{},
EntryPoints: []string{},
Routes: map[string]types.Route{
`route-host-testMaxConn`: {
@ -264,6 +267,7 @@ func TestMarathonLoadConfig(t *testing.T) {
`frontend-testMaxConnOnlySpecifyAmount`: {
Backend: "backend-testMaxConnOnlySpecifyAmount",
PassHostHeader: true,
BasicAuth: []string{},
EntryPoints: []string{},
Routes: map[string]types.Route{
`route-host-testMaxConnOnlySpecifyAmount`: {
@ -316,6 +320,7 @@ func TestMarathonLoadConfig(t *testing.T) {
`frontend-testMaxConnOnlyExtractorFunc`: {
Backend: "backend-testMaxConnOnlyExtractorFunc",
PassHostHeader: true,
BasicAuth: []string{},
EntryPoints: []string{},
Routes: map[string]types.Route{
`route-host-testMaxConnOnlyExtractorFunc`: {
@ -369,6 +374,7 @@ func TestMarathonLoadConfig(t *testing.T) {
"frontend-testHealthCheck": {
Backend: "backend-testHealthCheck",
PassHostHeader: true,
BasicAuth: []string{},
EntryPoints: []string{},
Routes: map[string]types.Route{
"route-host-testHealthCheck": {
@ -1368,7 +1374,7 @@ func TestMarathonGetEntryPoints(t *testing.T) {
for _, a := range applications {
actual := provider.getEntryPoints(a.application)
if !reflect.DeepEqual(actual, a.expected) {
if !reflect.DeepEqual(a.expected, actual) {
t.Fatalf("expected %#v, got %#v", a.expected, actual)
}
}
@ -1800,3 +1806,41 @@ func TestParseIndex(t *testing.T) {
})
}
}
func TestMarathonGetBasicAuth(t *testing.T) {
provider := &Provider{}
cases := []struct {
desc string
application marathon.Application
expected []string
}{
{
desc: "basic auth label is empty",
application: marathon.Application{
Labels: &map[string]string{}},
expected: []string{},
},
{
desc: "basic auth label is set with user:password",
application: marathon.Application{
Labels: &map[string]string{
"traefik.frontend.auth.basic": "user:password",
},
},
expected: []string{"user:password"},
},
}
for _, c := range cases {
c := c
t.Run(c.desc, func(t *testing.T) {
t.Parallel()
actual := provider.getBasicAuth(c.application)
if !reflect.DeepEqual(c.expected, actual) {
t.Errorf("expected %q, got %q", c.expected, actual)
}
})
}
}