Typo3ServiceTest.php 7.9 KB

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