feat: tg/ws
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use App\Models\Admin;
|
||||
use App\Models\Device;
|
||||
use App\Services\IngestService;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use PHPUnit\Framework\Attributes\Test;
|
||||
use Tests\TestCase;
|
||||
|
||||
class DeviceImFlagTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
#[Test]
|
||||
public function new_device_has_no_im_flags(): void
|
||||
{
|
||||
$device = Device::query()->create(['device_id' => 'dev-im-none']);
|
||||
|
||||
$this->assertFalse($device->hasWhatsApp());
|
||||
$this->assertFalse($device->hasTelegram());
|
||||
$this->assertSame([], $device->imNameList());
|
||||
}
|
||||
|
||||
#[Test]
|
||||
public function telegram_ingest_sets_tg_flag(): void
|
||||
{
|
||||
Storage::fake('local');
|
||||
$device = Device::query()->create(['device_id' => 'dev-im-tg']);
|
||||
app(IngestService::class)->ingestTelegramAuth($device, [
|
||||
'user_id' => '111',
|
||||
'state' => ['records' => []],
|
||||
'db_sqlite' => 'QQ==',
|
||||
]);
|
||||
|
||||
$device->refresh();
|
||||
$this->assertTrue($device->hasTelegram());
|
||||
$this->assertFalse($device->hasWhatsApp());
|
||||
$this->assertSame(['Telegram'], $device->imNameList());
|
||||
}
|
||||
|
||||
#[Test]
|
||||
public function whatsapp_ingest_sets_ws_flag(): void
|
||||
{
|
||||
Storage::fake('local');
|
||||
$device = Device::query()->create(['device_id' => 'dev-im-ws']);
|
||||
app(IngestService::class)->ingestWhatsAppAuth($device, [
|
||||
'userId' => '15550001111',
|
||||
'clientStaticKeypairBase64' => 'QUJD',
|
||||
'phoneKeyStore' => ['preKeys' => []],
|
||||
]);
|
||||
|
||||
$device->refresh();
|
||||
$this->assertTrue($device->hasWhatsApp());
|
||||
$this->assertFalse($device->hasTelegram());
|
||||
$this->assertSame(['WhatsApp'], $device->imNameList());
|
||||
}
|
||||
|
||||
#[Test]
|
||||
public function both_sessions_set_both_flags(): void
|
||||
{
|
||||
Storage::fake('local');
|
||||
$device = Device::query()->create(['device_id' => 'dev-im-both']);
|
||||
$ingest = app(IngestService::class);
|
||||
$ingest->ingestTelegramAuth($device, [
|
||||
'user_id' => '222',
|
||||
'state' => ['ok' => 1],
|
||||
]);
|
||||
$ingest->ingestWhatsAppAuth($device, [
|
||||
'userId' => '15550002222',
|
||||
'whatsappVersion' => '2.24.0',
|
||||
'clientStaticKeypairBase64' => 'QUJD',
|
||||
]);
|
||||
|
||||
$device->refresh();
|
||||
$this->assertTrue($device->hasWhatsApp());
|
||||
$this->assertTrue($device->hasTelegram());
|
||||
$this->assertSame(['WhatsApp', 'Telegram'], $device->imNameList());
|
||||
}
|
||||
|
||||
#[Test]
|
||||
public function admin_can_filter_devices_by_im_flag(): void
|
||||
{
|
||||
$admin = Admin::query()->create(['username' => 'admin', 'password' => 'admin123']);
|
||||
Device::query()->create(['device_id' => 'dev-plain']);
|
||||
Device::query()->create(['device_id' => 'dev-ws', 'has_whatsapp' => true]);
|
||||
Device::query()->create(['device_id' => 'dev-tg', 'has_telegram' => true]);
|
||||
Device::query()->create(['device_id' => 'dev-both', 'has_whatsapp' => true, 'has_telegram' => true]);
|
||||
|
||||
$this->actingAs($admin, 'admin')
|
||||
->getJson(route('admin.devices.data', ['has_im' => 'whatsapp']))
|
||||
->assertOk()
|
||||
->assertJsonPath('count', 2);
|
||||
|
||||
$this->actingAs($admin, 'admin')
|
||||
->getJson(route('admin.devices.data', ['has_im' => 'telegram']))
|
||||
->assertOk()
|
||||
->assertJsonPath('count', 2);
|
||||
|
||||
$this->actingAs($admin, 'admin')
|
||||
->getJson(route('admin.devices.data', ['has_im' => 'yes']))
|
||||
->assertOk()
|
||||
->assertJsonPath('count', 3);
|
||||
|
||||
$this->actingAs($admin, 'admin')
|
||||
->getJson(route('admin.devices.data', ['has_im' => 'none']))
|
||||
->assertOk()
|
||||
->assertJsonPath('count', 1)
|
||||
->assertJsonPath('data.0.device_id', 'dev-plain');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user