90 lines
2.6 KiB
PHP
90 lines
2.6 KiB
PHP
<?php
|
|
|
|
require_once dirname(__DIR__, 3) . '/app/classes/database.php';
|
|
require_once dirname(__DIR__, 3) . '/app/classes/server.php';
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class JiloServerTest extends TestCase
|
|
{
|
|
private $db;
|
|
private $server;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
|
|
// Set up test database
|
|
$this->db = new Database([
|
|
'type' => 'sqlite',
|
|
'dbFile' => ':memory:'
|
|
]);
|
|
|
|
// Create servers table
|
|
$this->db->getConnection()->exec("
|
|
CREATE TABLE servers (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
host_id INTEGER NOT NULL,
|
|
port INTEGER NOT NULL,
|
|
status TEXT DEFAULT 'offline',
|
|
last_seen INTEGER,
|
|
version TEXT,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL
|
|
)
|
|
");
|
|
|
|
$this->server = new Server($this->db);
|
|
}
|
|
|
|
public function testGetServerStatus()
|
|
{
|
|
// Create mock server that overrides file_get_contents
|
|
$mockServer = $this->getMockBuilder(Server::class)
|
|
->setConstructorArgs([$this->db])
|
|
->onlyMethods(['getServerStatus'])
|
|
->getMock();
|
|
|
|
// Test successful response
|
|
$mockServer->expects($this->exactly(2))
|
|
->method('getServerStatus')
|
|
->willReturnMap([
|
|
['localhost', 8080, '/health', true],
|
|
['localhost', 8081, '/health', false]
|
|
]);
|
|
|
|
$this->assertTrue($mockServer->getServerStatus('localhost', 8080));
|
|
$this->assertFalse($mockServer->getServerStatus('localhost', 8081));
|
|
}
|
|
|
|
public function testGetServerStatusWithCustomEndpoint()
|
|
{
|
|
$mockServer = $this->getMockBuilder(Server::class)
|
|
->setConstructorArgs([$this->db])
|
|
->onlyMethods(['getServerStatus'])
|
|
->getMock();
|
|
|
|
$mockServer->expects($this->once())
|
|
->method('getServerStatus')
|
|
->with('localhost', 8080, '/custom/health')
|
|
->willReturn(true);
|
|
|
|
$this->assertTrue($mockServer->getServerStatus('localhost', 8080, '/custom/health'));
|
|
}
|
|
|
|
public function testGetServerStatusWithDefaults()
|
|
{
|
|
$mockServer = $this->getMockBuilder(Server::class)
|
|
->setConstructorArgs([$this->db])
|
|
->onlyMethods(['getServerStatus'])
|
|
->getMock();
|
|
|
|
$mockServer->expects($this->once())
|
|
->method('getServerStatus')
|
|
->with('127.0.0.1', 8080, '/health')
|
|
->willReturn(true);
|
|
|
|
$this->assertTrue($mockServer->getServerStatus());
|
|
}
|
|
}
|