@@ -86,6 +86,8 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
86
86
serialChanged bool
87
87
hardwareUUIDSetInStore bool
88
88
hardwareUUIDChanged bool
89
+ machineGUIDSetInStore bool
90
+ machineGUIDChanged bool
89
91
osquerySuccess bool
90
92
munemoSetInStore bool
91
93
munemoChanged bool
@@ -98,6 +100,8 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
98
100
serialChanged : false ,
99
101
hardwareUUIDSetInStore : true ,
100
102
hardwareUUIDChanged : false ,
103
+ machineGUIDSetInStore : false ,
104
+ machineGUIDChanged : false ,
101
105
osquerySuccess : true ,
102
106
munemoSetInStore : true ,
103
107
munemoChanged : false ,
@@ -110,6 +114,8 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
110
114
serialChanged : true ,
111
115
hardwareUUIDSetInStore : true ,
112
116
hardwareUUIDChanged : false ,
117
+ machineGUIDSetInStore : false ,
118
+ machineGUIDChanged : false ,
113
119
osquerySuccess : true ,
114
120
munemoSetInStore : true ,
115
121
munemoChanged : false ,
@@ -122,6 +128,8 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
122
128
serialChanged : false ,
123
129
hardwareUUIDSetInStore : true ,
124
130
hardwareUUIDChanged : true ,
131
+ machineGUIDSetInStore : false ,
132
+ machineGUIDChanged : false ,
125
133
osquerySuccess : true ,
126
134
munemoSetInStore : true ,
127
135
munemoChanged : false ,
@@ -134,6 +142,8 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
134
142
serialChanged : false ,
135
143
hardwareUUIDSetInStore : true ,
136
144
hardwareUUIDChanged : false ,
145
+ machineGUIDSetInStore : false ,
146
+ machineGUIDChanged : false ,
137
147
osquerySuccess : true ,
138
148
munemoSetInStore : true ,
139
149
munemoChanged : true ,
@@ -146,6 +156,8 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
146
156
serialChanged : true ,
147
157
hardwareUUIDSetInStore : true ,
148
158
hardwareUUIDChanged : true ,
159
+ machineGUIDSetInStore : true ,
160
+ machineGUIDChanged : true ,
149
161
osquerySuccess : true ,
150
162
munemoSetInStore : true ,
151
163
munemoChanged : true ,
@@ -158,6 +170,8 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
158
170
serialChanged : false ,
159
171
hardwareUUIDSetInStore : true ,
160
172
hardwareUUIDChanged : false ,
173
+ machineGUIDSetInStore : false ,
174
+ machineGUIDChanged : false ,
161
175
osquerySuccess : false ,
162
176
munemoSetInStore : true ,
163
177
munemoChanged : false ,
@@ -170,6 +184,8 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
170
184
serialChanged : false ,
171
185
hardwareUUIDSetInStore : true ,
172
186
hardwareUUIDChanged : false ,
187
+ machineGUIDSetInStore : false ,
188
+ machineGUIDChanged : false ,
173
189
osquerySuccess : true ,
174
190
munemoSetInStore : true ,
175
191
munemoChanged : false ,
@@ -182,6 +198,8 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
182
198
serialChanged : false ,
183
199
hardwareUUIDSetInStore : true ,
184
200
hardwareUUIDChanged : false ,
201
+ machineGUIDSetInStore : false ,
202
+ machineGUIDChanged : false ,
185
203
osquerySuccess : true ,
186
204
munemoSetInStore : true ,
187
205
munemoChanged : false ,
@@ -194,6 +212,8 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
194
212
serialChanged : false ,
195
213
hardwareUUIDSetInStore : false ,
196
214
hardwareUUIDChanged : false ,
215
+ machineGUIDSetInStore : false ,
216
+ machineGUIDChanged : false ,
197
217
osquerySuccess : true ,
198
218
munemoSetInStore : true ,
199
219
munemoChanged : false ,
@@ -206,6 +226,8 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
206
226
serialChanged : false ,
207
227
hardwareUUIDSetInStore : true ,
208
228
hardwareUUIDChanged : false ,
229
+ machineGUIDSetInStore : false ,
230
+ machineGUIDChanged : false ,
209
231
osquerySuccess : true ,
210
232
munemoSetInStore : false ,
211
233
munemoChanged : false ,
@@ -218,24 +240,63 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
218
240
serialChanged : false ,
219
241
hardwareUUIDSetInStore : true ,
220
242
hardwareUUIDChanged : true ,
243
+ machineGUIDSetInStore : false ,
244
+ machineGUIDChanged : false ,
221
245
osquerySuccess : true ,
222
246
munemoSetInStore : true ,
223
247
munemoChanged : false ,
224
248
registrationsExist : true ,
225
249
expectDatabaseWipe : false ,
226
250
},
251
+ {
252
+ name : "machine GUID previously stored, all other data unchanged, no database wipe" ,
253
+ serialSetInStore : true ,
254
+ serialChanged : false ,
255
+ hardwareUUIDSetInStore : true ,
256
+ hardwareUUIDChanged : false ,
257
+ machineGUIDSetInStore : true ,
258
+ machineGUIDChanged : false ,
259
+ osquerySuccess : true ,
260
+ munemoSetInStore : true ,
261
+ munemoChanged : false ,
262
+ registrationsExist : true ,
263
+ expectDatabaseWipe : false ,
264
+ },
265
+ {
266
+ name : "machine GUID not previously stored, all other data unchanged, no database wipe" ,
267
+ serialSetInStore : true ,
268
+ serialChanged : false ,
269
+ hardwareUUIDSetInStore : true ,
270
+ hardwareUUIDChanged : false ,
271
+ machineGUIDSetInStore : false ,
272
+ machineGUIDChanged : true ,
273
+ osquerySuccess : true ,
274
+ munemoSetInStore : true ,
275
+ munemoChanged : false ,
276
+ registrationsExist : true ,
277
+ expectDatabaseWipe : false ,
278
+ },
279
+ {
280
+ name : "machine GUID previously stored, then changed, expect database wipe" ,
281
+ serialSetInStore : true ,
282
+ serialChanged : false ,
283
+ hardwareUUIDSetInStore : true ,
284
+ hardwareUUIDChanged : false ,
285
+ machineGUIDSetInStore : true ,
286
+ machineGUIDChanged : true ,
287
+ osquerySuccess : true ,
288
+ munemoSetInStore : true ,
289
+ munemoChanged : false ,
290
+ registrationsExist : true ,
291
+ expectDatabaseWipe : true ,
292
+ },
227
293
}
228
294
229
295
for _ , tt := range testCases {
230
296
tt := tt
231
297
t .Run (tt .name , func (t * testing.T ) {
232
298
t .Parallel ()
233
299
234
- // For now, we never expect the database to be wiped. In the future, when we
235
- // decide to proceed with resetting the database, we can remove this line from
236
- // the tests and they will continue to validate expected behavior.
237
- tt .expectDatabaseWipe = false
238
-
239
300
slogger := multislogger .NewNopLogger ()
240
301
241
302
// Set up dependencies: data store for hardware-identifying data
@@ -270,6 +331,9 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
270
331
actualHardwareUUID = "test-hardware-uuid"
271
332
}
272
333
334
+ actualMachineGUID , err := currentMachineGuid (context .TODO (), mockKnapsack )
335
+ require .NoError (t , err , "expected to be able to read machine GUID" )
336
+
273
337
if tt .serialSetInStore {
274
338
if tt .serialChanged {
275
339
require .NoError (t , testHostDataStore .Set (hostDataKeySerial , []byte ("some-old-serial" )), "could not set serial in test store" )
@@ -286,6 +350,14 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
286
350
}
287
351
}
288
352
353
+ if tt .machineGUIDSetInStore {
354
+ if tt .machineGUIDChanged {
355
+ require .NoError (t , testHostDataStore .Set (hostDataKeyMachineGuid , []byte ("some-old-machine-guid" )), "could not set machine guid in test store" )
356
+ } else {
357
+ require .NoError (t , testHostDataStore .Set (hostDataKeyMachineGuid , []byte (actualMachineGUID )), "could not set machine guid in test store" )
358
+ }
359
+ }
360
+
289
361
// Set up dependencies: ensure that retrieved tenant matches current data
290
362
munemoValue := []byte ("test-munemo" )
291
363
@@ -331,7 +403,13 @@ func TestDetectAndRemediateHardwareChange(t *testing.T) {
331
403
require .NoError (t , testConfigStore .Set ([]byte ("localEccKey" ), testLocalEccKeyRaw ))
332
404
333
405
// Make test call
334
- DetectAndRemediateHardwareChange (context .TODO (), mockKnapsack )
406
+ remediationRequired := DetectAndRemediateHardwareChange (context .TODO (), mockKnapsack )
407
+ require .Equal (t , tt .expectDatabaseWipe , remediationRequired , "expected remediation to be required when database should be wiped" )
408
+
409
+ // For now, we never expect the database to be wiped. In the future, when we
410
+ // decide to proceed with resetting the database, we can remove this line from
411
+ // the tests and they will continue to validate expected behavior.
412
+ tt .expectDatabaseWipe = false
335
413
336
414
// Confirm backup occurred, if database got wiped
337
415
if tt .expectDatabaseWipe {
0 commit comments