Fix bug where last request timestamp wasn't being updated. (#28157)
Unreleased SCIM bug For #23236
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user