github.com/tommi2day/gomodules/dblib@v0.0.0-20230217211148-82cdbcf0a79d/db_test.go (about) 1 package dblib 2 3 import ( 4 "database/sql" 5 "os" 6 "testing" 7 8 ora "github.com/sijms/go-ora/v2" 9 10 _ "github.com/glebarez/go-sqlite" 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 ) 14 15 var urlOptions = map[string]string{ 16 // "CONNECTION TIMEOUT": "3", 17 } 18 19 func newTestfile(filename string) error { 20 var err error 21 var f *os.File 22 //nolint gosec 23 f, err = os.Create(filename) 24 if err != nil { 25 return err 26 } 27 err = f.Close() 28 return err 29 } 30 31 func TestDBConnect(t *testing.T) { 32 t.Run("Test DB Connect Memory", func(t *testing.T) { 33 db, err := DBConnect("sqlite", ":memory:", 5) 34 defer func(db *sql.DB) { 35 _ = db.Close() 36 }(db) 37 require.NoError(t, err, "DB Open sqlite memory failed") 38 assert.NotEmpty(t, db, "DB Handle missed") 39 }) 40 41 t.Run("Test DB Connect noexisting oracle", func(t *testing.T) { 42 service := "xxx" 43 connect := ora.BuildJDBC("dummy", "dummy", service, urlOptions) 44 _, err := DBConnect("oracle", connect, 5) 45 assert.Error(t, err, "DB Open oracle should fail") 46 }) 47 48 t.Run("Test DB Connect existing file", func(t *testing.T) { 49 filename := "test2.db" 50 err := newTestfile(filename) 51 if err != nil { 52 t.Fatalf("Cannot create sqlite file") 53 } 54 db, err := DBConnect("sqlite", filename, 5) 55 require.NoError(t, err, "DB Open sqlite %s failed") 56 assert.NotEmpty(t, db, "DB Handle missed") 57 e := db.Close() 58 if e == nil { 59 _ = os.Remove(filename) 60 } 61 }) 62 } 63 64 func TestSelectOneStringValue(t *testing.T) { 65 var actual string 66 var err error 67 filename := "test3.db" 68 err = newTestfile(filename) 69 if err != nil { 70 t.Fatalf("Cannot create sqlite file") 71 } 72 db, err := DBConnect("sqlite", filename, 5) 73 defer func(db *sql.DB) { 74 e := db.Close() 75 if e == nil { 76 _ = os.Remove(filename) 77 } 78 }(db) 79 if err != nil { 80 t.Fatalf("DB Open sqlite %s failed", filename) 81 } 82 if db == nil { 83 t.Fatalf("DB Handle missed") 84 } 85 86 t.Run("Test Select Singlerow", func(t *testing.T) { 87 mysql := "select sqlite_version()" 88 actual, err = SelectOneStringValue(db, mysql) 89 assert.NoErrorf(t, err, "Querry returned error %s", err) 90 assert.NotEmpty(t, actual, "Select value empty") 91 t.Logf("Version %s", actual) 92 }) 93 t.Run("Test wrong sql", func(t *testing.T) { 94 mysql := "seleccct sqlite_version()" 95 _, err = SelectOneStringValue(db, mysql) 96 assert.Error(t, err, "Query returned no error, but should") 97 }) 98 }