batch($ops); } private static function getObjectKey($key) { $result = $key . rand(); self::$bucketManager->copy( self::$bucketName, $key, self::$bucketName, $result ); self::$keysToCleanup[] = $result; return $result; } public function testBuckets() { list($list, $error) = self::$bucketManager->buckets(); $this->assertNull($error); $this->assertTrue(in_array(self::$bucketName, $list)); list($list2, $error) = self::$dummyBucketManager->buckets(); $this->assertEquals(401, $error->code()); $this->assertNotNull($error->message()); $this->assertNotNull($error->getResponse()); $this->assertNull($list2); } public function testListBuckets() { list($ret, $error) = self::$bucketManager->listbuckets('z0'); $this->assertNull($error); $this->assertNotNull($ret); } public function testCreateBucket() { list($ret, $error) = self::$bucketManager->createBucket(self::$bucketToCreate); $this->assertNull($error); $this->assertNotNull($ret); } public function testDeleteBucket() { list($ret, $error) = self::$bucketManager->deleteBucket(self::$bucketToCreate); $this->assertNull($error); $this->assertNotNull($ret); } public function testDomains() { list($ret, $error) = self::$bucketManager->domains(self::$bucketName); $this->assertNull($error); $this->assertNotNull($ret); } public function testBucketInfo() { list($ret, $error) = self::$bucketManager->bucketInfo(self::$bucketName); $this->assertNull($error); $this->assertNotNull($ret); } public function testBucketInfos() { list($ret, $error) = self::$bucketManager->bucketInfos('z0'); $this->assertNull($error); $this->assertNotNull($ret); } public function testList() { list($ret, $error) = self::$bucketManager->listFiles(self::$bucketName, null, null, 10); $this->assertNull($error); $this->assertNotNull($ret['items'][0]); $this->assertNotNull($ret['marker']); } public function testListFilesv2() { list($ret, $error) = self::$bucketManager->listFilesv2(self::$bucketName, null, null, 10); $this->assertNull($error); $this->assertNotNull($ret); } public function testBucketLifecycleRule() { // delete self::$bucketManager->deleteBucketLifecycleRule(self::$bucketName, self::$bucketLifeRuleName); // add list($ret, $error) = self::$bucketManager->bucketLifecycleRule( self::$bucketName, self::$bucketLifeRuleName, self::$bucketLifeRulePrefix, 80, 70, 72, 74, 71 ); $this->assertNull($error); $this->assertNotNull($ret); // get list($ret, $error) = self::$bucketManager->getBucketLifecycleRules(self::$bucketName); $this->assertNull($error); $this->assertNotNull($ret); $rule = null; foreach ($ret as $r) { if ($r["name"] === self::$bucketLifeRuleName) { $rule = $r; break; } } $this->assertNotNull($rule); $this->assertEquals(self::$bucketLifeRulePrefix, $rule["prefix"]); $this->assertEquals(80, $rule["delete_after_days"]); $this->assertEquals(70, $rule["to_line_after_days"]); $this->assertEquals(71, $rule["to_archive_ir_after_days"]); $this->assertEquals(72, $rule["to_archive_after_days"]); $this->assertEquals(74, $rule["to_deep_archive_after_days"]); // update list($ret, $error) = self::$bucketManager->updateBucketLifecycleRule( self::$bucketName, self::$bucketLifeRuleName, 'update-' . self::$bucketLifeRulePrefix, 90, 75, 80, 85, 78 ); $this->assertNull($error); $this->assertNotNull($ret); // get list($ret, $error) = self::$bucketManager->getBucketLifecycleRules(self::$bucketName); $this->assertNull($error); $this->assertNotNull($ret); $rule = null; foreach ($ret as $r) { if ($r["name"] === self::$bucketLifeRuleName) { $rule = $r; break; } } $this->assertNotNull($rule); $this->assertEquals('update-' . self::$bucketLifeRulePrefix, $rule["prefix"]); $this->assertEquals(90, $rule["delete_after_days"]); $this->assertEquals(75, $rule["to_line_after_days"]); $this->assertEquals(78, $rule["to_archive_ir_after_days"]); $this->assertEquals(80, $rule["to_archive_after_days"]); $this->assertEquals(85, $rule["to_deep_archive_after_days"]); // delete list($ret, $error) = self::$bucketManager->deleteBucketLifecycleRule( self::$bucketName, self::$bucketLifeRuleName ); $this->assertNull($error); $this->assertNotNull($ret); } public function testPutBucketEvent() { list($ret, $error) = self::$bucketManager->putBucketEvent( self::$bucketName, self::$bucketEventName, self::$bucketEventPrefix, 'img', array('copy'), self::$customCallbackURL ); $this->assertNull($error); $this->assertNotNull($ret); } public function testUpdateBucketEvent() { list($ret, $error) = self::$bucketManager->updateBucketEvent( self::$bucketName, self::$bucketEventName, self::$bucketEventPrefix, 'video', array('copy'), self::$customCallbackURL ); $this->assertNull($error); $this->assertNotNull($ret); } public function testGetBucketEvents() { list($ret, $error) = self::$bucketManager->getBucketEvents(self::$bucketName); $this->assertNull($error); $this->assertNotNull($ret); } public function testDeleteBucketEvent() { list($ret, $error) = self::$bucketManager->deleteBucketEvent(self::$bucketName, self::$bucketEventName); $this->assertNull($error); $this->assertNotNull($ret); } public function testStat() { list($stat, $error) = self::$bucketManager->stat(self::$bucketName, self::$key); $this->assertNull($error); $this->assertNotNull($stat); $this->assertNotNull($stat['hash']); list($stat, $error) = self::$bucketManager->stat(self::$bucketName, 'nofile'); $this->assertEquals(612, $error->code()); $this->assertNotNull($error->message()); $this->assertNull($stat); list($stat, $error) = self::$bucketManager->stat('nobucket', 'nofile'); $this->assertEquals(631, $error->code()); $this->assertNotNull($error->message()); $this->assertNull($stat); } public function testDelete() { $fileToDel = self::getObjectKey(self::$key); list(, $error) = self::$bucketManager->delete(self::$bucketName, $fileToDel); $this->assertNull($error); } public function testRename() { $fileToRename = self::getObjectKey(self::$key); $fileRenamed = $fileToRename . 'new'; list(, $error) = self::$bucketManager->rename(self::$bucketName, $fileToRename, $fileRenamed); $this->assertNull($error); self::$keysToCleanup[] = $fileRenamed; } public function testCopy() { $fileToCopy = self::getObjectKey(self::$key2); $fileCopied = $fileToCopy . 'copied'; //test force copy list(, $error) = self::$bucketManager->copy( self::$bucketName, $fileToCopy, self::$bucketName, $fileCopied, true ); $this->assertNull($error); list($fileToCopyStat,) = self::$bucketManager->stat(self::$bucketName, $fileToCopy); list($fileCopiedStat,) = self::$bucketManager->stat(self::$bucketName, $fileCopied); $this->assertEquals($fileToCopyStat['hash'], $fileCopiedStat['hash']); self::$keysToCleanup[] = $fileCopied; } public function testChangeMime() { $fileToChange = self::getObjectKey('php-sdk.html'); list(, $error) = self::$bucketManager->changeMime( self::$bucketName, $fileToChange, 'text/plain' ); $this->assertNull($error); list($ret, $error) = self::$bucketManager->stat( self::$bucketName, $fileToChange ); $this->assertNull($error); $this->assertEquals('text/plain', $ret['mimeType']); } public function testPrefetch() { list($ret, $error) = self::$bucketManager->prefetch( self::$bucketName, 'php-sdk.html' ); $this->assertNull($error); $this->assertNotNull($ret); } public function testPrefetchFailed() { list($ret, $error) = self::$bucketManager->prefetch( 'fakebucket', 'php-sdk.html' ); $this->assertNotNull($error); $this->assertNull($ret); } public function testFetch() { list($ret, $error) = self::$bucketManager->fetch( 'http://developer.qiniu.com/docs/v6/sdk/php-sdk.html', self::$bucketName, 'fetch.html' ); $this->assertNull($error); $this->assertArrayHasKey('hash', $ret); list($ret, $error) = self::$bucketManager->fetch( 'http://developer.qiniu.com/docs/v6/sdk/php-sdk.html', self::$bucketName, '' ); $this->assertNull($error); $this->assertArrayHasKey('key', $ret); list($ret, $error) = self::$bucketManager->fetch( 'http://developer.qiniu.com/docs/v6/sdk/php-sdk.html', self::$bucketName ); $this->assertNull($error); $this->assertArrayHasKey('key', $ret); } public function testFetchFailed() { list($ret, $error) = self::$bucketManager->fetch( 'http://developer.qiniu.com/docs/v6/sdk/php-sdk.html', 'fakebucket' ); $this->assertNotNull($error); $this->assertNull($ret); } public function testAsynchFetch() { list($ret, $error) = self::$bucketManager->asynchFetch( 'http://devtools.qiniu.com/qiniu.png', self::$bucketName, null, 'qiniu.png' ); $this->assertNull($error); $this->assertArrayHasKey('id', $ret); list($ret, $error) = self::$bucketManager->asynchFetch( 'http://devtools.qiniu.com/qiniu.png', self::$bucketName, null, '' ); $this->assertNull($error); $this->assertArrayHasKey('id', $ret); list($ret, $error) = self::$bucketManager->asynchFetch( 'http://devtools.qiniu.com/qiniu.png', self::$bucketName ); $this->assertNull($error); $this->assertArrayHasKey('id', $ret); } public function testAsynchFetchFailed() { list($ret, $error) = self::$bucketManager->asynchFetch( 'http://devtools.qiniu.com/qiniu.png', 'fakebucket' ); $this->assertNotNull($error); $this->assertNull($ret); } public function testBatchCopy() { $key = 'copyto' . rand(); $ops = BucketManager::buildBatchCopy( self::$bucketName, array(self::$key => $key), self::$bucketName, true ); list($ret, $error) = self::$bucketManager->batch($ops); $this->assertNull($error); $this->assertEquals(200, $ret[0]['code']); self::$keysToCleanup[] = $key; } public function testBatchMove() { $fileToMove = self::getObjectKey(self::$key); $fileMoved = $fileToMove . 'to'; $ops = BucketManager::buildBatchMove( self::$bucketName, array($fileToMove => $fileMoved), self::$bucketName, true ); list($ret, $error) = self::$bucketManager->batch($ops); $this->assertNull($error); $this->assertEquals(200, $ret[0]['code']); self::$keysToCleanup[] = $fileMoved; } public function testBatchRename() { $fileToRename = self::getObjectKey(self::$key); $fileRenamed = $fileToRename . 'to'; $ops = BucketManager::buildBatchRename( self::$bucketName, array($fileToRename => $fileRenamed), true ); list($ret, $error) = self::$bucketManager->batch($ops); $this->assertNull($error); $this->assertEquals(200, $ret[0]['code']); self::$keysToCleanup[] = $fileRenamed; } public function testBatchStat() { $ops = BucketManager::buildBatchStat(self::$bucketName, array('php-sdk.html')); list($ret, $error) = self::$bucketManager->batch($ops); $this->assertNull($error); $this->assertEquals(200, $ret[0]['code']); } public function testBatchChangeTypeAndBatchRestoreAr() { $key = self::getObjectKey(self::$key); $ops = BucketManager::buildBatchChangeType(self::$bucketName, array($key => 2)); // 2 Archive list($ret, $error) = self::$bucketManager->batch($ops); $this->assertNull($error); $this->assertEquals(200, $ret[0]['code']); $ops = BucketManager::buildBatchRestoreAr(self::$bucketName, array($key => 1)); // 1 day list($ret, $error) = self::$bucketManager->batch($ops); $this->assertNull($error); $this->assertEquals(200, $ret[0]['code']); } public function testDeleteAfterDays() { $key = "noexist" . rand(); list($ret, $error) = self::$bucketManager->deleteAfterDays(self::$bucketName, $key, 1); $this->assertNotNull($error); $this->assertNull($ret); $key = self::getObjectKey(self::$key); list(, $error) = self::$bucketManager->deleteAfterDays(self::$bucketName, $key, 1); $this->assertNull($error); list($ret, $error) = self::$bucketManager->stat(self::$bucketName, $key); $this->assertNull($error); $this->assertGreaterThan(23 * 3600, $ret['expiration'] - time()); $this->assertLessThan(48 * 3600, $ret['expiration'] - time()); } public function testSetObjectLifecycle() { $key = self::getObjectKey(self::$key); list(, $err) = self::$bucketManager->setObjectLifecycle( self::$bucketName, $key, 10, 20, 30, 40, 15 ); $this->assertNull($err); list($ret, $error) = self::$bucketManager->stat(self::$bucketName, $key); $this->assertNull($error); $this->assertNotNull($ret['transitionToIA']); $this->assertNotNull($ret['transitionToArchiveIR']); $this->assertNotNull($ret['transitionToARCHIVE']); $this->assertNotNull($ret['transitionToDeepArchive']); $this->assertNotNull($ret['expiration']); } public function testSetObjectLifecycleWithCond() { $key = self::getObjectKey(self::$key); list($ret, $err) = self::$bucketManager->stat(self::$bucketName, $key); $this->assertNull($err); $key_hash = $ret['hash']; $key_fsize = $ret['fsize']; list(, $err) = self::$bucketManager->setObjectLifecycleWithCond( self::$bucketName, $key, array( 'hash' => $key_hash, 'fsize' => $key_fsize ), 10, 20, 30, 40, 15 ); $this->assertNull($err); list($ret, $error) = self::$bucketManager->stat(self::$bucketName, $key); $this->assertNull($error); $this->assertNotNull($ret['transitionToIA']); $this->assertNotNull($ret['transitionToArchiveIR']); $this->assertNotNull($ret['transitionToARCHIVE']); $this->assertNotNull($ret['transitionToDeepArchive']); $this->assertNotNull($ret['expiration']); } public function testBatchSetObjectLifecycle() { $key = self::getObjectKey(self::$key); $ops = BucketManager::buildBatchSetObjectLifecycle( self::$bucketName, array($key), 10, 20, 30, 40, 15 ); list($ret, $err) = self::$bucketManager->batch($ops); $this->assertNull($err); $this->assertEquals(200, $ret[0]['code']); } public function testGetCorsRules() { list(, $err) = self::$bucketManager->getCorsRules(self::$bucketName); $this->assertNull($err); } public function testPutBucketAccessStyleMode() { list(, $err) = self::$bucketManager->putBucketAccessStyleMode(self::$bucketName, 0); $this->assertNull($err); } public function testPutBucketAccessMode() { list(, $err) = self::$bucketManager->putBucketAccessMode(self::$bucketName, 0); $this->assertNull($err); } public function testPutReferAntiLeech() { list(, $err) = self::$bucketManager->putReferAntiLeech(self::$bucketName, 0, "1", "*"); $this->assertNull($err); } public function testPutBucketMaxAge() { list(, $err) = self::$bucketManager->putBucketMaxAge(self::$bucketName, 31536000); $this->assertNull($err); } public function testPutBucketQuota() { list(, $err) = self::$bucketManager->putBucketQuota(self::$bucketName, -1, -1); $this->assertNull($err); } public function testGetBucketQuota() { list(, $err) = self::$bucketManager->getBucketQuota(self::$bucketName); $this->assertNull($err); } public function testChangeType() { $fileToChange = self::getObjectKey(self::$key); list(, $err) = self::$bucketManager->changeType(self::$bucketName, $fileToChange, 0); $this->assertNull($err); list(, $err) = self::$bucketManager->changeType(self::$bucketName, $fileToChange, 1); $this->assertNull($err); } public function testArchiveRestoreAr() { $key = self::getObjectKey(self::$key); self::$bucketManager->changeType(self::$bucketName, $key, 2); list(, $err) = self::$bucketManager->restoreAr(self::$bucketName, $key, 2); $this->assertNull($err); list($ret, $err) = self::$bucketManager->stat(self::$bucketName, $key); $this->assertNull($err); $this->assertEquals(2, $ret["type"]); // restoreStatus // null means frozen; // 1 means be unfreezing; // 2 means be unfrozen; $this->assertNotNull($ret["restoreStatus"]); $this->assertContains($ret["restoreStatus"], array(1, 2)); } public function testDeepArchiveRestoreAr() { $key = self::getObjectKey(self::$key); self::$bucketManager->changeType(self::$bucketName, $key, 3); list(, $err) = self::$bucketManager->restoreAr(self::$bucketName, $key, 1); $this->assertNull($err); list($ret, $err) = self::$bucketManager->stat(self::$bucketName, $key); $this->assertNull($err); $this->assertEquals(3, $ret["type"]); // restoreStatus // null means frozen; // 1 means be unfreezing; // 2 means be unfrozen; $this->assertNotNull($ret["restoreStatus"]); $this->assertContains($ret["restoreStatus"], array(1, 2)); } public function testChangeStatus() { $key = self::getObjectKey(self::$key); list(, $err) = self::$bucketManager->changeStatus(self::$bucketName, $key, 1); $this->assertNull($err); list($ret, $err) = self::$bucketManager->stat(self::$bucketName, $key); $this->assertNull($err); $this->assertEquals(1, $ret['status']); list(, $err) = self::$bucketManager->changeStatus(self::$bucketName, $key, 0); $this->assertNull($err); list($ret, $err) = self::$bucketManager->stat(self::$bucketName, $key); $this->assertNull($err); $this->assertArrayNotHasKey('status', $ret); } }