Ensure flag values are set correctly
This commit is contained in:
parent
8e92e3dc3d
commit
765443bc41
@ -29,6 +29,7 @@ func New() *Options {
|
|||||||
// correct configuration options
|
// correct configuration options
|
||||||
func Load(config io.Reader, configType string, args []string) (*Options, error) {
|
func Load(config io.Reader, configType string, args []string) (*Options, error) {
|
||||||
flagSet := flag.NewFlagSet("oauth2-proxy", flag.ExitOnError)
|
flagSet := flag.NewFlagSet("oauth2-proxy", flag.ExitOnError)
|
||||||
|
flagSet.SetNormalizeFunc(wordSepNormalizeFunc)
|
||||||
|
|
||||||
// Add FlagSets to main flagSet
|
// Add FlagSets to main flagSet
|
||||||
flagSet.AddFlagSet(cookieFlagSet)
|
flagSet.AddFlagSet(cookieFlagSet)
|
||||||
@ -68,3 +69,14 @@ func Load(config io.Reader, configType string, args []string) (*Options, error)
|
|||||||
}
|
}
|
||||||
return options, nil
|
return options, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// wordSepNormalizeFunc replaces "-" in flags entered with "."
|
||||||
|
// This ensures that flags are mapped to the correct values in the Options struct
|
||||||
|
func wordSepNormalizeFunc(f *flag.FlagSet, name string) flag.NormalizedName {
|
||||||
|
from := []string{"-"}
|
||||||
|
to := "."
|
||||||
|
for _, sep := range from {
|
||||||
|
name = strings.Replace(name, sep, to, -1)
|
||||||
|
}
|
||||||
|
return flag.NormalizedName(name)
|
||||||
|
}
|
||||||
|
@ -110,7 +110,41 @@ var _ = Describe("Load", func() {
|
|||||||
}
|
}
|
||||||
Expect(opts.Cookie).To(Equal(expected))
|
Expect(opts.Cookie).To(Equal(expected))
|
||||||
})
|
})
|
||||||
})
|
|
||||||
|
|
||||||
|
Context("with flag configuration", func() {
|
||||||
|
Context("with hyphens", func() {
|
||||||
|
BeforeEach(func() {
|
||||||
|
args = []string{
|
||||||
|
"--cookie-name=flag_cookie_name",
|
||||||
|
"--cookie-secret=flag_secret_1234",
|
||||||
|
"--cookie-domain=flag.example.com",
|
||||||
|
"--cookie-path=/flag",
|
||||||
|
"--cookie-expire=48h",
|
||||||
|
"--cookie-refresh=4h",
|
||||||
|
"--cookie-secure=false",
|
||||||
|
"--cookie-httponly=false",
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
It("returns no error", func() {
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
})
|
||||||
|
|
||||||
|
It("the environment overrides the config file", func() {
|
||||||
|
expected := &CookieOptions{
|
||||||
|
Name: "flag_cookie_name",
|
||||||
|
Secret: "flag_secret_1234",
|
||||||
|
Domain: "flag.example.com",
|
||||||
|
Path: "/flag",
|
||||||
|
Expire: time.Duration(48) * time.Hour,
|
||||||
|
Refresh: time.Duration(4) * time.Hour,
|
||||||
|
Secure: false,
|
||||||
|
HTTPOnly: false,
|
||||||
|
}
|
||||||
|
Expect(opts.Cookie).To(Equal(expected))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user