@ -9,6 +9,26 @@ import (
wrapping "github.com/hashicorp/go-kms-wrapping"
)
type option struct {
tcOptions * controller . TestControllerOpts
setWithConfigFile bool
setWithConfigText bool
setDisableAuthMethodCreation bool
setDisableDatabaseCreation bool
setDisableDatabaseDestruction bool
setDefaultPasswordAuthMethodId bool
setDefaultOidcAuthMethodId bool
setDefaultLoginName bool
setDefaultPassword bool
setRootKms bool
setWorkerAuthKms bool
setRecoveryKms bool
setDatabaseUrl bool
setEnableTemplatedDatabase bool
}
type Option func ( * option ) error
func getOpts ( opt ... Option ) ( * controller . TestControllerOpts , error ) {
opts := & option {
tcOptions : & controller . TestControllerOpts { } ,
@ -18,11 +38,15 @@ func getOpts(opt ...Option) (*controller.TestControllerOpts, error) {
return nil , err
}
}
opts . tcOptions . DisableDatabaseTemplate = ! opts . setEnableTemplatedDatabase
if opts . setWithConfigFile && opts . setWithConfigText {
return nil , fmt . Errorf ( "Cannot provide both WithConfigFile and WithConfigText" )
}
var setDbParams bool
if opts . setDefaultPasswordAuthMethodId || opts . setDefaultOidcAuthMethodId || opts . setDefaultLoginName || opts . setDefaultPassword {
if opts . setDefaultPasswordAuthMethodId ||
opts . setDefaultOidcAuthMethodId ||
opts . setDefaultLoginName ||
opts . setDefaultPassword {
setDbParams = true
}
if opts . setDisableAuthMethodCreation {
@ -38,25 +62,6 @@ func getOpts(opt ...Option) (*controller.TestControllerOpts, error) {
return opts . tcOptions , nil
}
type option struct {
tcOptions * controller . TestControllerOpts
setWithConfigFile bool
setWithConfigText bool
setDisableAuthMethodCreation bool
setDisableDatabaseCreation bool
setDisableDatabaseDestruction bool
setDefaultPasswordAuthMethodId bool
setDefaultOidcAuthMethodId bool
setDefaultLoginName bool
setDefaultPassword bool
setRootKms bool
setWorkerAuthKms bool
setRecoveryKms bool
setDatabaseUrl bool
}
type Option func ( * option ) error
// WithConfigFile provides the given ConfigFile to the built TestController.
// This option cannot be used if WithConfigText is used.
func WithConfigFile ( f string ) Option {
@ -184,6 +189,20 @@ func WithDatabaseUrl(url string) Option {
}
}
// WithEnableTemplatedDatabase enables usage of a local database test instance
// with a template. Generally outside tests will probably want to use the
// non-templated database, so this defaults to enabling instead of disabling.
func WithEnableTemplatedDatabase ( enable bool ) Option {
return func ( c * option ) error {
c . setEnableTemplatedDatabase = enable
return nil
}
}
type TestController struct {
* controller . TestController
}
// NewTestController blocks until a new TestController is created, returns the url for the TestController and a function
// that can be called to tear down the controller after it has been used for testing.
func NewTestController ( t * testing . T , opt ... Option ) * TestController {
@ -194,7 +213,3 @@ func NewTestController(t *testing.T, opt ...Option) *TestController {
tc := controller . NewTestController ( t , conf )
return & TestController { TestController : tc }
}
type TestController struct {
* controller . TestController
}