mirror of
				https://github.com/pelican-dev/panel.git
				synced 2025-10-31 16:26:52 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Tests\Unit\Services\Nodes;
 | |
| 
 | |
| use Mockery as m;
 | |
| use Tests\TestCase;
 | |
| use Ramsey\Uuid\Uuid;
 | |
| use phpmock\phpunit\PHPMock;
 | |
| use Pterodactyl\Models\Node;
 | |
| use Ramsey\Uuid\UuidFactory;
 | |
| use Illuminate\Contracts\Encryption\Encrypter;
 | |
| use Pterodactyl\Services\Nodes\NodeCreationService;
 | |
| use Pterodactyl\Contracts\Repository\NodeRepositoryInterface;
 | |
| 
 | |
| class NodeCreationServiceTest extends TestCase
 | |
| {
 | |
|     use PHPMock;
 | |
| 
 | |
|     /**
 | |
|      * @var \Mockery\MockInterface
 | |
|      */
 | |
|     private $repository;
 | |
| 
 | |
|     /**
 | |
|      * @var \Mockery\MockInterface
 | |
|      */
 | |
|     private $encrypter;
 | |
| 
 | |
|     /**
 | |
|      * Setup tests.
 | |
|      */
 | |
|     public function setUp(): void
 | |
|     {
 | |
|         parent::setUp();
 | |
| 
 | |
|         /* @noinspection PhpParamsInspection */
 | |
|         Uuid::setFactory(
 | |
|             m::mock(UuidFactory::class . '[uuid4]', [
 | |
|                 'uuid4' => Uuid::fromString('00000000-0000-0000-0000-000000000000'),
 | |
|             ])
 | |
|         );
 | |
| 
 | |
|         $this->repository = m::mock(NodeRepositoryInterface::class);
 | |
|         $this->encrypter = m::mock(Encrypter::class);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Test that a node is created and a daemon secret token is created.
 | |
|      */
 | |
|     public function testNodeIsCreatedAndDaemonSecretIsGenerated()
 | |
|     {
 | |
|         /** @var \Pterodactyl\Models\Node $node */
 | |
|         $node = factory(Node::class)->make();
 | |
| 
 | |
|         $this->encrypter->expects('encrypt')->with(m::on(function ($value) {
 | |
|             return strlen($value) === Node::DAEMON_TOKEN_LENGTH;
 | |
|         }))->andReturns('encrypted_value');
 | |
| 
 | |
|         $this->repository->expects('create')->with(m::on(function ($value) {
 | |
|             $this->assertTrue(is_array($value));
 | |
|             $this->assertSame('NodeName', $value['name']);
 | |
|             $this->assertSame('00000000-0000-0000-0000-000000000000', $value['uuid']);
 | |
|             $this->assertSame('encrypted_value', $value['daemon_token']);
 | |
|             $this->assertTrue(strlen($value['daemon_token_id']) === Node::DAEMON_TOKEN_ID_LENGTH);
 | |
| 
 | |
|             return true;
 | |
|         }), true, true)->andReturn($node);
 | |
| 
 | |
|         $this->assertSame($node, $this->getService()->handle(['name' => 'NodeName']));
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @return \Pterodactyl\Services\Nodes\NodeCreationService
 | |
|      */
 | |
|     private function getService()
 | |
|     {
 | |
|         return new NodeCreationService($this->encrypter, $this->repository);
 | |
|     }
 | |
| }
 | 
