mirror of
https://github.com/oauth2-proxy/oauth2-proxy.git
synced 2024-11-24 08:52:25 +02:00
rename Upstreams to UpstreamConfig and its Configs member to Upstreams then
This commit is contained in:
parent
fe9159572c
commit
88f32aeaa1
@ -124,7 +124,7 @@ They may change between releases without notice.
|
||||
|
||||
| Field | Type | Description |
|
||||
| ----- | ---- | ----------- |
|
||||
| `upstreams` | _[Upstreams](#upstreams)_ | Upstreams is used to configure upstream servers.<br/>Once a user is authenticated, requests to the server will be proxied to<br/>these upstream servers based on the path mappings defined in this list. |
|
||||
| `upstreamConfig` | _[UpstreamConfig](#upstreamconfig)_ | UpstreamConfig is used to configure upstream servers.<br/>Once a user is authenticated, requests to the server will be proxied to<br/>these upstream servers based on the path mappings defined in this list. |
|
||||
| `injectRequestHeaders` | _[[]Header](#header)_ | InjectRequestHeaders is used to configure headers that should be added<br/>to requests to upstream servers.<br/>Headers may source values from either the authenticated user's session<br/>or from a static secret value. |
|
||||
| `injectResponseHeaders` | _[[]Header](#header)_ | InjectResponseHeaders is used to configure headers that should be added<br/>to responses from the proxy.<br/>This is typically used when using the proxy as an external authentication<br/>provider in conjunction with another proxy such as NGINX and its<br/>auth_request module.<br/>Headers may source values from either the authenticated user's session<br/>or from a static secret value. |
|
||||
| `server` | _[Server](#server)_ | Server is used to configure the HTTP(S) server for the proxy application.<br/>You may choose to run both HTTP and HTTPS servers simultaneously.<br/>This can be done by setting the BindAddress and the SecureBindAddress simultaneously.<br/>To use the secure server you must configure a TLS certificate and key. |
|
||||
@ -364,7 +364,7 @@ TLS contains the information for loading a TLS certifcate and key.
|
||||
|
||||
### Upstream
|
||||
|
||||
(**Appears on:** [Upstreams](#upstreams))
|
||||
(**Appears on:** [UpstreamConfig](#upstreamconfig))
|
||||
|
||||
Upstream represents the configuration for an upstream server.
|
||||
Requests will be proxied to this upstream if the path matches the request path.
|
||||
@ -382,13 +382,13 @@ Requests will be proxied to this upstream if the path matches the request path.
|
||||
| `passHostHeader` | _bool_ | PassHostHeader determines whether the request host header should be proxied<br/>to the upstream server.<br/>Defaults to true. |
|
||||
| `proxyWebSockets` | _bool_ | ProxyWebSockets enables proxying of websockets to upstream servers<br/>Defaults to true. |
|
||||
|
||||
### Upstreams
|
||||
### UpstreamConfig
|
||||
|
||||
(**Appears on:** [AlphaOptions](#alphaoptions))
|
||||
|
||||
Upstreams is a collection of definitions for upstream servers.
|
||||
UpstreamConfig is a collection of definitions for upstream servers.
|
||||
|
||||
| Field | Type | Description |
|
||||
| ----- | ---- | ----------- |
|
||||
| `proxyRawPath` | _bool_ | ProxyRawPath will pass the raw url path to upstream allowing for url's<br/>like: "/%2F/" which would otherwise be redirected to "/" |
|
||||
| `configs` | _[[]Upstream](#upstream)_ | Upstream represents the configuration for an upstream server.<br/>Requests will be proxied to this upstream if the path matches the request path. |
|
||||
| `upstreams` | _[[]Upstream](#upstream)_ | Upstreams represents the configuration for the upstream servers.<br/>Requests will be proxied to this upstream if the path matches the request path. |
|
||||
|
@ -26,9 +26,9 @@ client_secret="b2F1dGgyLXByb3h5LWNsaWVudC1zZWNyZXQK"
|
||||
`
|
||||
|
||||
const testAlphaConfig = `
|
||||
upstreams:
|
||||
upstreamConfig:
|
||||
proxyrawpath: false
|
||||
configs:
|
||||
upstreams:
|
||||
- id: /
|
||||
path: /
|
||||
uri: http://httpbin
|
||||
@ -104,8 +104,8 @@ redirect_url="http://localhost:4180/oauth2/callback"
|
||||
opts.Cookie.Secure = false
|
||||
opts.RawRedirectURL = "http://localhost:4180/oauth2/callback"
|
||||
|
||||
opts.UpstreamServers = options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
opts.UpstreamServers = options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: "/",
|
||||
Path: "/",
|
||||
|
@ -197,8 +197,8 @@ func TestBasicAuthPassword(t *testing.T) {
|
||||
|
||||
basicAuthPassword := "This is a secure password"
|
||||
opts := baseTestOptions()
|
||||
opts.UpstreamServers = options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
opts.UpstreamServers = options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: providerServer.URL,
|
||||
Path: "/",
|
||||
@ -348,8 +348,8 @@ func NewPassAccessTokenTest(opts PassAccessTokenTestOptions) (*PassAccessTokenTe
|
||||
}))
|
||||
|
||||
patt.opts = baseTestOptions()
|
||||
patt.opts.UpstreamServers = options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
patt.opts.UpstreamServers = options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: patt.providerServer.URL,
|
||||
Path: "/",
|
||||
@ -358,7 +358,7 @@ func NewPassAccessTokenTest(opts PassAccessTokenTestOptions) (*PassAccessTokenTe
|
||||
},
|
||||
}
|
||||
if opts.ProxyUpstream.ID != "" {
|
||||
patt.opts.UpstreamServers.Configs = append(patt.opts.UpstreamServers.Configs, opts.ProxyUpstream)
|
||||
patt.opts.UpstreamServers.Upstreams = append(patt.opts.UpstreamServers.Upstreams, opts.ProxyUpstream)
|
||||
}
|
||||
|
||||
patt.opts.Cookie.Secure = false
|
||||
@ -1273,8 +1273,8 @@ func TestAuthSkippedForPreflightRequests(t *testing.T) {
|
||||
t.Cleanup(upstreamServer.Close)
|
||||
|
||||
opts := baseTestOptions()
|
||||
opts.UpstreamServers = options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
opts.UpstreamServers = options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: upstreamServer.URL,
|
||||
Path: "/",
|
||||
@ -1350,8 +1350,8 @@ func NewSignatureTest() (*SignatureTest, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
opts.UpstreamServers = options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
opts.UpstreamServers = options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: upstreamServer.URL,
|
||||
Path: "/",
|
||||
@ -1788,8 +1788,8 @@ func Test_noCacheHeaders(t *testing.T) {
|
||||
t.Cleanup(upstreamServer.Close)
|
||||
|
||||
opts := baseTestOptions()
|
||||
opts.UpstreamServers = options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
opts.UpstreamServers = options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: upstreamServer.URL,
|
||||
Path: "/",
|
||||
@ -2060,8 +2060,8 @@ func TestTrustedIPs(t *testing.T) {
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
opts := baseTestOptions()
|
||||
opts.UpstreamServers = options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
opts.UpstreamServers = options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: "static",
|
||||
Path: "/",
|
||||
@ -2255,8 +2255,8 @@ func TestAllowedRequest(t *testing.T) {
|
||||
t.Cleanup(upstreamServer.Close)
|
||||
|
||||
opts := baseTestOptions()
|
||||
opts.UpstreamServers = options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
opts.UpstreamServers = options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: upstreamServer.URL,
|
||||
Path: "/",
|
||||
@ -2372,8 +2372,8 @@ func TestProxyAllowedGroups(t *testing.T) {
|
||||
|
||||
test, err := NewProcessCookieTestWithOptionsModifiers(func(opts *options.Options) {
|
||||
opts.Providers[0].AllowedGroups = tt.allowedGroups
|
||||
opts.UpstreamServers = options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
opts.UpstreamServers = options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: upstreamServer.URL,
|
||||
Path: "/",
|
||||
|
@ -9,10 +9,10 @@ package options
|
||||
// They may change between releases without notice.
|
||||
// :::
|
||||
type AlphaOptions struct {
|
||||
// Upstreams is used to configure upstream servers.
|
||||
// UpstreamConfig is used to configure upstream servers.
|
||||
// Once a user is authenticated, requests to the server will be proxied to
|
||||
// these upstream servers based on the path mappings defined in this list.
|
||||
Upstreams Upstreams `json:"upstreams,omitempty"`
|
||||
UpstreamConfig UpstreamConfig `json:"upstreamConfig,omitempty"`
|
||||
|
||||
// InjectRequestHeaders is used to configure headers that should be added
|
||||
// to requests to upstream servers.
|
||||
@ -48,19 +48,18 @@ type AlphaOptions struct {
|
||||
// MergeInto replaces alpha options in the Options struct with the values
|
||||
// from the AlphaOptions
|
||||
func (a *AlphaOptions) MergeInto(opts *Options) {
|
||||
opts.UpstreamServers = a.Upstreams
|
||||
opts.UpstreamServers = a.UpstreamConfig
|
||||
opts.InjectRequestHeaders = a.InjectRequestHeaders
|
||||
opts.InjectResponseHeaders = a.InjectResponseHeaders
|
||||
opts.Server = a.Server
|
||||
opts.MetricsServer = a.MetricsServer
|
||||
opts.Providers = a.Providers
|
||||
|
||||
}
|
||||
|
||||
// ExtractFrom populates the fields in the AlphaOptions with the values from
|
||||
// the Options
|
||||
func (a *AlphaOptions) ExtractFrom(opts *Options) {
|
||||
a.Upstreams = opts.UpstreamServers
|
||||
a.UpstreamConfig = opts.UpstreamServers
|
||||
a.InjectRequestHeaders = opts.InjectRequestHeaders
|
||||
a.InjectResponseHeaders = opts.InjectResponseHeaders
|
||||
a.Server = opts.Server
|
||||
|
@ -114,13 +114,13 @@ func legacyUpstreamsFlagSet() *pflag.FlagSet {
|
||||
return flagSet
|
||||
}
|
||||
|
||||
func (l *LegacyUpstreams) convert() (Upstreams, error) {
|
||||
upstreams := Upstreams{}
|
||||
func (l *LegacyUpstreams) convert() (UpstreamConfig, error) {
|
||||
upstreams := UpstreamConfig{}
|
||||
|
||||
for _, upstreamString := range l.Upstreams {
|
||||
u, err := url.Parse(upstreamString)
|
||||
if err != nil {
|
||||
return Upstreams{}, fmt.Errorf("could not parse upstream %q: %v", upstreamString, err)
|
||||
return UpstreamConfig{}, fmt.Errorf("could not parse upstream %q: %v", upstreamString, err)
|
||||
}
|
||||
|
||||
if u.Path == "" {
|
||||
@ -169,7 +169,7 @@ func (l *LegacyUpstreams) convert() (Upstreams, error) {
|
||||
upstream.FlushInterval = nil
|
||||
}
|
||||
|
||||
upstreams.Configs = append(upstreams.Configs, upstream)
|
||||
upstreams.Upstreams = append(upstreams.Upstreams, upstream)
|
||||
}
|
||||
|
||||
return upstreams, nil
|
||||
|
@ -26,8 +26,8 @@ var _ = Describe("Legacy Options", func() {
|
||||
|
||||
truth := true
|
||||
staticCode := 204
|
||||
opts.UpstreamServers = Upstreams{
|
||||
Configs: []Upstream{
|
||||
opts.UpstreamServers = UpstreamConfig{
|
||||
Upstreams: []Upstream{
|
||||
{
|
||||
ID: "/baz",
|
||||
Path: "/baz",
|
||||
@ -221,7 +221,7 @@ var _ = Describe("Legacy Options", func() {
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
}
|
||||
|
||||
Expect(upstreams.Configs).To(ConsistOf(in.expectedUpstreams))
|
||||
Expect(upstreams.Upstreams).To(ConsistOf(in.expectedUpstreams))
|
||||
},
|
||||
Entry("with no upstreams", &convertUpstreamsTableInput{
|
||||
upstreamStrings: []string{},
|
||||
|
@ -469,8 +469,8 @@ sub:
|
||||
|
||||
It("should load a full example AlphaOptions", func() {
|
||||
config := []byte(`
|
||||
upstreams:
|
||||
configs:
|
||||
upstreamConfig:
|
||||
upstreams:
|
||||
- id: httpbin
|
||||
path: /
|
||||
uri: http://httpbin
|
||||
@ -503,8 +503,8 @@ injectResponseHeaders:
|
||||
flushInterval := Duration(500 * time.Millisecond)
|
||||
|
||||
Expect(into).To(Equal(&AlphaOptions{
|
||||
Upstreams: Upstreams{
|
||||
Configs: []Upstream{
|
||||
UpstreamConfig: UpstreamConfig{
|
||||
Upstreams: []Upstream{
|
||||
{
|
||||
ID: "httpbin",
|
||||
Path: "/",
|
||||
|
@ -41,7 +41,7 @@ type Options struct {
|
||||
|
||||
// Not used in the legacy config, name not allowed to match an external key (upstreams)
|
||||
// TODO(JoelSpeed): Rename when legacy config is removed
|
||||
UpstreamServers Upstreams `cfg:",internal"`
|
||||
UpstreamServers UpstreamConfig `cfg:",internal"`
|
||||
|
||||
InjectRequestHeaders []Header `cfg:",internal"`
|
||||
InjectResponseHeaders []Header `cfg:",internal"`
|
||||
|
@ -7,15 +7,15 @@ const (
|
||||
DefaultUpstreamFlushInterval = 1 * time.Second
|
||||
)
|
||||
|
||||
// Upstreams is a collection of definitions for upstream servers.
|
||||
type Upstreams struct {
|
||||
// UpstreamConfig is a collection of definitions for upstream servers.
|
||||
type UpstreamConfig struct {
|
||||
// ProxyRawPath will pass the raw url path to upstream allowing for url's
|
||||
// like: "/%2F/" which would otherwise be redirected to "/"
|
||||
ProxyRawPath bool `json:"proxyRawPath,omitempty"`
|
||||
|
||||
// Upstream represents the configuration for an upstream server.
|
||||
// Upstreams represents the configuration for the upstream servers.
|
||||
// Requests will be proxied to this upstream if the path matches the request path.
|
||||
Configs []Upstream `json:"configs,omitempty"`
|
||||
Upstreams []Upstream `json:"upstreams,omitempty"`
|
||||
}
|
||||
|
||||
// Upstream represents the configuration for an upstream server.
|
||||
|
@ -22,7 +22,7 @@ type ProxyErrorHandler func(http.ResponseWriter, *http.Request, error)
|
||||
|
||||
// NewProxy creates a new multiUpstreamProxy that can serve requests directed to
|
||||
// multiple upstreams.
|
||||
func NewProxy(upstreams options.Upstreams, sigData *options.SignatureData, writer pagewriter.Writer) (http.Handler, error) {
|
||||
func NewProxy(upstreams options.UpstreamConfig, sigData *options.SignatureData, writer pagewriter.Writer) (http.Handler, error) {
|
||||
m := &multiUpstreamProxy{
|
||||
serveMux: mux.NewRouter(),
|
||||
}
|
||||
@ -31,7 +31,7 @@ func NewProxy(upstreams options.Upstreams, sigData *options.SignatureData, write
|
||||
m.serveMux.UseEncodedPath()
|
||||
}
|
||||
|
||||
for _, upstream := range sortByPathLongest(upstreams.Configs) {
|
||||
for _, upstream := range sortByPathLongest(upstreams.Upstreams) {
|
||||
if upstream.Static {
|
||||
if err := m.registerStaticResponseHandler(upstream, writer); err != nil {
|
||||
return nil, fmt.Errorf("could not register static upstream %q: %v", upstream.ID, err)
|
||||
|
@ -20,7 +20,7 @@ var _ = Describe("Proxy Suite", func() {
|
||||
target string
|
||||
response testHTTPResponse
|
||||
upstream string
|
||||
upstreams options.Upstreams
|
||||
upstreams options.UpstreamConfig
|
||||
}
|
||||
|
||||
Context("multiUpstreamProxy", func() {
|
||||
@ -40,8 +40,8 @@ var _ = Describe("Proxy Suite", func() {
|
||||
|
||||
// Allows for specifying settings and even individual upstreams for specific tests and uses the default upstreams/configs otherwise
|
||||
upstreams := in.upstreams
|
||||
if len(in.upstreams.Configs) == 0 {
|
||||
upstreams.Configs = []options.Upstream{
|
||||
if len(in.upstreams.Upstreams) == 0 {
|
||||
upstreams.Upstreams = []options.Upstream{
|
||||
{
|
||||
ID: "http-backend",
|
||||
Path: "/http/",
|
||||
@ -325,7 +325,7 @@ var _ = Describe("Proxy Suite", func() {
|
||||
upstream: "",
|
||||
}),
|
||||
Entry("containing an escaped '/' with ProxyRawPath", &proxyTableInput{
|
||||
upstreams: options.Upstreams{ProxyRawPath: true},
|
||||
upstreams: options.UpstreamConfig{ProxyRawPath: true},
|
||||
target: "http://example.localhost/%2F/test1/%2F/test2",
|
||||
response: testHTTPResponse{
|
||||
code: 404,
|
||||
|
@ -22,7 +22,7 @@ const (
|
||||
|
||||
func testOptions() *options.Options {
|
||||
o := options.NewOptions()
|
||||
o.UpstreamServers.Configs = append(o.UpstreamServers.Configs, options.Upstream{
|
||||
o.UpstreamServers.Upstreams = append(o.UpstreamServers.Upstreams, options.Upstream{
|
||||
ID: "upstream",
|
||||
Path: "/",
|
||||
URI: "http://127.0.0.1:8080/",
|
||||
|
@ -7,12 +7,12 @@ import (
|
||||
"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/options"
|
||||
)
|
||||
|
||||
func validateUpstreams(upstreams options.Upstreams) []string {
|
||||
func validateUpstreams(upstreams options.UpstreamConfig) []string {
|
||||
msgs := []string{}
|
||||
ids := make(map[string]struct{})
|
||||
paths := make(map[string]struct{})
|
||||
|
||||
for _, upstream := range upstreams.Configs {
|
||||
for _, upstream := range upstreams.Upstreams {
|
||||
msgs = append(msgs, validateUpstream(upstream, ids, paths)...)
|
||||
}
|
||||
|
||||
|
@ -11,7 +11,7 @@ import (
|
||||
|
||||
var _ = Describe("Upstreams", func() {
|
||||
type validateUpstreamTableInput struct {
|
||||
upstreams options.Upstreams
|
||||
upstreams options.UpstreamConfig
|
||||
errStrings []string
|
||||
}
|
||||
|
||||
@ -54,12 +54,12 @@ var _ = Describe("Upstreams", func() {
|
||||
Expect(validateUpstreams(o.upstreams)).To(ConsistOf(o.errStrings))
|
||||
},
|
||||
Entry("with no upstreams", &validateUpstreamTableInput{
|
||||
upstreams: options.Upstreams{},
|
||||
upstreams: options.UpstreamConfig{},
|
||||
errStrings: []string{},
|
||||
}),
|
||||
Entry("with valid upstreams", &validateUpstreamTableInput{
|
||||
upstreams: options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
upstreams: options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
validHTTPUpstream,
|
||||
validStaticUpstream,
|
||||
validFileUpstream,
|
||||
@ -68,8 +68,8 @@ var _ = Describe("Upstreams", func() {
|
||||
errStrings: []string{},
|
||||
}),
|
||||
Entry("with an empty ID", &validateUpstreamTableInput{
|
||||
upstreams: options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
upstreams: options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: "",
|
||||
Path: "/foo",
|
||||
@ -80,8 +80,8 @@ var _ = Describe("Upstreams", func() {
|
||||
errStrings: []string{emptyIDMsg},
|
||||
}),
|
||||
Entry("with an empty Path", &validateUpstreamTableInput{
|
||||
upstreams: options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
upstreams: options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: "foo",
|
||||
Path: "",
|
||||
@ -92,8 +92,8 @@ var _ = Describe("Upstreams", func() {
|
||||
errStrings: []string{emptyPathMsg},
|
||||
}),
|
||||
Entry("with an empty Path", &validateUpstreamTableInput{
|
||||
upstreams: options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
upstreams: options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: "foo",
|
||||
Path: "",
|
||||
@ -104,8 +104,8 @@ var _ = Describe("Upstreams", func() {
|
||||
errStrings: []string{emptyPathMsg},
|
||||
}),
|
||||
Entry("with an empty URI", &validateUpstreamTableInput{
|
||||
upstreams: options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
upstreams: options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: "foo",
|
||||
Path: "/foo",
|
||||
@ -116,8 +116,8 @@ var _ = Describe("Upstreams", func() {
|
||||
errStrings: []string{emptyURIMsg},
|
||||
}),
|
||||
Entry("with an invalid URI", &validateUpstreamTableInput{
|
||||
upstreams: options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
upstreams: options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: "foo",
|
||||
Path: "/foo",
|
||||
@ -128,8 +128,8 @@ var _ = Describe("Upstreams", func() {
|
||||
errStrings: []string{invalidURIMsg},
|
||||
}),
|
||||
Entry("with an invalid URI scheme", &validateUpstreamTableInput{
|
||||
upstreams: options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
upstreams: options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: "foo",
|
||||
Path: "/foo",
|
||||
@ -140,8 +140,8 @@ var _ = Describe("Upstreams", func() {
|
||||
errStrings: []string{invalidURISchemeMsg},
|
||||
}),
|
||||
Entry("with a static upstream and invalid optons", &validateUpstreamTableInput{
|
||||
upstreams: options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
upstreams: options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: "foo",
|
||||
Path: "/foo",
|
||||
@ -163,8 +163,8 @@ var _ = Describe("Upstreams", func() {
|
||||
},
|
||||
}),
|
||||
Entry("with duplicate IDs", &validateUpstreamTableInput{
|
||||
upstreams: options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
upstreams: options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: "foo",
|
||||
Path: "/foo1",
|
||||
@ -180,8 +180,8 @@ var _ = Describe("Upstreams", func() {
|
||||
errStrings: []string{multipleIDsMsg},
|
||||
}),
|
||||
Entry("with duplicate Paths", &validateUpstreamTableInput{
|
||||
upstreams: options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
upstreams: options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: "foo1",
|
||||
Path: "/foo",
|
||||
@ -197,8 +197,8 @@ var _ = Describe("Upstreams", func() {
|
||||
errStrings: []string{multiplePathsMsg},
|
||||
}),
|
||||
Entry("when a static code is supplied without static", &validateUpstreamTableInput{
|
||||
upstreams: options.Upstreams{
|
||||
Configs: []options.Upstream{
|
||||
upstreams: options.UpstreamConfig{
|
||||
Upstreams: []options.Upstream{
|
||||
{
|
||||
ID: "foo",
|
||||
Path: "/foo",
|
||||
|
Loading…
Reference in New Issue
Block a user