forked from deblan/database-anonymizer
[wip] add run tests
This commit is contained in:
parent
1c6f792711
commit
a5fc2071da
3 changed files with 65 additions and 4 deletions
|
|
@ -1,22 +1,19 @@
|
||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"database/sql"
|
||||||
_ "github.com/go-sql-driver/mysql"
|
_ "github.com/go-sql-driver/mysql"
|
||||||
"gitnet.fr/deblan/database-anonymizer/config"
|
"gitnet.fr/deblan/database-anonymizer/config"
|
||||||
"gitnet.fr/deblan/database-anonymizer/faker"
|
"gitnet.fr/deblan/database-anonymizer/faker"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetApp() App {
|
func TestAppCreateSelectQuery(t *testing.T) {
|
||||||
return App{
|
c := config.SchemaConfigAction{Table: "foo"}
|
||||||
|
app := App{
|
||||||
FakeManager: faker.NewFakeManager(),
|
FakeManager: faker.NewFakeManager(),
|
||||||
DbConfig: config.DatabaseConfig{Type: "mysql", Dsn: "mysql://foo:bar@tests"},
|
DbConfig: config.DatabaseConfig{Type: "mysql", Dsn: "mysql://foo:bar@tests"},
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
func TestAppCreateSelectQuery(t *testing.T) {
|
|
||||||
c := config.SchemaConfigAction{Table: "foo"}
|
|
||||||
app := GetApp()
|
|
||||||
|
|
||||||
if app.CreateSelectQuery(c) != "SELECT * FROM `foo`" {
|
if app.CreateSelectQuery(c) != "SELECT * FROM `foo`" {
|
||||||
t.Fatalf("TestAppCreateSelectQuery: empty configured query check failed")
|
t.Fatalf("TestAppCreateSelectQuery: empty configured query check failed")
|
||||||
|
|
@ -28,3 +25,38 @@ func TestAppCreateSelectQuery(t *testing.T) {
|
||||||
t.Fatalf("TestAppCreateSelectQuery: configured query check failed")
|
t.Fatalf("TestAppCreateSelectQuery: configured query check failed")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAppDoAction(t *testing.T) {
|
||||||
|
c := config.SchemaConfigAction{Table: "foo"}
|
||||||
|
app := App{
|
||||||
|
FakeManager: faker.NewFakeManager(),
|
||||||
|
DbConfig: config.DatabaseConfig{Type: "mysql", Dsn: "mysql://foo:bar@tests"},
|
||||||
|
}
|
||||||
|
|
||||||
|
if app.CreateSelectQuery(c) != "SELECT * FROM `foo`" {
|
||||||
|
t.Fatalf("TestAppCreateSelectQuery: empty configured query check failed")
|
||||||
|
}
|
||||||
|
|
||||||
|
c = config.SchemaConfigAction{Table: "foo", Query: "query"}
|
||||||
|
|
||||||
|
if app.CreateSelectQuery(c) != "query" {
|
||||||
|
t.Fatalf("TestAppCreateSelectQuery: configured query check failed")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAppRun(t *testing.T) {
|
||||||
|
databaseConfig, _ := config.LoadDatabaseConfig("mysql://tcp(service-mysql)/test")
|
||||||
|
db, _ := sql.Open(databaseConfig.Type, databaseConfig.Dsn)
|
||||||
|
schema, _ := config.LoadSchemaConfigFromFile("../tests/schema.yml")
|
||||||
|
|
||||||
|
app := App{}
|
||||||
|
app.Run(db, schema, faker.NewFakeManager(), databaseConfig)
|
||||||
|
|
||||||
|
var count int
|
||||||
|
row := db.QueryRow("SELECT COUNT(*) FROM `table_truncate1`")
|
||||||
|
row.Scan(&count)
|
||||||
|
|
||||||
|
if count != 0 {
|
||||||
|
t.Fatalf("TestAppRuny: table_truncate1 check failed")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
25
tests/mysql_data.sql
Normal file
25
tests/mysql_data.sql
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
SET NAMES utf8;
|
||||||
|
SET time_zone = '+00:00';
|
||||||
|
SET foreign_key_checks = 0;
|
||||||
|
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||||||
|
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `table_truncate1`;
|
||||||
|
CREATE TABLE `table_truncate1` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `table_truncate2`;
|
||||||
|
CREATE TABLE `table_truncate2` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`delete_me` tinyint(4) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
|
|
||||||
|
INSERT INTO `table_truncate2` (`id`, `delete_me`) VALUES
|
||||||
|
(1, 1),
|
||||||
|
(2, 1),
|
||||||
|
(3, 0);
|
||||||
4
tests/schema.yml
Normal file
4
tests/schema.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
rules:
|
||||||
|
actions:
|
||||||
|
- table: table_truncate1
|
||||||
|
truncate: false
|
||||||
Loading…
Add table
Add a link
Reference in a new issue