You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
4.0 KiB
133 lines
4.0 KiB
<?php |
|
|
|
namespace OSS\Tests; |
|
|
|
require_once __DIR__ . '/Common.php'; |
|
|
|
class ContentTypeTest extends \PHPUnit_Framework_TestCase |
|
{ |
|
private function runCmd($cmd) |
|
{ |
|
$output = array(); |
|
$status = 0; |
|
exec($cmd . ' 2>/dev/null', $output, $status); |
|
|
|
$this->assertEquals(0, $status); |
|
} |
|
|
|
private function getContentType($bucket, $object) |
|
{ |
|
$client = Common::getOssClient(); |
|
$headers = $client->getObjectMeta($bucket, $object); |
|
return $headers['content-type']; |
|
} |
|
|
|
public function testByFileName() |
|
{ |
|
$client = Common::getOssClient(); |
|
$bucket = Common::getBucketName(); |
|
|
|
$file = '/tmp/x.html'; |
|
$object = 'test/x'; |
|
$this->runCmd('touch ' . $file); |
|
|
|
$client->uploadFile($bucket, $object, $file); |
|
$type = $this->getContentType($bucket, $object); |
|
|
|
$this->assertEquals('text/html', $type); |
|
|
|
$file = '/tmp/x.json'; |
|
$object = 'test/y'; |
|
$this->runCmd('dd if=/dev/urandom of=' . $file . ' bs=1024 count=100'); |
|
|
|
$client->multiuploadFile($bucket, $object, $file, array('partSize' => 100)); |
|
$type = $this->getContentType($bucket, $object); |
|
|
|
$this->assertEquals('application/json', $type); |
|
} |
|
|
|
public function testByObjectKey() |
|
{ |
|
$client = Common::getOssClient(); |
|
$bucket = Common::getBucketName(); |
|
|
|
$object = "test/x.txt"; |
|
$client->putObject($bucket, $object, "hello world"); |
|
$type = $this->getContentType($bucket, $object); |
|
|
|
$this->assertEquals('text/plain', $type); |
|
|
|
$file = '/tmp/x.html'; |
|
$object = 'test/x.txt'; |
|
$this->runCmd('touch ' . $file); |
|
|
|
$client->uploadFile($bucket, $object, $file); |
|
$type = $this->getContentType($bucket, $object); |
|
|
|
$this->assertEquals('text/html', $type); |
|
|
|
$file = '/tmp/x.none'; |
|
$object = 'test/x.txt'; |
|
$this->runCmd('touch ' . $file); |
|
|
|
$client->uploadFile($bucket, $object, $file); |
|
$type = $this->getContentType($bucket, $object); |
|
|
|
$this->assertEquals('text/plain', $type); |
|
|
|
$file = '/tmp/x.mp3'; |
|
$object = 'test/y.json'; |
|
$this->runCmd('dd if=/dev/urandom of=' . $file . ' bs=1024 count=100'); |
|
|
|
$client->multiuploadFile($bucket, $object, $file, array('partSize' => 100)); |
|
$type = $this->getContentType($bucket, $object); |
|
|
|
$this->assertEquals('audio/mpeg', $type); |
|
|
|
$file = '/tmp/x.none'; |
|
$object = 'test/y.json'; |
|
$this->runCmd('dd if=/dev/urandom of=' . $file . ' bs=1024 count=100'); |
|
|
|
$client->multiuploadFile($bucket, $object, $file, array('partSize' => 100)); |
|
$type = $this->getContentType($bucket, $object); |
|
|
|
$this->assertEquals('application/json', $type); |
|
} |
|
|
|
public function testByUser() |
|
{ |
|
$client = Common::getOssClient(); |
|
$bucket = Common::getBucketName(); |
|
|
|
$object = "test/x.txt"; |
|
$client->putObject($bucket, $object, "hello world", array( |
|
'Content-Type' => 'text/html' |
|
)); |
|
$type = $this->getContentType($bucket, $object); |
|
|
|
$this->assertEquals('text/html', $type); |
|
|
|
$file = '/tmp/x.html'; |
|
$object = 'test/x'; |
|
$this->runCmd('touch ' . $file); |
|
|
|
$client->uploadFile($bucket, $object, $file, array( |
|
'Content-Type' => 'application/json' |
|
)); |
|
$type = $this->getContentType($bucket, $object); |
|
|
|
$this->assertEquals('application/json', $type); |
|
|
|
$file = '/tmp/x.json'; |
|
$object = 'test/y'; |
|
$this->runCmd('dd if=/dev/urandom of=' . $file . ' bs=1024 count=100'); |
|
|
|
$client->multiuploadFile($bucket, $object, $file, array( |
|
'partSize' => 100, |
|
'Content-Type' => 'audio/mpeg' |
|
)); |
|
$type = $this->getContentType($bucket, $object); |
|
|
|
$this->assertEquals('audio/mpeg', $type); |
|
} |
|
}
|
|
|