Files
boursecu_server/tests/Unit/JibitIdentityServiceTest.php
T

72 lines
2.8 KiB
PHP
Raw Normal View History

<?php
namespace Tests\Unit;
use App\Services\JibitIdentityService;
use PHPUnit\Framework\TestCase;
class JibitIdentityServiceTest extends TestCase
{
public function test_matched_true_is_ok(): void
{
$result = JibitIdentityService::interpretNationalMobileMatch(['matched' => true]);
$this->assertTrue($result['ok']);
$this->assertSame('jibit_matched', $result['code']);
}
public function test_matched_false_explains_shahkar_mismatch(): void
{
$result = JibitIdentityService::interpretNationalMobileMatch(['matched' => false]);
$this->assertFalse($result['ok']);
$this->assertSame('jibit_mismatch', $result['code']);
$this->assertStringContainsString('شاهکار', $result['message']);
$this->assertStringContainsString('سیم‌کارت', $result['message']);
}
public function test_forbidden_mentions_token(): void
{
$result = JibitIdentityService::interpretNationalMobileMatch([
'code' => 'forbidden',
'message' => 'no access',
]);
$this->assertFalse($result['ok']);
$this->assertSame('jibit_forbidden', $result['code']);
$this->assertStringContainsString('توکن', $result['message']);
}
public function test_unknown_payload_includes_jibit_code_and_message(): void
{
$result = JibitIdentityService::interpretNationalMobileMatch([
'code' => 'some.service.error',
'message' => 'provider down',
'http_status' => 503,
]);
$this->assertFalse($result['ok']);
$this->assertSame('jibit_some.service.error', $result['code']);
$this->assertStringContainsString('some.service.error', $result['message']);
$this->assertStringContainsString('provider down', $result['message']);
$this->assertStringContainsString('503', $result['message']);
}
public function test_empty_response_is_not_generic_wait_for_admin(): void
{
$result = JibitIdentityService::interpretNationalMobileMatch(null);
$this->assertFalse($result['ok']);
$this->assertSame('jibit_no_response', $result['code']);
$this->assertStringNotContainsString('منتظر بررسی', $result['message']);
}
public function test_national_code_checksum(): void
{
$this->assertNull(JibitIdentityService::nationalCodeError('0452262615'));
$this->assertSame('کد ملی وارد نشده است.', JibitIdentityService::nationalCodeError(''));
$this->assertSame('کد ملی باید ۱۰ رقم باشد.', JibitIdentityService::nationalCodeError('123'));
$this->assertSame('کد ملی از نظر رقم کنترل نامعتبر است.', JibitIdentityService::nationalCodeError('0000000000'));
}
}