(t *testing.T, dialect string, dsn string)
| 113 | } |
| 114 | |
| 115 | func openTokenControllerExternalDB(t *testing.T, dialect string, dsn string) (*gorm.DB, *bool) { |
| 116 | t.Helper() |
| 117 | |
| 118 | gin.SetMode(gin.TestMode) |
| 119 | common.RedisEnabled = false |
| 120 | |
| 121 | var ( |
| 122 | db *gorm.DB |
| 123 | dbType common.DatabaseType |
| 124 | err error |
| 125 | ) |
| 126 | switch dialect { |
| 127 | case "mysql": |
| 128 | dbType = common.DatabaseTypeMySQL |
| 129 | db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) |
| 130 | case "postgres": |
| 131 | dbType = common.DatabaseTypePostgreSQL |
| 132 | db, err = gorm.Open(postgres.Open(dsn), &gorm.Config{}) |
| 133 | default: |
| 134 | t.Fatalf("unsupported dialect %q", dialect) |
| 135 | } |
| 136 | common.SetDatabaseTypes(dbType, dbType) |
| 137 | if err != nil { |
| 138 | t.Fatalf("failed to open %s db: %v", dialect, err) |
| 139 | } |
| 140 | |
| 141 | model.DB = db |
| 142 | model.LOG_DB = db |
| 143 | |
| 144 | if db.Migrator().HasTable("tokens") { |
| 145 | t.Skipf("refusing to run %s migration compatibility test against external database because tokens table already exists", dialect) |
| 146 | } |
| 147 | |
| 148 | managedTokensTable := new(bool) |
| 149 | |
| 150 | t.Cleanup(func() { |
| 151 | if *managedTokensTable && db.Migrator().HasTable("tokens") { |
| 152 | _ = db.Migrator().DropTable("tokens") |
| 153 | } |
| 154 | sqlDB, err := db.DB() |
| 155 | if err == nil { |
| 156 | _ = sqlDB.Close() |
| 157 | } |
| 158 | }) |
| 159 | |
| 160 | return db, managedTokensTable |
| 161 | } |
| 162 | |
| 163 | func seedToken(t *testing.T, db *gorm.DB, userID int, name string, rawKey string) *model.Token { |
| 164 | t.Helper() |
no test coverage detected