OssClientListObjectsTest.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <?php
  2. namespace OSS\Tests;
  3. use OSS\Core\OssException;
  4. use OSS\OssClient;
  5. require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestOssClientBase.php';
  6. class OssClientListObjectsTest extends TestOssClientBase
  7. {
  8. public function testListObjectsDefault()
  9. {
  10. try {
  11. $listObjectInfo = $this->ossClient->listObjects($this->bucket);
  12. $objectList = $listObjectInfo->getObjectList();
  13. $prefixList = $listObjectInfo->getPrefixList();
  14. $this->assertNotNull($objectList);
  15. $this->assertNotNull($prefixList);
  16. $this->assertTrue(is_array($objectList));
  17. $this->assertTrue(is_array($prefixList));
  18. $this->assertEquals((2), count($objectList));
  19. $this->assertEquals(4, count($prefixList));
  20. $this->assertEquals('file++00', $objectList[0]->getKey());
  21. $this->assertEquals('file++01', $objectList[1]->getKey());
  22. $this->assertEquals('folder/', $prefixList[0]->getPrefix());
  23. $this->assertEquals('sub++/', $prefixList[1]->getPrefix());
  24. $this->assertEquals('test/', $prefixList[2]->getPrefix());
  25. $this->assertEquals('work/', $prefixList[3]->getPrefix());
  26. } catch (OssException $e) {
  27. $this->assertTrue(false);
  28. }
  29. }
  30. public function testListObjectsWithPrefix()
  31. {
  32. /**
  33. * List the files in your bucket.
  34. */
  35. $prefix = 'folder/';
  36. $delimiter = '';
  37. $next_marker = '';
  38. $maxkeys = 1000;
  39. $options = array(
  40. 'delimiter' => $delimiter,
  41. 'prefix' => $prefix,
  42. 'max-keys' => $maxkeys,
  43. 'marker' => $next_marker,
  44. );
  45. try {
  46. $listObjectInfo = $this->ossClient->listObjects($this->bucket, $options);
  47. $objectList = $listObjectInfo->getObjectList();
  48. $prefixList = $listObjectInfo->getPrefixList();
  49. $this->assertNotNull($objectList);
  50. $this->assertNotNull($prefixList);
  51. $this->assertTrue(is_array($objectList));
  52. $this->assertTrue(is_array($prefixList));
  53. $this->assertEquals(12, count($objectList));
  54. $this->assertEquals(0, count($prefixList));
  55. $this->assertEquals('folder/00', $objectList[0]->getKey());
  56. $this->assertEquals('folder/01', $objectList[1]->getKey());
  57. $this->assertEquals('folder/11', $objectList[11]->getKey());
  58. } catch (OssException $e) {
  59. $this->assertTrue(false);
  60. }
  61. }
  62. public function testListObjectsWithMaxKeysAndMarker()
  63. {
  64. $count = 0;
  65. $nextMarker = '';
  66. while (true) {
  67. try {
  68. $options = array(
  69. 'delimiter' => '',
  70. 'marker' => $nextMarker,
  71. 'max-keys' => 2,
  72. );
  73. $listObjectInfo = $this->ossClient->listObjects($this->bucket, $options);
  74. } catch (OssException $e) {
  75. $this->assertTrue(false);
  76. }
  77. $nextMarker = $listObjectInfo->getNextMarker();
  78. $listObject = $listObjectInfo->getObjectList();
  79. $count += count($listObject);
  80. $this->assertEquals(2, count($listObject));
  81. if ($listObjectInfo->getIsTruncated() !== "true") {
  82. break;
  83. }
  84. }
  85. $this->assertEquals(12 + 8 + 5 + 3 + 2, $count);
  86. }
  87. public function testListObjectsWithMarker()
  88. {
  89. $count = 0;
  90. $nextMarker = 'h';
  91. while (true) {
  92. try {
  93. $options = array(
  94. 'delimiter' => '',
  95. 'marker' => $nextMarker,
  96. 'max-keys' => 1,
  97. );
  98. $listObjectInfo = $this->ossClient->listObjects($this->bucket, $options);
  99. } catch (OssException $e) {
  100. $this->assertTrue(false);
  101. }
  102. $nextMarker = $listObjectInfo->getNextMarker();
  103. $listObject = $listObjectInfo->getObjectList();
  104. $count += count($listObject);
  105. $this->assertEquals(1, count($listObject));
  106. if ($listObjectInfo->getIsTruncated() !== "true") {
  107. break;
  108. }
  109. }
  110. $this->assertEquals(8 + 5 + 3, $count);
  111. $nextMarker = 'h';
  112. try {
  113. $options = array(
  114. 'delimiter' => '',
  115. 'marker' => $nextMarker,
  116. 'max-keys' => 5,
  117. );
  118. $listObjectInfo = $this->ossClient->listObjects($this->bucket, $options);
  119. } catch (OssException $e) {
  120. $this->assertTrue(false);
  121. }
  122. $nextMarker = $listObjectInfo->getNextMarker();
  123. $listObject = $listObjectInfo->getObjectList();
  124. $this->assertEquals('test/01', $nextMarker);
  125. $this->assertEquals(5, count($listObject));
  126. $this->assertEquals("true", $listObjectInfo->getIsTruncated());
  127. }
  128. protected function setUp(): void
  129. {
  130. parent::setUp();
  131. //folder
  132. for ($i = 0; $i < 12; $i++) {
  133. $key = 'folder/'. sprintf("%02d",$i);
  134. $this->ossClient->putObject($this->bucket, $key, "content");
  135. }
  136. //test
  137. for ($i = 0; $i < 8; $i++) {
  138. $key = 'test/'. sprintf("%02d",$i);
  139. $this->ossClient->putObject($this->bucket, $key, "content");
  140. }
  141. //work
  142. for ($i = 0; $i < 5; $i++) {
  143. $key = 'work/'. sprintf("%02d",$i);
  144. $this->ossClient->putObject($this->bucket, $key, "content");
  145. }
  146. //sub++
  147. for ($i = 0; $i < 3; $i++) {
  148. $key = 'sub++/'. sprintf("%02d",$i);
  149. $this->ossClient->putObject($this->bucket, $key, "content");
  150. }
  151. //file++
  152. for ($i = 0; $i < 2; $i++) {
  153. $key = 'file++'. sprintf("%02d",$i);
  154. $this->ossClient->putObject($this->bucket, $key, "content");
  155. }
  156. }
  157. protected function tearDown(): void
  158. {
  159. parent::tearDown();
  160. }
  161. }