Fix bug where last request timestamp wasn't being updated. (#28157)

Unreleased SCIM bug
For #23236
This commit is contained in:
Victor Lyuboslavsky 2025-04-11 13:08:25 -05:00 committed by GitHub
parent ce08f39499
commit 4c97c4390f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 15 additions and 3 deletions

View file

@ -909,10 +909,10 @@ func (ds *Datastore) UpdateScimLastRequest(ctx context.Context, lastRequest *fle
}
return ds.withRetryTxx(ctx, func(tx sqlx.ExtContext) error {
// Try to update first
// Try to update first. We always update the timestamp since success requests all look the same.
const updateQuery = `
UPDATE scim_last_request
SET status = ?, details = ?
SET status = ?, details = ?, updated_at = NOW(6)
`
result, err := tx.ExecContext(
ctx,

View file

@ -1496,6 +1496,18 @@ func testScimLastRequest(t *testing.T, ds *Datastore) {
assert.Equal(t, "Initial SCIM request", retrievedRequest.Details)
assert.False(t, retrievedRequest.RequestedAt.IsZero(), "RequestedAt should not be zero")
// Do and check the same request again -- timestamp should update
err = ds.UpdateScimLastRequest(t.Context(), newRequest)
assert.NoError(t, err)
retrievedSameRequest, err := ds.ScimLastRequest(t.Context())
require.NoError(t, err)
require.NotNil(t, retrievedSameRequest)
assert.Equal(t, retrievedRequest.Status, retrievedSameRequest.Status)
assert.Equal(t, retrievedRequest.Details, retrievedSameRequest.Details)
// Verify that the timestamp is newer
assert.True(t, retrievedSameRequest.RequestedAt.After(retrievedRequest.RequestedAt),
"Same request timestamp should be after the original timestamp")
// Update the last request with new valid values
updatedRequest := &fleet.ScimLastRequest{
Status: "error",
@ -1513,6 +1525,6 @@ func testScimLastRequest(t *testing.T, ds *Datastore) {
assert.False(t, retrievedUpdatedRequest.RequestedAt.IsZero(), "RequestedAt should not be zero")
// Verify that the updated timestamp is newer
assert.True(t, retrievedUpdatedRequest.RequestedAt.After(retrievedRequest.RequestedAt),
assert.True(t, retrievedUpdatedRequest.RequestedAt.After(retrievedSameRequest.RequestedAt),
"Updated request timestamp should be after the original timestamp")
}