TestDelExArgsWithDigest validates DelExArgs works with digest matching
(t *testing.T)
| 202 | |
| 203 | // TestDelExArgsWithDigest validates DelExArgs works with digest matching |
| 204 | func TestDelExArgsWithDigest(t *testing.T) { |
| 205 | skipIfRedisBelow84(t) |
| 206 | |
| 207 | ctx := context.Background() |
| 208 | client := redis.NewClient(&redis.Options{ |
| 209 | Addr: "localhost:6379", |
| 210 | }) |
| 211 | defer client.Close() |
| 212 | |
| 213 | if err := client.Ping(ctx).Err(); err != nil { |
| 214 | t.Skipf("Redis not available: %v", err) |
| 215 | } |
| 216 | |
| 217 | client.Del(ctx, "del-test-key") |
| 218 | |
| 219 | // Set a value |
| 220 | value := "delete-me" |
| 221 | err := client.Set(ctx, "del-test-key", value, 0).Err() |
| 222 | if err != nil { |
| 223 | t.Fatalf("Failed to set value: %v", err) |
| 224 | } |
| 225 | |
| 226 | // Get correct digest |
| 227 | correctDigest := client.Digest(ctx, "del-test-key").Val() |
| 228 | wrongDigest := uint64(54321) |
| 229 | |
| 230 | // Test 1: Delete with wrong digest should fail |
| 231 | deleted := client.DelExArgs(ctx, "del-test-key", redis.DelExArgs{ |
| 232 | Mode: "IFDEQ", |
| 233 | MatchDigest: wrongDigest, |
| 234 | }).Val() |
| 235 | |
| 236 | if deleted != 0 { |
| 237 | t.Errorf("Delete with wrong digest should not delete: got %d deletions", deleted) |
| 238 | } else { |
| 239 | t.Logf("✓ DelExArgs with wrong digest correctly refused to delete") |
| 240 | } |
| 241 | |
| 242 | // Verify key still exists |
| 243 | exists := client.Exists(ctx, "del-test-key").Val() |
| 244 | if exists != 1 { |
| 245 | t.Errorf("Key should still exist after failed delete") |
| 246 | } |
| 247 | |
| 248 | // Test 2: Delete with correct digest should succeed |
| 249 | deleted = client.DelExArgs(ctx, "del-test-key", redis.DelExArgs{ |
| 250 | Mode: "IFDEQ", |
| 251 | MatchDigest: correctDigest, |
| 252 | }).Val() |
| 253 | |
| 254 | if deleted != 1 { |
| 255 | t.Errorf("Delete with correct digest should delete: got %d deletions", deleted) |
| 256 | } else { |
| 257 | t.Logf("✓ DelExArgs with correct digest successfully deleted") |
| 258 | } |
| 259 | |
| 260 | // Verify key was deleted |
| 261 | exists = client.Exists(ctx, "del-test-key").Val() |