Skip to content

Commit 56b6bc5

Browse files
committed
RHINENG-19880: update tests for system delete event
systems are marked as stale and culled instead of being removed from database
1 parent 7c5755c commit 56b6bc5

2 files changed

Lines changed: 55 additions & 3 deletions

File tree

listener/common_test.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ func deleteData(t *testing.T) {
3737
Delete(&models.Repo{}).Error)
3838
assert.Nil(t, database.DB.Unscoped().Where("inventory_id = ?::uuid", id).Delete(&models.SystemPlatform{}).Error)
3939
assert.Nil(t, database.DB.Unscoped().Where("name = ?", id).Delete(&models.RhAccount{}).Error)
40+
assert.Nil(t, database.DB.Unscoped().Where("inventory_id = ?", id).Delete(&models.DeletedSystem{}).Error)
4041
}
4142

4243
// nolint: unparam
@@ -68,7 +69,17 @@ func assertSystemNotInDB(t *testing.T) {
6869
assert.Nil(t, database.DB.Model(models.SystemPlatform{}).
6970
Where("inventory_id = ?::uuid", id).Count(&systemCount).Error)
7071

71-
assert.Equal(t, int(systemCount), 0)
72+
assert.Equal(t, 0, int(systemCount))
73+
}
74+
75+
func assertSystemStaleAndCulled(t *testing.T) {
76+
var systemCount int64
77+
now := time.Now()
78+
assert.Nil(t, database.DB.Model(models.SystemPlatform{}).
79+
Where("stale = true AND stale_timestamp < ? AND culled_timestamp < ?", now, now).
80+
Where("inventory_id = ?::uuid", id).Count(&systemCount).Error)
81+
82+
assert.Equal(t, 1, int(systemCount))
7283
}
7384

7485
func getOrCreateTestAccount(t *testing.T) int {

listener/events_test.go

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,9 @@ func TestDeleteSystem(t *testing.T) {
4949

5050
deleteEvent := createTestDeleteEvent(id)
5151
err := HandleDelete(deleteEvent)
52-
assertSystemNotInDB(t)
5352
assert.NoError(t, err)
53+
assertSystemStaleAndCulled(t)
54+
deleteData(t)
5455
}
5556

5657
func TestDeleteSystemWarn1(t *testing.T) {
@@ -103,11 +104,51 @@ func TestUploadAfterDelete(t *testing.T) {
103104
utils.SkipWithoutDB(t)
104105
core.SetupTestEnvironment()
105106
configure()
107+
deleteData(t)
108+
109+
// system is not in database and the first event is delete
110+
deleteEvent := createTestDeleteEvent(id)
111+
err := HandleDelete(deleteEvent)
112+
assert.NoError(t, err)
106113

114+
// upload will be skipped and system won't be created
107115
uploadEvent := createTestUploadEvent("1", id, "puptoo", true, false)
108-
err := HandleUpload(uploadEvent)
116+
err = HandleUpload(uploadEvent)
109117
assert.NoError(t, err)
110118
assertSystemNotInDB(t)
119+
120+
deleteData(t)
121+
}
122+
123+
func TestCreateDeleteUpload(t *testing.T) {
124+
utils.SkipWithoutDB(t)
125+
core.SetupTestEnvironment()
126+
configure()
127+
deleteData(t)
128+
129+
uploadEvent := createTestUploadEvent("1", id, "puptoo", true, false)
130+
originalName := "UPLOADED"
131+
uploadEvent.Host.DisplayName = &originalName
132+
err := HandleUpload(uploadEvent)
133+
assert.NoError(t, err)
134+
135+
// delete marks the system but not physically delete it
136+
deleteEvent := createTestDeleteEvent(id)
137+
err = HandleDelete(deleteEvent)
138+
assert.NoError(t, err)
139+
assertSystemStaleAndCulled(t)
140+
141+
// second upload of now deleted system should not change anything
142+
changedName := "UPDATED"
143+
uploadEvent.Host.DisplayName = &changedName
144+
err = HandleUpload(uploadEvent)
145+
assert.NoError(t, err)
146+
147+
var system models.SystemPlatform
148+
assert.NoError(t, database.DB.Order("ID DESC").Find(&system, "inventory_id = ?::uuid", id).Error)
149+
assert.Equal(t, originalName, system.DisplayName)
150+
151+
deleteData(t)
111152
}
112153

113154
func TestDeleteCleanup(t *testing.T) {

0 commit comments

Comments
 (0)