ApiLegacyStorageTest.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. namespace App\Tests\Unit\Service\File\Storage;
  3. use App\Entity\Core\File;
  4. use App\Enum\Core\FileHostEnum;
  5. use App\Service\ApiLegacy\ApiLegacyRequestService;
  6. use App\Service\File\Storage\ApiLegacyStorage;
  7. use App\Service\Utils\UrlBuilder;
  8. use Liip\ImagineBundle\Imagine\Data\DataManager;
  9. use PHPUnit\Framework\MockObject\MockObject;
  10. use PHPUnit\Framework\TestCase;
  11. class ApiLegacyStorageTest extends TestCase
  12. {
  13. private ApiLegacyRequestService|MockObject $apiLegacyRequestService;
  14. private ApiLegacyRequestService|MockObject $dataManager;
  15. private ApiLegacyRequestService|MockObject $urlBuilder;
  16. public function setUp(): void
  17. {
  18. $this->apiLegacyRequestService = $this->getMockBuilder(ApiLegacyRequestService::class)
  19. ->disableOriginalConstructor()
  20. ->getMock();
  21. $this->dataManager = $this->getMockBuilder(DataManager::class)->disableOriginalConstructor()->getMock();
  22. $this->urlBuilder = $this->getMockBuilder(UrlBuilder::class)->disableOriginalConstructor()->getMock();
  23. }
  24. public function getApiLegacyStorageMockFor(string $methodName): ApiLegacyStorage|MockObject
  25. {
  26. return $this
  27. ->getMockBuilder(ApiLegacyStorage::class)
  28. ->setConstructorArgs([$this->apiLegacyRequestService, $this->dataManager, $this->urlBuilder, 'url', 'publicUrl'])
  29. ->setMethodsExcept([$methodName])
  30. ->getMock();
  31. }
  32. public function testExists(): void
  33. {
  34. $apiLegacyStorage = $this->getApiLegacyStorageMockFor('exists');
  35. $this->expectException(\RuntimeException::class);
  36. $this->expectExceptionMessage('not implemented error');
  37. $file = $this->getMockBuilder(File::class)->getMock();
  38. $apiLegacyStorage->exists($file);
  39. }
  40. public function testRead(): void
  41. {
  42. $apiLegacyStorage = $this->getApiLegacyStorageMockFor('read');
  43. $file = $this->getMockBuilder(File::class)->getMock();
  44. $file->method('getId')->willReturn(123);
  45. $this->apiLegacyRequestService
  46. ->expects(self::once())
  47. ->method('getContent')
  48. ->with('_internal/secure/files/123')
  49. ->willReturn('xyz');
  50. $result = $apiLegacyStorage->read($file);
  51. $this->assertEquals('xyz', $result);
  52. }
  53. public function testGetImageUrl(): void
  54. {
  55. $apiLegacyStorage = $this->getApiLegacyStorageMockFor('getImageUrl');
  56. $file = $this->getMockBuilder(File::class)->getMock();
  57. $file->method('getId')->willReturn(123);
  58. $this->apiLegacyRequestService
  59. ->expects(self::once())
  60. ->method('getContent')
  61. ->with('api/files/123/download/md?relativePath=1')
  62. ->willReturn('xyz');
  63. $this->assertEquals(
  64. 'publicUrl/xyz',
  65. $apiLegacyStorage->getImageUrl($file, 'md', false)
  66. );
  67. }
  68. public function testGetImageUrlRelativePath(): void
  69. {
  70. $apiLegacyStorage = $this->getApiLegacyStorageMockFor('getImageUrl');
  71. $file = $this->getMockBuilder(File::class)->getMock();
  72. $file->method('getId')->willReturn(123);
  73. $this->apiLegacyRequestService
  74. ->expects(self::once())
  75. ->method('getContent')
  76. ->with('api/files/123/download/lg?relativePath=1')
  77. ->willReturn('xyz');
  78. $this->assertEquals(
  79. 'url/xyz',
  80. $apiLegacyStorage->getImageUrl($file, 'lg', true)
  81. );
  82. }
  83. public function testSupport(): void
  84. {
  85. $apiLegacyStorage = $this->getApiLegacyStorageMockFor('support');
  86. $file1 = $this->getMockBuilder(File::class)->getMock();
  87. $file1->method('getHost')->willReturn(FileHostEnum::API1);
  88. $file2 = $this->getMockBuilder(File::class)->getMock();
  89. $file2->method('getHost')->willReturn(FileHostEnum::AP2I);
  90. $this->assertTrue($apiLegacyStorage->support($file1));
  91. $this->assertFalse($apiLegacyStorage->support($file2));
  92. }
  93. public function testDeleteOrganizationFiles(): void
  94. {
  95. $apiLegacyStorage = $this->getApiLegacyStorageMockFor('deleteOrganizationFiles');
  96. $this->apiLegacyRequestService
  97. ->expects(self::once())
  98. ->method('get')
  99. ->with('/_internal/request/organization-files/delete/123');
  100. $apiLegacyStorage->deleteOrganizationFiles(123);
  101. }
  102. public function testDeletePersonFiles(): void
  103. {
  104. $apiLegacyStorage = $this->getApiLegacyStorageMockFor('deletePersonFiles');
  105. $this->apiLegacyRequestService
  106. ->expects(self::once())
  107. ->method('get')
  108. ->with('/_internal/request/person-files/delete/123');
  109. $apiLegacyStorage->deletePersonFiles(123);
  110. }
  111. }