90 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
		
		
			
		
	
	
			90 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
|  | <?php | ||
|  | 
 | ||
|  | require_once dirname(__DIR__, 4) . '/app/classes/database.php'; | ||
|  | require_once dirname(__DIR__, 4) . '/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()); | ||
|  |     } | ||
|  | } |