diff --git a/modules/mysql/mysql.go b/modules/mysql/mysql.go index 980bad4aae..0db2ca7806 100644 --- a/modules/mysql/mysql.go +++ b/modules/mysql/mysql.go @@ -79,16 +79,19 @@ func StartContainer(ctx context.Context, opts ...MySQLContainerOption) (*MySQLCo return &MySQLContainer{container, username, password, database}, nil } -func (c *MySQLContainer) Username() string { - return c.username -} +func (c *MySQLContainer) ConnectionString(ctx context.Context) (string, error) { + containerPort, err := c.MappedPort(ctx, "3306/tcp") + if err != nil { + return "", err + } -func (c *MySQLContainer) Password() string { - return c.password -} + host, err := c.Host(ctx) + if err != nil { + return "", err + } -func (c *MySQLContainer) Database() string { - return c.database + connectionString := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", c.username, c.password, host, containerPort.Port(), c.database) + return connectionString, nil } // WithImage sets the image to be used for the mysql container diff --git a/modules/mysql/mysql_test.go b/modules/mysql/mysql_test.go index b29e23ac3f..170a17fdc2 100644 --- a/modules/mysql/mysql_test.go +++ b/modules/mysql/mysql_test.go @@ -3,7 +3,6 @@ package mysql import ( "context" "database/sql" - "fmt" "path/filepath" "testing" @@ -27,14 +26,7 @@ func TestMySQL(t *testing.T) { }) // perform assertions - - host, _ := container.Host(ctx) - - p, _ := container.MappedPort(ctx, "3306/tcp") - port := p.Int() - - connectionString := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?tls=skip-verify", - container.Username(), container.Password(), host, port, container.Database()) + connectionString, _ := container.ConnectionString(ctx) db, err := sql.Open("mysql", connectionString) if err != nil { @@ -88,14 +80,7 @@ func TestMySQLWithRootUserAndEmptyPassword(t *testing.T) { }) // perform assertions - - host, _ := container.Host(ctx) - - p, _ := container.MappedPort(ctx, "3306/tcp") - port := p.Int() - - connectionString := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?tls=skip-verify", - container.Username(), container.Password(), host, port, container.Database()) + connectionString, _ := container.ConnectionString(ctx) db, err := sql.Open("mysql", connectionString) if err != nil { @@ -135,14 +120,7 @@ func TestMySQLWithConfigFile(t *testing.T) { }) // perform assertions - - host, _ := container.Host(ctx) - - p, _ := container.MappedPort(ctx, "3306/tcp") - port := p.Int() - - connectionString := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s", - container.Username(), container.Password(), host, port, container.Database()) + connectionString, _ := container.ConnectionString(ctx) db, err := sql.Open("mysql", connectionString) if err != nil { @@ -188,14 +166,7 @@ func TestMySQLWithScripts(t *testing.T) { }) // perform assertions - - host, _ := container.Host(ctx) - - p, _ := container.MappedPort(ctx, "3306/tcp") - port := p.Int() - - connectionString := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?tls=skip-verify", - container.Username(), container.Password(), host, port, container.Database()) + connectionString, _ := container.ConnectionString(ctx) db, err := sql.Open("mysql", connectionString) if err != nil {