2024-07-18 17:03:18 +02:00
|
|
|
package dbimpl
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
)
|
|
|
|
|
|
2024-07-22 14:08:30 -03:00
|
|
|
func newValidMySQLGetter() *sectionGetter {
|
|
|
|
|
return newTestSectionGetter(map[string]string{
|
|
|
|
|
"db_type": dbTypeMySQL,
|
|
|
|
|
"db_host": "/var/run/mysql.socket",
|
|
|
|
|
"db_name": "grafana",
|
|
|
|
|
"db_user": "user",
|
|
|
|
|
"db_password": "password",
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2024-07-18 17:03:18 +02:00
|
|
|
func TestGetEngineMySQLFromConfig(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
|
|
|
|
|
|
|
|
|
t.Run("happy path", func(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
2024-07-22 14:08:30 -03:00
|
|
|
engine, err := getEngineMySQL(newValidMySQLGetter(), nil)
|
2024-07-18 17:03:18 +02:00
|
|
|
assert.NotNil(t, engine)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("invalid string", func(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
|
|
|
|
|
|
|
|
|
getter := newTestSectionGetter(map[string]string{
|
2024-07-22 14:08:30 -03:00
|
|
|
"db_type": dbTypeMySQL,
|
2024-07-18 17:03:18 +02:00
|
|
|
"db_host": "/var/run/mysql.socket",
|
|
|
|
|
"db_name": string(invalidUTF8ByteSequence),
|
|
|
|
|
"db_user": "user",
|
|
|
|
|
"db_password": "password",
|
|
|
|
|
})
|
|
|
|
|
engine, err := getEngineMySQL(getter, nil)
|
|
|
|
|
assert.Nil(t, engine)
|
|
|
|
|
assert.Error(t, err)
|
2024-07-22 14:08:30 -03:00
|
|
|
assert.ErrorIs(t, err, errInvalidUTF8Sequence)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func newValidPostgresGetter() *sectionGetter {
|
|
|
|
|
return newTestSectionGetter(map[string]string{
|
|
|
|
|
"db_type": dbTypePostgres,
|
|
|
|
|
"db_host": "localhost",
|
|
|
|
|
"db_name": "grafana",
|
|
|
|
|
"db_user": "user",
|
|
|
|
|
"db_password": "password",
|
2024-07-18 17:03:18 +02:00
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestGetEnginePostgresFromConfig(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
|
|
|
|
|
|
|
|
|
t.Run("happy path", func(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
2024-07-22 14:08:30 -03:00
|
|
|
engine, err := getEnginePostgres(newValidPostgresGetter(), nil)
|
2024-07-18 17:03:18 +02:00
|
|
|
assert.NotNil(t, engine)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("invalid string", func(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
|
|
|
|
getter := newTestSectionGetter(map[string]string{
|
2024-07-22 14:08:30 -03:00
|
|
|
"db_type": dbTypePostgres,
|
2024-07-18 17:03:18 +02:00
|
|
|
"db_host": string(invalidUTF8ByteSequence),
|
|
|
|
|
"db_name": "grafana",
|
|
|
|
|
"db_user": "user",
|
|
|
|
|
"db_password": "password",
|
|
|
|
|
})
|
|
|
|
|
engine, err := getEnginePostgres(getter, nil)
|
|
|
|
|
|
|
|
|
|
assert.Nil(t, engine)
|
|
|
|
|
assert.Error(t, err)
|
2024-07-22 14:08:30 -03:00
|
|
|
assert.ErrorIs(t, err, errInvalidUTF8Sequence)
|
2024-07-18 17:03:18 +02:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("invalid hostport", func(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
|
|
|
|
getter := newTestSectionGetter(map[string]string{
|
2024-07-22 14:08:30 -03:00
|
|
|
"db_type": dbTypePostgres,
|
2024-07-18 17:03:18 +02:00
|
|
|
"db_host": "1:1:1",
|
|
|
|
|
"db_name": "grafana",
|
|
|
|
|
"db_user": "user",
|
|
|
|
|
"db_password": "password",
|
|
|
|
|
})
|
|
|
|
|
engine, err := getEnginePostgres(getter, nil)
|
|
|
|
|
|
|
|
|
|
assert.Nil(t, engine)
|
|
|
|
|
assert.Error(t, err)
|
|
|
|
|
})
|
|
|
|
|
}
|