get_error_code()); self::assertSame(400, $error->get_error_data()['status']); } public function test_request_key_is_scoped_to_actor_and_operation(): void { $request = new WP_REST_Request(['Idempotency-Key' => '550E8400-E29B-41D4-A716-446655440000']); self::assertSame( 'client-transfer:9:550e8400-e29b-41d4-a716-446655440000', OperationKey::from_request($request, 'transfer', 9) ); } public function test_deterministic_key_is_stable_and_length_bounded(): void { $key = OperationKey::deterministic('Revenue Settle', [42, str_repeat('A', 300)]); self::assertSame($key, OperationKey::deterministic('Revenue Settle', [42, str_repeat('A', 300)])); self::assertLessThanOrEqual(191, strlen($key)); self::assertMatchesRegularExpression('/^[a-z0-9:._-]+$/', $key); } }