123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- <?php
- namespace Upyun\Tests;
- use Upyun\Config;
- use Upyun\Upyun;
- class UpyunTest extends \PHPUnit_Framework_TestCase
- {
- /**
- * @var Upyun
- */
- public static $upyun;
- protected static $taskId;
- protected static $tempFilePath;
- public static function setUpBeforeClass()
- {
- $config = new Config(BUCKET, USER_NAME, PWD);
- $config->setFormApiKey('Mv83tlocuzkmfKKUFbz2s04FzTw=');
- $config->processNotifyUrl = 'http://localhost:9999';
- self::$upyun = new Upyun($config);
- self::$tempFilePath = __DIR__ . '/assets/test.txt';
- touch(self::$tempFilePath);
- }
- public static function tearDownAfterClass()
- {
- unlink(self::$tempFilePath);
- }
- public function testWriteString()
- {
- $filename = '/中文/测试 +.txt';
- $content = 'test file content';
- self::$upyun->write($filename, $content);
- $size = getUpyunFileSize($filename);
- $this->assertEquals($size, strlen($content));
- }
- public function testWriteStream()
- {
- $filename = 'test.jpeg';
- $f = fopen(__DIR__ . '/assets/sample.jpeg', 'rb');
- if (!$f) {
- throw new \Exception('open test file failed!');
- }
- self::$upyun->write($filename, $f);
- $size = getUpyunFileSize($filename);
- $this->assertEquals($size, PIC_SIZE);
- }
- public function testWriteWithAsyncProcess()
- {
- $filename = 'test_async.jpeg';
- $newFilename = 'test_async.png';
- $f = fopen(__DIR__ . '/assets/sample.jpeg', 'rb');
- if (!$f) {
- throw new \Exception('open test file failed!');
- }
- $result = self::$upyun->write($filename, $f, array(
- 'apps' => array(
- array(
- 'name' => 'thumb',
- 'x-gmkerl-thumb' => '/format/png/fw/50',
- 'save_as' => $newFilename,
- )
- )
- ), true);
- $size = getUpyunFileSize($filename);
- $this->assertEquals($size, PIC_SIZE);
- $this->assertEquals($result, true);
- }
- public function testWriteWithException()
- {
- $fs = new Upyun(new Config(BUCKET, USER_NAME, 'error-password'));
- try {
- $fs->write('test.txt', 'test file content');
- } catch (\Exception $e) {
- return ;
- }
- throw new \Exception('should get sign error.');
- }
- /**
- * @depends testWriteString
- */
- public function testReadFile()
- {
- $name = 'test-read.txt';
- $str = 'test file content 2';
- self::$upyun->write($name, $str);
- //读取内容写入字符串
- $content = self::$upyun->read($name);
- $this->assertEquals($content, $str);
- //读取内容写入文件流
- $this->assertTrue(self::$upyun->read($name, fopen(self::$tempFilePath, 'wb')));
- $this->assertEquals($str, file_get_contents(self::$tempFilePath));
- }
- /**
- * @depends testWriteString
- * @depends testReadFile
- */
- public function testDeleteFile()
- {
- self::$upyun->write('test-delete.txt', 'test file content 3');
- self::$upyun->delete('test-delete.txt');
- try {
- self::$upyun->read('test-delete.txt');
- } catch (\Exception $e) {
- return ;
- }
- throw new \Exception('delete file failed');
- }
- /**
- * @expectedException \Exception
- */
- public function testDeleteNotExistsFile()
- {
- self::$upyun->delete('not-exists-test.txt');
- }
- /**
- */
- public function testHas()
- {
- $name = 'test-has.txt';
- self::$upyun->write($name, 'test file content 4');
- $this->assertEquals(self::$upyun->has($name), true);
- self::$upyun->delete($name);
- sleep(5);
- $this->assertEquals(self::$upyun->has($name), false);
- }
- /**
- * @depends testWriteString
- * @depends testDeleteFile
- */
- public function testInfo()
- {
- self::$upyun->write('test-info.txt', 'test file content 4');
- $info = self::$upyun->info('test-info.txt');
- $this->assertEquals($info['x-upyun-file-type'], 'file');
- $this->assertEquals($info['x-upyun-file-size'], 19);
- }
- /**
- * @depends testInfo
- */
- public function testGetMimetype()
- {
- $type = self::$upyun->getMimetype('test-info.txt');
- $this->assertEquals($type, 'text/plain');
- }
- /**
- */
- public function testCreateDir()
- {
- self::$upyun->createDir('/test-dir');
- $this->assertEquals(self::$upyun->has('/test-dir'), true);
- self::$upyun->createDir('/test-dir2/');
- $this->assertEquals(self::$upyun->has('/test-dir2'), true);
- }
- public function testReadDir()
- {
- $list = self::$upyun->read('/test-dir2/');
- $this->assertEquals($list['is_end'], true);
- self::$upyun->write('/test-dir2/test.txt', 'test file content 5');
- $list = self::$upyun->read('/test-dir2/');
- $this->assertEquals($list['is_end'], true);
- $this->assertEquals(count($list['files']), 1);
- $file = $list['files'][0];
- $this->assertEquals($file['name'], 'test.txt');
- $this->assertEquals($file['type'], 'N');
- $this->assertEquals($file['size'], 19);
- }
- /**
- * @depends testCreateDir
- */
- public function testDeleteDir()
- {
- $result = self::$upyun->createDir('/test-delete-dir');
- $this->assertEquals($result, true);
- sleep(5);
- $result = self::$upyun->deleteDir('/test-delete-dir');
- $this->assertEquals($result, true);
- }
- public function testUsage()
- {
- $size = self::$upyun->usage();
- $this->assertTrue($size > 0);
- }
- public function testPurge()
- {
- $urls = self::$upyun->purge(getFileUrl('test.txt'));
- $this->assertTrue(empty($urls));
- $invalidUrl = 'http://xxxx.b0.xxxxxxxx-upyun.com/test.txt';
- $urls = self::$upyun->purge($invalidUrl);
- $this->assertTrue(count($urls) === 1);
- $this->assertTrue($urls[0] === $invalidUrl);
- }
- public function testProcess()
- {
- $source = 'php-sdk-sample.mp4';
- self::$upyun->write($source, fopen(__DIR__ . '/assets/SampleVideo_640x360_1mb.mp4', 'r'));
- $result = self::$upyun->process(array(
- array('type' => 'video', 'avopts' => '/s/240p(4:3)/as/1/r/30', 'return_info' => true, 'save_as' => '/video/result.mp4')
- ), Upyun::$PROCESS_TYPE_MEDIA, $source);
- $this->assertTrue(strlen($result[0]) === 32);
- self::$taskId = $result[0];
- // test zip
- $result2 = self::$upyun->process(array(array(
- 'sources' => ['./php-sdk-sample.mp4'],
- 'save_as' => '/php-sdk-sample-mp4.zip'
- )), Upyun::$PROCESS_TYPE_ZIP);
- $this->assertTrue(strlen($result2[0]) === 32);
- }
- /**
- * @depends testProcess
- */
- public function testQueryProcessStatus()
- {
- sleep(5);
- $status = self::$upyun->queryProcessStatus(array(self::$taskId));
- $this->assertTrue(array_key_exists(self::$taskId, $status));
- }
- /**
- * @depends testProcess
- */
- public function testQueryProcessResult()
- {
- sleep(5);
- $result = self::$upyun->queryProcessResult(array(self::$taskId));
- $this->assertTrue($result[self::$taskId]['path'][0] === '/video/result.mp4');
- $this->assertTrue($result[self::$taskId]['status_code'] === 200);
- }
- }
|