MCPcopy
hub / github.com/ory/hydra / TestDbUnknownTableColumns

Function TestDbUnknownTableColumns

driver/registry_sql_test.go:158–195  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

156}
157
158func TestDbUnknownTableColumns(t *testing.T) {
159 t.Parallel()
160
161 dsn := dbal.NewSQLiteTestDatabase(t)
162 reg, err := New(t.Context(), WithConfigOptions(configx.WithValue("dsn", dsn)), WithAutoMigrate())
163 require.NoError(t, err)
164
165 statement := `ALTER TABLE "hydra_client" ADD COLUMN "temp_column" VARCHAR(128) NOT NULL DEFAULT '';`
166 require.NoError(t, reg.Persister().Connection(t.Context()).RawQuery(statement).Exec())
167
168 cl := &client.Client{
169 ID: strconv.Itoa(rand.Int()),
170 }
171 require.NoError(t, reg.Persister().CreateClient(t.Context(), cl))
172 getClients := func(ctx context.Context, reg *RegistrySQL) ([]client.Client, error) {
173 readClients := make([]client.Client, 0)
174 conn := reg.Persister().Connection(ctx)
175 cols := popx.DBColumns[client.Client](conn.Dialect)
176 return readClients, conn.RawQuery(fmt.Sprintf(`SELECT %s, temp_column FROM "hydra_client"`, cols)).All(&readClients)
177 }
178
179 t.Run("with ignore disabled (default behavior)", func(t *testing.T) {
180 _, err := getClients(t.Context(), reg)
181 assert.ErrorContains(t, err, "missing destination name temp_column")
182 })
183
184 t.Run("with ignore enabled", func(t *testing.T) {
185 reg, err := New(t.Context(), WithConfigOptions(
186 configx.WithValue("dsn", dsn),
187 configx.WithValue(config.KeyDBIgnoreUnknownTableColumns, true),
188 ))
189 require.NoError(t, err)
190
191 actual, err := getClients(t.Context(), reg)
192 require.NoError(t, err)
193 assert.Len(t, actual, 1)
194 })
195}
196
197func failedPing(err error) func(context.Context, *logrusx.Logger, *sql.BasePersister) error {
198 return func(context.Context, *logrusx.Logger, *sql.BasePersister) error {

Callers

nothing calls this directly

Calls 9

WithConfigOptionsFunction · 0.85
WithAutoMigrateFunction · 0.85
AllMethod · 0.80
NewFunction · 0.70
ExecMethod · 0.65
ConnectionMethod · 0.65
PersisterMethod · 0.65
CreateClientMethod · 0.65
LenMethod · 0.65

Tested by

no test coverage detected