Typo3ServiceTest.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <?php /** @noinspection PhpUnhandledExceptionInspection */
  2. namespace App\Test\Service\Typo3;
  3. use App\Service\Typo3\Typo3Service;
  4. use PHPUnit\Framework\TestCase;
  5. use Symfony\Contracts\HttpClient\HttpClientInterface;
  6. use Symfony\Contracts\HttpClient\ResponseInterface;
  7. class TestableTypo3Service extends Typo3Service {
  8. public function sendCommand(string $route, array $parameters): ResponseInterface { return parent::sendCommand($route, $parameters); }
  9. }
  10. class Typo3ServiceTest extends TestCase
  11. {
  12. private HttpClientInterface $typo3Client;
  13. public function setUp(): void {
  14. $this->typo3Client = $this->getMockBuilder(HttpClientInterface::class)->disableOriginalConstructor()->getMock();
  15. }
  16. public function testSendCommand(): void
  17. {
  18. $response = $this->getMockBuilder(ResponseInterface::class)->disableOriginalConstructor()->getMock();
  19. $this->typo3Client
  20. ->expects(self::once())
  21. ->method('request')
  22. ->with('GET', '/typo3/index.php?route=foo&param=bar')
  23. ->willReturn($response);
  24. $typo3Service = $this->getMockBuilder(TestableTypo3Service::class)
  25. ->setConstructorArgs([$this->typo3Client])
  26. ->setMethodsExcept(['sendCommand'])
  27. ->getMock();
  28. $typo3Service->sendCommand('foo', ['param' => 'bar']);
  29. }
  30. public function testCreateSite(): void
  31. {
  32. $typo3Service = $this->getMockBuilder(TestableTypo3Service::class)
  33. ->setMethodsExcept(['createSite'])
  34. ->disableOriginalConstructor()
  35. ->getMock();
  36. $response = $this->getMockBuilder(ResponseInterface::class)->disableOriginalConstructor()->getMock();
  37. $typo3Service->expects(self::once())
  38. ->method('sendCommand')->
  39. with('/otadmin/site/create', ['organization-id' => 1])
  40. ->willReturn($response);
  41. $typo3Service->createSite(1);
  42. }
  43. public function testClearSiteCache(): void
  44. {
  45. $typo3Service = $this->getMockBuilder(TestableTypo3Service::class)
  46. ->setMethodsExcept(['updateSite'])
  47. ->disableOriginalConstructor()
  48. ->getMock();
  49. $response = $this->getMockBuilder(ResponseInterface::class)->disableOriginalConstructor()->getMock();
  50. $typo3Service->expects(self::once())
  51. ->method('sendCommand')->
  52. with('/otadmin/site/update', ['organization-id' => 1])
  53. ->willReturn($response);
  54. $typo3Service->updateSite(1);
  55. }
  56. public function testDeleteSite(): void
  57. {
  58. $typo3Service = $this->getMockBuilder(TestableTypo3Service::class)
  59. ->setMethodsExcept(['deleteSite'])
  60. ->disableOriginalConstructor()
  61. ->getMock();
  62. $response = $this->getMockBuilder(ResponseInterface::class)->disableOriginalConstructor()->getMock();
  63. $typo3Service->expects(self::once())
  64. ->method('sendCommand')->
  65. with('/otadmin/site/delete', ['organization-id' => 1])
  66. ->willReturn($response);
  67. $typo3Service->deleteSite(1);
  68. }
  69. public function testUndeleteSite(): void
  70. {
  71. $typo3Service = $this->getMockBuilder(TestableTypo3Service::class)
  72. ->setMethodsExcept(['undeleteSite'])
  73. ->disableOriginalConstructor()
  74. ->getMock();
  75. $response = $this->getMockBuilder(ResponseInterface::class)->disableOriginalConstructor()->getMock();
  76. $typo3Service->expects(self::once())
  77. ->method('sendCommand')->
  78. with('/otadmin/site/undelete', ['organization-id' => 1])
  79. ->willReturn($response);
  80. $typo3Service->undeleteSite(1);
  81. }
  82. public function testSetSiteDomain(): void
  83. {
  84. $typo3Service = $this->getMockBuilder(TestableTypo3Service::class)
  85. ->setMethodsExcept(['setSiteDomain'])
  86. ->disableOriginalConstructor()
  87. ->getMock();
  88. $response = $this->getMockBuilder(ResponseInterface::class)->disableOriginalConstructor()->getMock();
  89. $typo3Service->expects(self::once())
  90. ->method('sendCommand')->
  91. with('/otadmin/site/set-domain', ['organization-id' => 1, 'domain' => 'new-domain'])
  92. ->willReturn($response);
  93. $typo3Service->setSiteDomain(1, 'new-domain', false);
  94. }
  95. public function testSetSiteDomainWithRedirection(): void
  96. {
  97. $typo3Service = $this->getMockBuilder(TestableTypo3Service::class)
  98. ->setMethodsExcept(['setSiteDomain'])
  99. ->disableOriginalConstructor()
  100. ->getMock();
  101. $response = $this->getMockBuilder(ResponseInterface::class)->disableOriginalConstructor()->getMock();
  102. $typo3Service->expects(self::once())
  103. ->method('sendCommand')->
  104. with('/otadmin/site/set-domain', ['organization-id' => 1, 'domain' => 'new-domain', 'redirect' => 1])
  105. ->willReturn($response);
  106. $typo3Service->setSiteDomain(1, 'new-domain', true);
  107. }
  108. public function testResetSitePerms(): void
  109. {
  110. $typo3Service = $this->getMockBuilder(TestableTypo3Service::class)
  111. ->setMethodsExcept(['resetSitePerms'])
  112. ->disableOriginalConstructor()
  113. ->getMock();
  114. $response = $this->getMockBuilder(ResponseInterface::class)->disableOriginalConstructor()->getMock();
  115. $typo3Service->expects(self::once())
  116. ->method('sendCommand')->
  117. with('/otadmin/site/reset-perms', ['organization-id' => 1])
  118. ->willReturn($response);
  119. $typo3Service->resetSitePerms(1);
  120. }
  121. public function testGetSiteStatus(): void
  122. {
  123. $typo3Service = $this->getMockBuilder(TestableTypo3Service::class)
  124. ->setMethodsExcept(['getSiteStatus'])
  125. ->disableOriginalConstructor()
  126. ->getMock();
  127. $response = $this->getMockBuilder(ResponseInterface::class)->disableOriginalConstructor()->getMock();
  128. $typo3Service->expects(self::once())
  129. ->method('sendCommand')->
  130. with('/otadmin/site/status', ['organization-id' => 1])
  131. ->willReturn($response);
  132. $typo3Service->getSiteStatus(1);
  133. }
  134. public function testAddRedirection(): void
  135. {
  136. $typo3Service = $this->getMockBuilder(TestableTypo3Service::class)
  137. ->setMethodsExcept(['addRedirection'])
  138. ->disableOriginalConstructor()
  139. ->getMock();
  140. $response = $this->getMockBuilder(ResponseInterface::class)->disableOriginalConstructor()->getMock();
  141. $typo3Service->expects(self::once())
  142. ->method('sendCommand')->
  143. with('/otadmin/redirect/add', ['from-domain' => 'foo', 'to-domain' => 'bar'])
  144. ->willReturn($response);
  145. $typo3Service->addRedirection('foo', 'bar');
  146. }
  147. }