84 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
| package validation
 | |
| 
 | |
| import (
 | |
| 	"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/options"
 | |
| 	. "github.com/onsi/ginkgo/v2"
 | |
| 	. "github.com/onsi/gomega"
 | |
| )
 | |
| 
 | |
| var _ = Describe("Providers", func() {
 | |
| 	type validateProvidersTableInput struct {
 | |
| 		options    *options.Options
 | |
| 		errStrings []string
 | |
| 	}
 | |
| 
 | |
| 	validProvider := options.Provider{
 | |
| 		ID:           "ProviderID",
 | |
| 		ClientID:     "ClientID",
 | |
| 		ClientSecret: "ClientSecret",
 | |
| 	}
 | |
| 
 | |
| 	validLoginGovProvider := options.Provider{
 | |
| 		Type:         "login.gov",
 | |
| 		ID:           "ProviderIDLoginGov",
 | |
| 		ClientID:     "ClientID",
 | |
| 		ClientSecret: "ClientSecret",
 | |
| 	}
 | |
| 
 | |
| 	missingIDProvider := options.Provider{
 | |
| 		ClientID:     "ClientID",
 | |
| 		ClientSecret: "ClientSecret",
 | |
| 	}
 | |
| 
 | |
| 	missingProvider := "at least one provider has to be defined"
 | |
| 	emptyIDMsg := "provider has empty id: ids are required for all providers"
 | |
| 	duplicateProviderIDMsg := "multiple providers found with id ProviderID: provider ids must be unique"
 | |
| 	skipButtonAndMultipleProvidersMsg := "SkipProviderButton and multiple providers are mutually exclusive"
 | |
| 
 | |
| 	DescribeTable("validateProviders",
 | |
| 		func(o *validateProvidersTableInput) {
 | |
| 			Expect(validateProviders(o.options)).To(ConsistOf(o.errStrings))
 | |
| 		},
 | |
| 		Entry("with no providers", &validateProvidersTableInput{
 | |
| 			options:    &options.Options{},
 | |
| 			errStrings: []string{missingProvider},
 | |
| 		}),
 | |
| 		Entry("with valid providers", &validateProvidersTableInput{
 | |
| 			options: &options.Options{
 | |
| 				Providers: options.Providers{
 | |
| 					validProvider,
 | |
| 					validLoginGovProvider,
 | |
| 				},
 | |
| 			},
 | |
| 			errStrings: []string{},
 | |
| 		}),
 | |
| 		Entry("with an empty providerID", &validateProvidersTableInput{
 | |
| 			options: &options.Options{
 | |
| 				Providers: options.Providers{
 | |
| 					missingIDProvider,
 | |
| 				},
 | |
| 			},
 | |
| 			errStrings: []string{emptyIDMsg},
 | |
| 		}),
 | |
| 		Entry("with same providerID", &validateProvidersTableInput{
 | |
| 			options: &options.Options{
 | |
| 				Providers: options.Providers{
 | |
| 					validProvider,
 | |
| 					validProvider,
 | |
| 				},
 | |
| 			},
 | |
| 			errStrings: []string{duplicateProviderIDMsg},
 | |
| 		}),
 | |
| 		Entry("with multiple providers and skip provider button", &validateProvidersTableInput{
 | |
| 			options: &options.Options{
 | |
| 				SkipProviderButton: true,
 | |
| 				Providers: options.Providers{
 | |
| 					validProvider,
 | |
| 					validLoginGovProvider,
 | |
| 				},
 | |
| 			},
 | |
| 			errStrings: []string{skipButtonAndMultipleProvidersMsg},
 | |
| 		}),
 | |
| 	)
 | |
| })
 |