From ff705bf3b21cfabdc2de6334dc76304131c59111 Mon Sep 17 00:00:00 2001 From: Todd Knight Date: Mon, 18 May 2020 16:26:25 -0700 Subject: [PATCH] Revert "Allow the TestController to be used outside of our module." This reverts commit e1010ba0 --- internal/servers/controller/testing.go | 15 +--- testing/controller/test_controller.go | 101 ------------------------- 2 files changed, 4 insertions(+), 112 deletions(-) delete mode 100644 testing/controller/test_controller.go diff --git a/internal/servers/controller/testing.go b/internal/servers/controller/testing.go index e6f35dd7a7..231fda56e6 100644 --- a/internal/servers/controller/testing.go +++ b/internal/servers/controller/testing.go @@ -19,7 +19,6 @@ type TestController struct { b *base.Server c *Controller t *testing.T - addr string // The address the Controller API is listening on client *api.Client ctx context.Context cancel context.CancelFunc @@ -42,10 +41,7 @@ func (tc *TestController) Cancel() { tc.cancel() } -func (tc *TestController) ApiAddress() string { - if tc.addr != "" { - return tc.addr - } +func (tc *TestController) buildClient() { var apiLn *base.ServerListener for _, listener := range tc.b.Listeners { if listener.Config.Purpose[0] == "api" { @@ -56,20 +52,17 @@ func (tc *TestController) ApiAddress() string { if apiLn == nil { tc.t.Fatal("could not find api listener") } + tcpAddr, ok := apiLn.Mux.Addr().(*net.TCPAddr) if !ok { tc.t.Fatal("could not parse address as a TCP addr") } - tc.addr = fmt.Sprintf("http://%s:%d", tcpAddr.IP.String(), tcpAddr.Port) - return tc.addr -} - -func (tc *TestController) buildClient() { + addr := fmt.Sprintf("http://%s:%d", tcpAddr.IP.String(), tcpAddr.Port) client, err := api.NewClient(nil) if err != nil { tc.t.Fatal(fmt.Errorf("error creating client: %w", err)) } - if err := client.SetAddr(tc.ApiAddress()); err != nil { + if err := client.SetAddr(addr); err != nil { tc.t.Fatal(fmt.Errorf("error setting client address: %w", err)) } diff --git a/testing/controller/test_controller.go b/testing/controller/test_controller.go deleted file mode 100644 index 88e4c5bb6c..0000000000 --- a/testing/controller/test_controller.go +++ /dev/null @@ -1,101 +0,0 @@ -package controller - -import ( - "fmt" - "testing" - - "github.com/hashicorp/watchtower/internal/cmd/config" - "github.com/hashicorp/watchtower/internal/servers/controller" -) - -func getOpts(opt ...Option) (*controller.TestControllerOpts, error) { - opts := &option{ - tcOptions: &controller.TestControllerOpts{}, - } - for _, o := range opt { - if err := o(opts); err != nil { - return nil, err - } - } - if opts.setWithConfigFile && opts.setWithConfigText { - return nil, fmt.Errorf("Cannot provide both WithConfigFile and WithConfigText") - } - return opts.tcOptions, nil -} - -type option struct { - tcOptions *controller.TestControllerOpts - setWithConfigFile bool - setWithConfigText bool - setDisableDatabaseCreation bool - setDefaultOrgId bool -} - -type Option func(*option) error - -// WithConfigFile provides the given ConfigFile to the built TestController. This option can not be used if WithConfigText is used. -func WithConfigFile(f string) Option { - return func(c *option) error { - if c.setWithConfigFile { - return fmt.Errorf("WithConfigFile provided more than once.") - } - c.setWithConfigFile = true - cfg, err := config.LoadFile(f) - if err != nil { - return err - } - c.tcOptions.Config = cfg - return nil - } -} - -// WithConfigText configures the TestController sets up the Controller using the provided config text. This option cannot be used if WithConfigFile is used. -func WithConfigText(ct string) Option { - return func(c *option) error { - if c.setWithConfigText { - return fmt.Errorf("WithConfigText provided more than once.") - } - c.setWithConfigText = true - cfg, err := config.Parse(ct) - if err != nil { - return err - } - c.tcOptions.Config = cfg - return nil - } -} - -// DisableDatabaseCreation skips creating a database in docker and allows one to be provided through a tcOptions. -func DisableDatabaseCreation() Option { - return func(c *option) error { - if c.setDisableDatabaseCreation { - return fmt.Errorf("DisableDatabaseCreation provided more than once.") - } - c.setDisableDatabaseCreation = true - c.tcOptions.DisableDatabaseCreation = true - return nil - } -} - -// WithDefaultOrgId sets the org id to the one provided here. -func WithDefaultOrgId(id string) Option { - return func(c *option) error { - if c.setDefaultOrgId { - return fmt.Errorf("WithDefaultOrgId provided more than once.") - } - c.setDefaultOrgId = true - c.tcOptions.DefaultOrgId = id - return nil - } -} - -// 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) (string, func()) { - conf, err := getOpts(opt...) - if err != nil { - t.Fatal("Couldn't create TestController: %v", err) - } - tc := controller.NewTestController(t, conf) - return tc.ApiAddress(), tc.Shutdown -}