MCPcopy
hub / github.com/helm/helm / TestSqlCreateAlreadyExists

Function TestSqlCreateAlreadyExists

pkg/storage/driver/sql_test.go:264–323  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

262}
263
264func TestSqlCreateAlreadyExists(t *testing.T) {
265 vers := 1
266 name := "smug-pigeon"
267 namespace := "default"
268 key := testKey(name, vers)
269 rel := releaseStub(name, vers, namespace, common.StatusDeployed)
270
271 sqlDriver, mock := newTestFixtureSQL(t)
272 body, _ := encodeRelease(rel)
273
274 insertQuery := fmt.Sprintf(
275 "INSERT INTO %s (%s,%s,%s,%s,%s,%s,%s,%s,%s) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9)",
276 sqlReleaseTableName,
277 sqlReleaseTableKeyColumn,
278 sqlReleaseTableTypeColumn,
279 sqlReleaseTableBodyColumn,
280 sqlReleaseTableNameColumn,
281 sqlReleaseTableNamespaceColumn,
282 sqlReleaseTableVersionColumn,
283 sqlReleaseTableStatusColumn,
284 sqlReleaseTableOwnerColumn,
285 sqlReleaseTableCreatedAtColumn,
286 )
287
288 // Insert fails (primary key already exists)
289 mock.ExpectBegin()
290 mock.
291 ExpectExec(regexp.QuoteMeta(insertQuery)).
292 WithArgs(key, sqlReleaseDefaultType, body, rel.Name, rel.Namespace, int(rel.Version), rel.Info.Status.String(), sqlReleaseDefaultOwner, recentUnixTimestamp()).
293 WillReturnError(errors.New("dialect dependent SQL error"))
294
295 selectQuery := fmt.Sprintf(
296 regexp.QuoteMeta("SELECT %s FROM %s WHERE %s = $1 AND %s = $2"),
297 sqlReleaseTableKeyColumn,
298 sqlReleaseTableName,
299 sqlReleaseTableKeyColumn,
300 sqlReleaseTableNamespaceColumn,
301 )
302
303 // Let's check that we do make sure the error is due to a release already existing
304 mock.
305 ExpectQuery(selectQuery).
306 WithArgs(key, namespace).
307 WillReturnRows(
308 mock.NewRows([]string{
309 sqlReleaseTableKeyColumn,
310 }).AddRow(
311 key,
312 ),
313 ).RowsWillBeClosed()
314 mock.ExpectRollback()
315
316 if err := sqlDriver.Create(key, rel); err == nil {
317 t.Fatalf("failed to create release with key %s: %v", key, err)
318 }
319
320 if err := mock.ExpectationsWereMet(); err != nil {
321 t.Errorf("sql expectations weren't met: %v", err)

Callers

nothing calls this directly

Calls 8

newTestFixtureSQLFunction · 0.85
encodeReleaseFunction · 0.85
recentUnixTimestampFunction · 0.85
FatalfMethod · 0.80
testKeyFunction · 0.70
releaseStubFunction · 0.70
CreateMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…