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());
|
||
|
}
|
||
|
}
|