BucketTest.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733
  1. <?php
  2. namespace Qiniu\Tests;
  3. use PHPUnit\Framework\TestCase;
  4. use Qiniu\Config;
  5. use Qiniu\Storage\BucketManager;
  6. class BucketTest extends TestCase
  7. {
  8. /**
  9. * @var BucketManager
  10. */
  11. private static $bucketManager;
  12. private static $dummyBucketManager;
  13. private static $bucketName;
  14. private static $key;
  15. private static $key2;
  16. private static $customCallbackURL;
  17. private static $bucketToCreate;
  18. private static $bucketLifeRuleName;
  19. private static $bucketLifeRulePrefix;
  20. private static $bucketEventName;
  21. private static $bucketEventPrefix;
  22. private static $keysToCleanup;
  23. /**
  24. * @beforeClass
  25. */
  26. public static function prepareEnvironment()
  27. {
  28. global $bucketName;
  29. global $key;
  30. global $key2;
  31. self::$bucketName = $bucketName;
  32. self::$key = $key;
  33. self::$key2 = $key2;
  34. global $customCallbackURL;
  35. self::$customCallbackURL = $customCallbackURL;
  36. global $testAuth;
  37. $config = new Config();
  38. self::$bucketManager = new BucketManager($testAuth, $config);
  39. global $dummyAuth;
  40. self::$dummyBucketManager = new BucketManager($dummyAuth);
  41. self::$bucketToCreate = 'phpsdk-ci-test' . rand(1, 1000);
  42. self::$bucketLifeRuleName = 'bucket_life_rule' . rand(1, 1000);
  43. self::$bucketLifeRulePrefix = 'prefix-test' . rand(1, 1000);
  44. self::$bucketEventName = 'bucketevent' . rand(1, 1000);
  45. self::$bucketEventPrefix = 'event-test' . rand(1, 1000);
  46. self::$keysToCleanup = array();
  47. }
  48. /**
  49. * @afterClass
  50. */
  51. public static function cleanupTestData()
  52. {
  53. $ops = BucketManager::buildBatchDelete(self::$bucketName, self::$keysToCleanup);
  54. // ignore result for cleanup
  55. self::$bucketManager->batch($ops);
  56. }
  57. private static function getObjectKey($key)
  58. {
  59. $result = $key . rand();
  60. self::$bucketManager->copy(
  61. self::$bucketName,
  62. $key,
  63. self::$bucketName,
  64. $result
  65. );
  66. self::$keysToCleanup[] = $result;
  67. return $result;
  68. }
  69. public function testBuckets()
  70. {
  71. list($list, $error) = self::$bucketManager->buckets();
  72. $this->assertNull($error);
  73. $this->assertTrue(in_array(self::$bucketName, $list));
  74. list($list2, $error) = self::$dummyBucketManager->buckets();
  75. $this->assertEquals(401, $error->code());
  76. $this->assertNotNull($error->message());
  77. $this->assertNotNull($error->getResponse());
  78. $this->assertNull($list2);
  79. }
  80. public function testListBuckets()
  81. {
  82. list($ret, $error) = self::$bucketManager->listbuckets('z0');
  83. $this->assertNull($error);
  84. $this->assertNotNull($ret);
  85. }
  86. public function testCreateBucket()
  87. {
  88. list($ret, $error) = self::$bucketManager->createBucket(self::$bucketToCreate);
  89. $this->assertNull($error);
  90. $this->assertNotNull($ret);
  91. }
  92. public function testDeleteBucket()
  93. {
  94. list($ret, $error) = self::$bucketManager->deleteBucket(self::$bucketToCreate);
  95. $this->assertNull($error);
  96. $this->assertNotNull($ret);
  97. }
  98. public function testDomains()
  99. {
  100. list($ret, $error) = self::$bucketManager->domains(self::$bucketName);
  101. $this->assertNull($error);
  102. $this->assertNotNull($ret);
  103. }
  104. public function testBucketInfo()
  105. {
  106. list($ret, $error) = self::$bucketManager->bucketInfo(self::$bucketName);
  107. $this->assertNull($error);
  108. $this->assertNotNull($ret);
  109. }
  110. public function testBucketInfos()
  111. {
  112. list($ret, $error) = self::$bucketManager->bucketInfos('z0');
  113. $this->assertNull($error);
  114. $this->assertNotNull($ret);
  115. }
  116. public function testList()
  117. {
  118. list($ret, $error) = self::$bucketManager->listFiles(self::$bucketName, null, null, 10);
  119. $this->assertNull($error);
  120. $this->assertNotNull($ret['items'][0]);
  121. $this->assertNotNull($ret['marker']);
  122. }
  123. public function testListFilesv2()
  124. {
  125. list($ret, $error) = self::$bucketManager->listFilesv2(self::$bucketName, null, null, 10);
  126. $this->assertNull($error);
  127. $this->assertNotNull($ret);
  128. }
  129. public function testBucketLifecycleRule()
  130. {
  131. // delete
  132. self::$bucketManager->deleteBucketLifecycleRule(self::$bucketName, self::$bucketLifeRuleName);
  133. // add
  134. list($ret, $error) = self::$bucketManager->bucketLifecycleRule(
  135. self::$bucketName,
  136. self::$bucketLifeRuleName,
  137. self::$bucketLifeRulePrefix,
  138. 80,
  139. 70,
  140. 72,
  141. 74,
  142. 71
  143. );
  144. $this->assertNull($error);
  145. $this->assertNotNull($ret);
  146. // get
  147. list($ret, $error) = self::$bucketManager->getBucketLifecycleRules(self::$bucketName);
  148. $this->assertNull($error);
  149. $this->assertNotNull($ret);
  150. $rule = null;
  151. foreach ($ret as $r) {
  152. if ($r["name"] === self::$bucketLifeRuleName) {
  153. $rule = $r;
  154. break;
  155. }
  156. }
  157. $this->assertNotNull($rule);
  158. $this->assertEquals(self::$bucketLifeRulePrefix, $rule["prefix"]);
  159. $this->assertEquals(80, $rule["delete_after_days"]);
  160. $this->assertEquals(70, $rule["to_line_after_days"]);
  161. $this->assertEquals(71, $rule["to_archive_ir_after_days"]);
  162. $this->assertEquals(72, $rule["to_archive_after_days"]);
  163. $this->assertEquals(74, $rule["to_deep_archive_after_days"]);
  164. // update
  165. list($ret, $error) = self::$bucketManager->updateBucketLifecycleRule(
  166. self::$bucketName,
  167. self::$bucketLifeRuleName,
  168. 'update-' . self::$bucketLifeRulePrefix,
  169. 90,
  170. 75,
  171. 80,
  172. 85,
  173. 78
  174. );
  175. $this->assertNull($error);
  176. $this->assertNotNull($ret);
  177. // get
  178. list($ret, $error) = self::$bucketManager->getBucketLifecycleRules(self::$bucketName);
  179. $this->assertNull($error);
  180. $this->assertNotNull($ret);
  181. $rule = null;
  182. foreach ($ret as $r) {
  183. if ($r["name"] === self::$bucketLifeRuleName) {
  184. $rule = $r;
  185. break;
  186. }
  187. }
  188. $this->assertNotNull($rule);
  189. $this->assertEquals('update-' . self::$bucketLifeRulePrefix, $rule["prefix"]);
  190. $this->assertEquals(90, $rule["delete_after_days"]);
  191. $this->assertEquals(75, $rule["to_line_after_days"]);
  192. $this->assertEquals(78, $rule["to_archive_ir_after_days"]);
  193. $this->assertEquals(80, $rule["to_archive_after_days"]);
  194. $this->assertEquals(85, $rule["to_deep_archive_after_days"]);
  195. // delete
  196. list($ret, $error) = self::$bucketManager->deleteBucketLifecycleRule(
  197. self::$bucketName,
  198. self::$bucketLifeRuleName
  199. );
  200. $this->assertNull($error);
  201. $this->assertNotNull($ret);
  202. }
  203. public function testPutBucketEvent()
  204. {
  205. list($ret, $error) = self::$bucketManager->putBucketEvent(
  206. self::$bucketName,
  207. self::$bucketEventName,
  208. self::$bucketEventPrefix,
  209. 'img',
  210. array('copy'),
  211. self::$customCallbackURL
  212. );
  213. $this->assertNull($error);
  214. $this->assertNotNull($ret);
  215. }
  216. public function testUpdateBucketEvent()
  217. {
  218. list($ret, $error) = self::$bucketManager->updateBucketEvent(
  219. self::$bucketName,
  220. self::$bucketEventName,
  221. self::$bucketEventPrefix,
  222. 'video',
  223. array('copy'),
  224. self::$customCallbackURL
  225. );
  226. $this->assertNull($error);
  227. $this->assertNotNull($ret);
  228. }
  229. public function testGetBucketEvents()
  230. {
  231. list($ret, $error) = self::$bucketManager->getBucketEvents(self::$bucketName);
  232. $this->assertNull($error);
  233. $this->assertNotNull($ret);
  234. }
  235. public function testDeleteBucketEvent()
  236. {
  237. list($ret, $error) = self::$bucketManager->deleteBucketEvent(self::$bucketName, self::$bucketEventName);
  238. $this->assertNull($error);
  239. $this->assertNotNull($ret);
  240. }
  241. public function testStat()
  242. {
  243. list($stat, $error) = self::$bucketManager->stat(self::$bucketName, self::$key);
  244. $this->assertNull($error);
  245. $this->assertNotNull($stat);
  246. $this->assertNotNull($stat['hash']);
  247. list($stat, $error) = self::$bucketManager->stat(self::$bucketName, 'nofile');
  248. $this->assertEquals(612, $error->code());
  249. $this->assertNotNull($error->message());
  250. $this->assertNull($stat);
  251. list($stat, $error) = self::$bucketManager->stat('nobucket', 'nofile');
  252. $this->assertEquals(631, $error->code());
  253. $this->assertNotNull($error->message());
  254. $this->assertNull($stat);
  255. }
  256. public function testDelete()
  257. {
  258. $fileToDel = self::getObjectKey(self::$key);
  259. list(, $error) = self::$bucketManager->delete(self::$bucketName, $fileToDel);
  260. $this->assertNull($error);
  261. }
  262. public function testRename()
  263. {
  264. $fileToRename = self::getObjectKey(self::$key);
  265. $fileRenamed = $fileToRename . 'new';
  266. list(, $error) = self::$bucketManager->rename(self::$bucketName, $fileToRename, $fileRenamed);
  267. $this->assertNull($error);
  268. self::$keysToCleanup[] = $fileRenamed;
  269. }
  270. public function testCopy()
  271. {
  272. $fileToCopy = self::getObjectKey(self::$key2);
  273. $fileCopied = $fileToCopy . 'copied';
  274. //test force copy
  275. list(, $error) = self::$bucketManager->copy(
  276. self::$bucketName,
  277. $fileToCopy,
  278. self::$bucketName,
  279. $fileCopied,
  280. true
  281. );
  282. $this->assertNull($error);
  283. list($fileToCopyStat,) = self::$bucketManager->stat(self::$bucketName, $fileToCopy);
  284. list($fileCopiedStat,) = self::$bucketManager->stat(self::$bucketName, $fileCopied);
  285. $this->assertEquals($fileToCopyStat['hash'], $fileCopiedStat['hash']);
  286. self::$keysToCleanup[] = $fileCopied;
  287. }
  288. public function testChangeMime()
  289. {
  290. $fileToChange = self::getObjectKey('php-sdk.html');
  291. list(, $error) = self::$bucketManager->changeMime(
  292. self::$bucketName,
  293. $fileToChange,
  294. 'text/plain'
  295. );
  296. $this->assertNull($error);
  297. list($ret, $error) = self::$bucketManager->stat(
  298. self::$bucketName,
  299. $fileToChange
  300. );
  301. $this->assertNull($error);
  302. $this->assertEquals('text/plain', $ret['mimeType']);
  303. }
  304. public function testPrefetch()
  305. {
  306. list($ret, $error) = self::$bucketManager->prefetch(
  307. self::$bucketName,
  308. 'php-sdk.html'
  309. );
  310. $this->assertNull($error);
  311. $this->assertNotNull($ret);
  312. }
  313. public function testPrefetchFailed()
  314. {
  315. list($ret, $error) = self::$bucketManager->prefetch(
  316. 'fakebucket',
  317. 'php-sdk.html'
  318. );
  319. $this->assertNotNull($error);
  320. $this->assertNull($ret);
  321. }
  322. public function testFetch()
  323. {
  324. list($ret, $error) = self::$bucketManager->fetch(
  325. 'http://developer.qiniu.com/docs/v6/sdk/php-sdk.html',
  326. self::$bucketName,
  327. 'fetch.html'
  328. );
  329. $this->assertNull($error);
  330. $this->assertArrayHasKey('hash', $ret);
  331. list($ret, $error) = self::$bucketManager->fetch(
  332. 'http://developer.qiniu.com/docs/v6/sdk/php-sdk.html',
  333. self::$bucketName,
  334. ''
  335. );
  336. $this->assertNull($error);
  337. $this->assertArrayHasKey('key', $ret);
  338. list($ret, $error) = self::$bucketManager->fetch(
  339. 'http://developer.qiniu.com/docs/v6/sdk/php-sdk.html',
  340. self::$bucketName
  341. );
  342. $this->assertNull($error);
  343. $this->assertArrayHasKey('key', $ret);
  344. }
  345. public function testFetchFailed()
  346. {
  347. list($ret, $error) = self::$bucketManager->fetch(
  348. 'http://developer.qiniu.com/docs/v6/sdk/php-sdk.html',
  349. 'fakebucket'
  350. );
  351. $this->assertNotNull($error);
  352. $this->assertNull($ret);
  353. }
  354. public function testAsynchFetch()
  355. {
  356. list($ret, $error) = self::$bucketManager->asynchFetch(
  357. 'http://devtools.qiniu.com/qiniu.png',
  358. self::$bucketName,
  359. null,
  360. 'qiniu.png'
  361. );
  362. $this->assertNull($error);
  363. $this->assertArrayHasKey('id', $ret);
  364. list($ret, $error) = self::$bucketManager->asynchFetch(
  365. 'http://devtools.qiniu.com/qiniu.png',
  366. self::$bucketName,
  367. null,
  368. ''
  369. );
  370. $this->assertNull($error);
  371. $this->assertArrayHasKey('id', $ret);
  372. list($ret, $error) = self::$bucketManager->asynchFetch(
  373. 'http://devtools.qiniu.com/qiniu.png',
  374. self::$bucketName
  375. );
  376. $this->assertNull($error);
  377. $this->assertArrayHasKey('id', $ret);
  378. }
  379. public function testAsynchFetchFailed()
  380. {
  381. list($ret, $error) = self::$bucketManager->asynchFetch(
  382. 'http://devtools.qiniu.com/qiniu.png',
  383. 'fakebucket'
  384. );
  385. $this->assertNotNull($error);
  386. $this->assertNull($ret);
  387. }
  388. public function testBatchCopy()
  389. {
  390. $key = 'copyto' . rand();
  391. $ops = BucketManager::buildBatchCopy(
  392. self::$bucketName,
  393. array(self::$key => $key),
  394. self::$bucketName,
  395. true
  396. );
  397. list($ret, $error) = self::$bucketManager->batch($ops);
  398. $this->assertNull($error);
  399. $this->assertEquals(200, $ret[0]['code']);
  400. self::$keysToCleanup[] = $key;
  401. }
  402. public function testBatchMove()
  403. {
  404. $fileToMove = self::getObjectKey(self::$key);
  405. $fileMoved = $fileToMove . 'to';
  406. $ops = BucketManager::buildBatchMove(
  407. self::$bucketName,
  408. array($fileToMove => $fileMoved),
  409. self::$bucketName,
  410. true
  411. );
  412. list($ret, $error) = self::$bucketManager->batch($ops);
  413. $this->assertNull($error);
  414. $this->assertEquals(200, $ret[0]['code']);
  415. self::$keysToCleanup[] = $fileMoved;
  416. }
  417. public function testBatchRename()
  418. {
  419. $fileToRename = self::getObjectKey(self::$key);
  420. $fileRenamed = $fileToRename . 'to';
  421. $ops = BucketManager::buildBatchRename(
  422. self::$bucketName,
  423. array($fileToRename => $fileRenamed),
  424. true
  425. );
  426. list($ret, $error) = self::$bucketManager->batch($ops);
  427. $this->assertNull($error);
  428. $this->assertEquals(200, $ret[0]['code']);
  429. self::$keysToCleanup[] = $fileRenamed;
  430. }
  431. public function testBatchStat()
  432. {
  433. $ops = BucketManager::buildBatchStat(self::$bucketName, array('php-sdk.html'));
  434. list($ret, $error) = self::$bucketManager->batch($ops);
  435. $this->assertNull($error);
  436. $this->assertEquals(200, $ret[0]['code']);
  437. }
  438. public function testBatchChangeTypeAndBatchRestoreAr()
  439. {
  440. $key = self::getObjectKey(self::$key);
  441. $ops = BucketManager::buildBatchChangeType(self::$bucketName, array($key => 2)); // 2 Archive
  442. list($ret, $error) = self::$bucketManager->batch($ops);
  443. $this->assertNull($error);
  444. $this->assertEquals(200, $ret[0]['code']);
  445. $ops = BucketManager::buildBatchRestoreAr(self::$bucketName, array($key => 1)); // 1 day
  446. list($ret, $error) = self::$bucketManager->batch($ops);
  447. $this->assertNull($error);
  448. $this->assertEquals(200, $ret[0]['code']);
  449. }
  450. public function testDeleteAfterDays()
  451. {
  452. $key = "noexist" . rand();
  453. list($ret, $error) = self::$bucketManager->deleteAfterDays(self::$bucketName, $key, 1);
  454. $this->assertNotNull($error);
  455. $this->assertNull($ret);
  456. $key = self::getObjectKey(self::$key);
  457. list(, $error) = self::$bucketManager->deleteAfterDays(self::$bucketName, $key, 1);
  458. $this->assertNull($error);
  459. list($ret, $error) = self::$bucketManager->stat(self::$bucketName, $key);
  460. $this->assertNull($error);
  461. $this->assertGreaterThan(23 * 3600, $ret['expiration'] - time());
  462. $this->assertLessThan(48 * 3600, $ret['expiration'] - time());
  463. }
  464. public function testSetObjectLifecycle()
  465. {
  466. $key = self::getObjectKey(self::$key);
  467. list(, $err) = self::$bucketManager->setObjectLifecycle(
  468. self::$bucketName,
  469. $key,
  470. 10,
  471. 20,
  472. 30,
  473. 40,
  474. 15
  475. );
  476. $this->assertNull($err);
  477. list($ret, $error) = self::$bucketManager->stat(self::$bucketName, $key);
  478. $this->assertNull($error);
  479. $this->assertNotNull($ret['transitionToIA']);
  480. $this->assertNotNull($ret['transitionToArchiveIR']);
  481. $this->assertNotNull($ret['transitionToARCHIVE']);
  482. $this->assertNotNull($ret['transitionToDeepArchive']);
  483. $this->assertNotNull($ret['expiration']);
  484. }
  485. public function testSetObjectLifecycleWithCond()
  486. {
  487. $key = self::getObjectKey(self::$key);
  488. list($ret, $err) = self::$bucketManager->stat(self::$bucketName, $key);
  489. $this->assertNull($err);
  490. $key_hash = $ret['hash'];
  491. $key_fsize = $ret['fsize'];
  492. list(, $err) = self::$bucketManager->setObjectLifecycleWithCond(
  493. self::$bucketName,
  494. $key,
  495. array(
  496. 'hash' => $key_hash,
  497. 'fsize' => $key_fsize
  498. ),
  499. 10,
  500. 20,
  501. 30,
  502. 40,
  503. 15
  504. );
  505. $this->assertNull($err);
  506. list($ret, $error) = self::$bucketManager->stat(self::$bucketName, $key);
  507. $this->assertNull($error);
  508. $this->assertNotNull($ret['transitionToIA']);
  509. $this->assertNotNull($ret['transitionToArchiveIR']);
  510. $this->assertNotNull($ret['transitionToARCHIVE']);
  511. $this->assertNotNull($ret['transitionToDeepArchive']);
  512. $this->assertNotNull($ret['expiration']);
  513. }
  514. public function testBatchSetObjectLifecycle()
  515. {
  516. $key = self::getObjectKey(self::$key);
  517. $ops = BucketManager::buildBatchSetObjectLifecycle(
  518. self::$bucketName,
  519. array($key),
  520. 10,
  521. 20,
  522. 30,
  523. 40,
  524. 15
  525. );
  526. list($ret, $err) = self::$bucketManager->batch($ops);
  527. $this->assertNull($err);
  528. $this->assertEquals(200, $ret[0]['code']);
  529. }
  530. public function testGetCorsRules()
  531. {
  532. list(, $err) = self::$bucketManager->getCorsRules(self::$bucketName);
  533. $this->assertNull($err);
  534. }
  535. public function testPutBucketAccessStyleMode()
  536. {
  537. list(, $err) = self::$bucketManager->putBucketAccessStyleMode(self::$bucketName, 0);
  538. $this->assertNull($err);
  539. }
  540. public function testPutBucketAccessMode()
  541. {
  542. list(, $err) = self::$bucketManager->putBucketAccessMode(self::$bucketName, 0);
  543. $this->assertNull($err);
  544. }
  545. public function testPutReferAntiLeech()
  546. {
  547. list(, $err) = self::$bucketManager->putReferAntiLeech(self::$bucketName, 0, "1", "*");
  548. $this->assertNull($err);
  549. }
  550. public function testPutBucketMaxAge()
  551. {
  552. list(, $err) = self::$bucketManager->putBucketMaxAge(self::$bucketName, 31536000);
  553. $this->assertNull($err);
  554. }
  555. public function testPutBucketQuota()
  556. {
  557. list(, $err) = self::$bucketManager->putBucketQuota(self::$bucketName, -1, -1);
  558. $this->assertNull($err);
  559. }
  560. public function testGetBucketQuota()
  561. {
  562. list(, $err) = self::$bucketManager->getBucketQuota(self::$bucketName);
  563. $this->assertNull($err);
  564. }
  565. public function testChangeType()
  566. {
  567. $fileToChange = self::getObjectKey(self::$key);
  568. list(, $err) = self::$bucketManager->changeType(self::$bucketName, $fileToChange, 0);
  569. $this->assertNull($err);
  570. list(, $err) = self::$bucketManager->changeType(self::$bucketName, $fileToChange, 1);
  571. $this->assertNull($err);
  572. }
  573. public function testArchiveRestoreAr()
  574. {
  575. $key = self::getObjectKey(self::$key);
  576. self::$bucketManager->changeType(self::$bucketName, $key, 2);
  577. list(, $err) = self::$bucketManager->restoreAr(self::$bucketName, $key, 2);
  578. $this->assertNull($err);
  579. list($ret, $err) = self::$bucketManager->stat(self::$bucketName, $key);
  580. $this->assertNull($err);
  581. $this->assertEquals(2, $ret["type"]);
  582. // restoreStatus
  583. // null means frozen;
  584. // 1 means be unfreezing;
  585. // 2 means be unfrozen;
  586. $this->assertNotNull($ret["restoreStatus"]);
  587. $this->assertContains($ret["restoreStatus"], array(1, 2));
  588. }
  589. public function testDeepArchiveRestoreAr()
  590. {
  591. $key = self::getObjectKey(self::$key);
  592. self::$bucketManager->changeType(self::$bucketName, $key, 3);
  593. list(, $err) = self::$bucketManager->restoreAr(self::$bucketName, $key, 1);
  594. $this->assertNull($err);
  595. list($ret, $err) = self::$bucketManager->stat(self::$bucketName, $key);
  596. $this->assertNull($err);
  597. $this->assertEquals(3, $ret["type"]);
  598. // restoreStatus
  599. // null means frozen;
  600. // 1 means be unfreezing;
  601. // 2 means be unfrozen;
  602. $this->assertNotNull($ret["restoreStatus"]);
  603. $this->assertContains($ret["restoreStatus"], array(1, 2));
  604. }
  605. public function testChangeStatus()
  606. {
  607. $key = self::getObjectKey(self::$key);
  608. list(, $err) = self::$bucketManager->changeStatus(self::$bucketName, $key, 1);
  609. $this->assertNull($err);
  610. list($ret, $err) = self::$bucketManager->stat(self::$bucketName, $key);
  611. $this->assertNull($err);
  612. $this->assertEquals(1, $ret['status']);
  613. list(, $err) = self::$bucketManager->changeStatus(self::$bucketName, $key, 0);
  614. $this->assertNull($err);
  615. list($ret, $err) = self::$bucketManager->stat(self::$bucketName, $key);
  616. $this->assertNull($err);
  617. $this->assertArrayNotHasKey('status', $ret);
  618. }
  619. }