Typo3ServiceTest.php 7.9 KB

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