ApiLegacyStorageTest.php 4.7 KB

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