Additional generator tests.
This commit is contained in:
parent
d7a5adb239
commit
12509eaf44
2 changed files with 40 additions and 24 deletions
|
|
@ -1,10 +1,14 @@
|
||||||
package errfmt
|
package errfmt
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/go-jet/jet/v2/internal/utils/is"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Trace returns well formatted wrapped error trace string
|
// Trace returns well formatted wrapped error trace string
|
||||||
func Trace(err error) string {
|
func Trace(err error) string {
|
||||||
|
if is.Nil(err) {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
return "Error trace:\n" + " - " + strings.Replace(err.Error(), ": ", ":\n - ", -1)
|
return "Error trace:\n" + " - " + strings.Replace(err.Error(), ": ", ":\n - ", -1)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,26 @@ import (
|
||||||
"github.com/go-jet/jet/v2/tests/.gentestdata/jetdb/dvds/model"
|
"github.com/go-jet/jet/v2/tests/.gentestdata/jetdb/dvds/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func dsn(host string, port int, dbName, user, password string) string {
|
||||||
|
return fmt.Sprintf("postgresql://%s:%s@%s:%d/%s?sslmode=disable",
|
||||||
|
user,
|
||||||
|
password,
|
||||||
|
host,
|
||||||
|
port,
|
||||||
|
dbName,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func defaultDSN() string {
|
||||||
|
return dsn(
|
||||||
|
dbconfig.PgHost,
|
||||||
|
dbconfig.PgPort,
|
||||||
|
dbconfig.PgDBName,
|
||||||
|
dbconfig.PgUser,
|
||||||
|
dbconfig.PgPassword,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
func TestGeneratedModel(t *testing.T) {
|
func TestGeneratedModel(t *testing.T) {
|
||||||
actor := model.Actor{}
|
actor := model.Actor{}
|
||||||
|
|
||||||
|
|
@ -73,14 +93,7 @@ func TestCmdGenerator(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// Check that connection via DSN works
|
// Check that connection via DSN works
|
||||||
dsn := fmt.Sprintf("postgresql://%s:%s@%s:%d/%s?sslmode=disable",
|
cmd = exec.Command("jet", "-dsn="+defaultDSN(), "-schema=dvds", "-path="+genTestDir2)
|
||||||
dbconfig.PgUser,
|
|
||||||
dbconfig.PgPassword,
|
|
||||||
dbconfig.PgHost,
|
|
||||||
dbconfig.PgPort,
|
|
||||||
"jetdb",
|
|
||||||
)
|
|
||||||
cmd = exec.Command("jet", "-dsn="+dsn, "-schema=dvds", "-path="+genTestDir2)
|
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
cmd.Stdout = os.Stdout
|
cmd.Stdout = os.Stdout
|
||||||
|
|
||||||
|
|
@ -101,13 +114,7 @@ func TestGeneratorIgnoreTables(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "with dsn",
|
name: "with dsn",
|
||||||
args: []string{
|
args: []string{
|
||||||
"-dsn=" + fmt.Sprintf("postgresql://%s:%s@%s:%d/%s?sslmode=disable",
|
"-dsn=" + defaultDSN(),
|
||||||
dbconfig.PgUser,
|
|
||||||
dbconfig.PgPassword,
|
|
||||||
dbconfig.PgHost,
|
|
||||||
dbconfig.PgPort,
|
|
||||||
"jetdb",
|
|
||||||
),
|
|
||||||
"-schema=dvds",
|
"-schema=dvds",
|
||||||
"-ignore-tables=actor,ADDRESS,country, Film , cITY,",
|
"-ignore-tables=actor,ADDRESS,country, Film , cITY,",
|
||||||
"-ignore-views=Actor_info, FILM_LIST ,staff_list",
|
"-ignore-views=Actor_info, FILM_LIST ,staff_list",
|
||||||
|
|
@ -191,15 +198,7 @@ func TestGenerator(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < 3; i++ {
|
for i := 0; i < 3; i++ {
|
||||||
dsn := fmt.Sprintf("postgresql://%[1]s:%[2]s@%[3]s:%[4]d/%[5]s?sslmode=disable",
|
err := postgres.GenerateDSN(defaultDSN(), "dvds", genTestDir2)
|
||||||
dbconfig.PgUser,
|
|
||||||
dbconfig.PgPassword,
|
|
||||||
dbconfig.PgHost,
|
|
||||||
dbconfig.PgPort,
|
|
||||||
dbconfig.PgDBName,
|
|
||||||
)
|
|
||||||
err := postgres.GenerateDSN(dsn, "dvds", genTestDir2)
|
|
||||||
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assertGeneratedFiles(t)
|
assertGeneratedFiles(t)
|
||||||
|
|
@ -226,6 +225,19 @@ func TestGeneratorSpecialCharacters(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGenerateErrorCases(t *testing.T) {
|
||||||
|
err := postgres.GenerateDSN("!@#$%&*", "", "")
|
||||||
|
require.ErrorContains(t, err, "failed to parse as DSN")
|
||||||
|
err = postgres.GenerateDSN(dsn(dbconfig.PgHost, -1, "!@!#", "", ""), "", "")
|
||||||
|
require.ErrorContains(t, err, "invalid port")
|
||||||
|
err = postgres.GenerateDSN(dsn(dbconfig.PgHost, dbconfig.PgPort, "!@!#", "", ""), "", "")
|
||||||
|
require.ErrorContains(t, err, "failed to open db connection")
|
||||||
|
err = postgres.GenerateDSN(dsn(dbconfig.PgHost, dbconfig.PgPort, dbconfig.PgDBName, "", ""), "", "")
|
||||||
|
require.ErrorContains(t, err, "password authentication failed")
|
||||||
|
err = postgres.GenerateDSN(dsn(dbconfig.PgHost, dbconfig.PgPort, dbconfig.PgDBName, dbconfig.PgUser, ""), "", "")
|
||||||
|
require.ErrorContains(t, err, "password authentication failed for user \"jet\"")
|
||||||
|
}
|
||||||
|
|
||||||
func assertGeneratedFiles(t *testing.T) {
|
func assertGeneratedFiles(t *testing.T) {
|
||||||
// Table SQL Builder files
|
// Table SQL Builder files
|
||||||
testutils.AssertFileNamesEqual(t, "./.gentestdata2/jetdb/dvds/table",
|
testutils.AssertFileNamesEqual(t, "./.gentestdata2/jetdb/dvds/table",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue