积分与余额账务系统硬切重构
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
use AKSRT\Ledger\OperationKey;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
final class OperationKeyTest extends TestCase {
|
||||
public function test_request_key_requires_uuid_header(): void {
|
||||
$error = OperationKey::from_request(new WP_REST_Request(), 'transfer', 9);
|
||||
self::assertInstanceOf(WP_Error::class, $error);
|
||||
self::assertSame('aksrt_idempotency_key', $error->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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user