Files
portal-api/tests/Feature/Api/Service/ConsoleTicketResolvesVmTest.php
2026-10-08 11:25:28 +07:00

53 lines
1.8 KiB
PHP

<?php
declare(strict_types=1);
namespace Tests\Feature\Api\Service;
use App\Http\Services\vCenter as VCenterService;
use App\Models\Customer;
use App\Models\ModuleVmware;
use App\Models\Order;
use App\Models\OrderItem;
use App\Models\Service;
use App\Models\vCenter;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Str;
use Tests\TestCase;
class ConsoleTicketResolvesVmTest extends TestCase
{
use RefreshDatabase;
public function test_console_ticket_uses_service_vm_when_order_is_soft_deleted(): void
{
$customer = Customer::factory()->create();
$order = Order::create(['order_num' => 'ORD-' . Str::random(10), 'customer_id' => $customer->id]);
$orderItem = OrderItem::create(['order_id' => $order->id]);
$vcenter = vCenter::create(['host' => 'vc.test', 'user' => 'u', 'password' => 'p', 'status' => 1]);
$vm = ModuleVmware::create([
'name' => 'vm',
'customer_id' => $customer->id,
'order_id' => $order->id,
'vmware_id' => 'vm-1',
'vcenter_id' => $vcenter->id,
'status' => 1,
]);
$service = Service::create([
'customer_id' => $customer->id,
'order_item_id' => $orderItem->id,
'vm_id' => $vm->id,
'status' => 'active',
]);
$order->delete();
$this->mock(VCenterService::class)->shouldReceive('loginServer')->once()->andReturnFalse();
$this->actingAs($customer, 'client')
->withHeaders(['x-access-token' => $this->buildClientAccessToken()])
->getJson("/v1/client/client-service/{$service->uuid}/console-ticket")
->assertOk()
->assertJsonPath('message', 'Không thể đăng nhập vào vCenter');
}
}