package lkgateway import ( "strings" "testing" ) func TestDepoTablesScript(t *testing.T) { ms := depoTablesScript(FancyMSSQLSettings{User: "bj_user", DepoDatabase: "DEPO"}) for _, want := range []string{"USE [DEPO];", "CREATE TABLE dbo.FTV_M2M (", "CREATE TABLE dbo.FTV_M2M_HANDBOOK (", "\nGO\n", "IF COL_LENGTH(N'dbo.FTV_M2M_LINES', N'SHARE') IS NULL ALTER TABLE", "GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.FTV_M2M_EVENTS TO [bj_user]", "STATE varchar(64) NOT NULL CONSTRAINT DF_FTV_M2M_STATE DEFAULT ('TODO')"} { if !strings.Contains(ms, want) { t.Errorf("MSSQL: нет %q", want) } } if n := strings.Count(ms, "CREATE TABLE "); n != len(depoTableSpecs) { t.Errorf("MSSQL: CREATE TABLE %d, ожидали %d", n, len(depoTableSpecs)) } pg := depoTablesScript(FancyMSSQLSettings{DBType: "postgres", User: "bj_user"}) for _, want := range []string{"CREATE TABLE IF NOT EXISTS FTV_M2M (", "ID integer GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY", "ADD COLUMN IF NOT EXISTS SHARE integer NULL", `GRANT SELECT, INSERT, UPDATE, DELETE ON FTV_M2M, FTV_M2M_LINES, FTV_M2M_EVENTS, FTV_M2M_HANDBOOK TO "bj_user"`, "-d BJ_DEPO_DATA"} { if !strings.Contains(pg, want) { t.Errorf("PostgreSQL: нет %q", want) } } for _, bad := range []string{"\nGO\n", "dbo.", "GETDATE", "varchar(max)", "uniqueidentifier"} { if strings.Contains(pg, bad) { t.Errorf("PostgreSQL: лишнее %q", bad) } } if g := depoTablesGrantSQL(false, "bj]; DROP TABLE x;--"); g != nil { t.Errorf("логин с недопустимыми символами не должен попадать в GRANT: %v", g) } }