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.
297 lines
11 KiB
297 lines
11 KiB
<?php |
|
|
|
namespace OSS\Tests; |
|
|
|
use OSS\Core\OssException; |
|
use OSS\OssClient; |
|
|
|
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestOssClientBase.php'; |
|
|
|
|
|
class CallbackTest extends TestOssClientBase |
|
{ |
|
public function testMultipartUploadCallbackNormal() |
|
{ |
|
$object = "multipart-callback-test.txt"; |
|
$copiedObject = "multipart-callback-test.txt.copied"; |
|
$this->ossClient->putObject($this->bucket, $copiedObject, file_get_contents(__FILE__)); |
|
|
|
/** |
|
* step 1. 初始化一个分块上传事件, 也就是初始化上传Multipart, 获取upload id |
|
*/ |
|
try { |
|
$upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); |
|
} catch (OssException $e) { |
|
$this->assertFalse(true); |
|
} |
|
/* |
|
* step 2. uploadPartCopy |
|
*/ |
|
$copyId = 1; |
|
$eTag = $this->ossClient->uploadPartCopy($this->bucket, $copiedObject, $this->bucket, $object, $copyId, $upload_id); |
|
$upload_parts[] = array( |
|
'PartNumber' => $copyId, |
|
'ETag' => $eTag, |
|
); |
|
|
|
try { |
|
$listPartsInfo = $this->ossClient->listParts($this->bucket, $object, $upload_id); |
|
$this->assertNotNull($listPartsInfo); |
|
} catch (OssException $e) { |
|
$this->assertTrue(false); |
|
} |
|
|
|
/** |
|
* step 3. |
|
*/ |
|
|
|
$json = |
|
'{ |
|
"callbackUrl":"callback.oss-demo.com:23450", |
|
"callbackHost":"oss-cn-hangzhou.aliyuncs.com", |
|
"callbackBody":"{\"mimeType\":${mimeType},\"size\":${size},\"x:var1\":${x:var1},\"x:var2\":${x:var2}}", |
|
"callbackBodyType":"application/json" |
|
}'; |
|
|
|
$var = |
|
'{ |
|
"x:var1":"value1", |
|
"x:var2":"值2" |
|
}'; |
|
$options = array(OssClient::OSS_CALLBACK => $json, |
|
OssClient::OSS_CALLBACK_VAR => $var |
|
); |
|
|
|
try { |
|
$result = $this->ossClient->completeMultipartUpload($this->bucket, $object, $upload_id, $upload_parts, $options); |
|
$this->assertEquals("200", $result['info']['http_code']); |
|
$this->assertEquals("{\"Status\":\"OK\"}", $result['body']); |
|
} catch (OssException $e) { |
|
$this->assertTrue(false); |
|
} |
|
} |
|
|
|
public function testMultipartUploadCallbackFailed() |
|
{ |
|
$object = "multipart-callback-test.txt"; |
|
$copiedObject = "multipart-callback-test.txt.copied"; |
|
$this->ossClient->putObject($this->bucket, $copiedObject, file_get_contents(__FILE__)); |
|
|
|
/** |
|
* step 1. 初始化一个分块上传事件, 也就是初始化上传Multipart, 获取upload id |
|
*/ |
|
try { |
|
$upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); |
|
} catch (OssException $e) { |
|
$this->assertFalse(true); |
|
} |
|
/* |
|
* step 2. uploadPartCopy |
|
*/ |
|
$copyId = 1; |
|
$eTag = $this->ossClient->uploadPartCopy($this->bucket, $copiedObject, $this->bucket, $object, $copyId, $upload_id); |
|
$upload_parts[] = array( |
|
'PartNumber' => $copyId, |
|
'ETag' => $eTag, |
|
); |
|
|
|
try { |
|
$listPartsInfo = $this->ossClient->listParts($this->bucket, $object, $upload_id); |
|
$this->assertNotNull($listPartsInfo); |
|
} catch (OssException $e) { |
|
$this->assertTrue(false); |
|
} |
|
|
|
/** |
|
* step 3. |
|
*/ |
|
|
|
$json = |
|
'{ |
|
"callbackUrl":"www.baidu.com", |
|
"callbackHost":"oss-cn-hangzhou.aliyuncs.com", |
|
"callbackBody":"{\"mimeType\":${mimeType},\"size\":${size},\"x:var1\":${x:var1},\"x:var2\":${x:var2}}", |
|
"callbackBodyType":"application/json" |
|
}'; |
|
|
|
$var = |
|
'{ |
|
"x:var1":"value1", |
|
"x:var2":"值2" |
|
}'; |
|
$options = array(OssClient::OSS_CALLBACK => $json, |
|
OssClient::OSS_CALLBACK_VAR => $var |
|
); |
|
|
|
try { |
|
$result = $this->ossClient->completeMultipartUpload($this->bucket, $object, $upload_id, $upload_parts, $options); |
|
$this->assertTrue(false); |
|
} catch (OssException $e) { |
|
$this->assertTrue(true); |
|
$this->assertEquals("203", $e->getHTTPStatus()); |
|
} |
|
|
|
} |
|
|
|
public function testPutObjectCallbackNormal() |
|
{ |
|
//json |
|
{ |
|
$json = |
|
'{ |
|
"callbackUrl":"callback.oss-demo.com:23450", |
|
"callbackHost":"oss-cn-hangzhou.aliyuncs.com", |
|
"callbackBody":"{\"mimeType\":${mimeType},\"size\":${size}}", |
|
"callbackBodyType":"application/json" |
|
}'; |
|
$options = array(OssClient::OSS_CALLBACK => $json); |
|
$this->putObjectCallbackOk($options, "200"); |
|
} |
|
//url |
|
{ |
|
$url = |
|
'{ |
|
"callbackUrl":"callback.oss-demo.com:23450", |
|
"callbackHost":"oss-cn-hangzhou.aliyuncs.com", |
|
"callbackBody":"bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}", |
|
"callbackBodyType":"application/x-www-form-urlencoded" |
|
}'; |
|
$options = array(OssClient::OSS_CALLBACK => $url); |
|
$this->putObjectCallbackOk($options, "200"); |
|
} |
|
// Unspecified typre |
|
{ |
|
$url = |
|
'{ |
|
"callbackUrl":"callback.oss-demo.com:23450", |
|
"callbackHost":"oss-cn-hangzhou.aliyuncs.com", |
|
"callbackBody":"bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}" |
|
}'; |
|
$options = array(OssClient::OSS_CALLBACK => $url); |
|
$this->putObjectCallbackOk($options, "200"); |
|
} |
|
//json and body is chinese |
|
{ |
|
$json = |
|
'{ |
|
"callbackUrl":"callback.oss-demo.com:23450", |
|
"callbackHost":"oss-cn-hangzhou.aliyuncs.com", |
|
"callbackBody":"{\" 春水碧于天,画船听雨眠。\":\"垆边人似月,皓腕凝霜雪。\"}", |
|
"callbackBodyType":"application/json" |
|
}'; |
|
$options = array(OssClient::OSS_CALLBACK => $json); |
|
$this->putObjectCallbackOk($options, "200"); |
|
} |
|
//url and body is chinese |
|
{ |
|
$url = |
|
'{ |
|
"callbackUrl":"callback.oss-demo.com:23450", |
|
"callbackHost":"oss-cn-hangzhou.aliyuncs.com", |
|
"callbackBody":"春水碧于天,画船听雨眠。垆边人似月,皓腕凝霜雪", |
|
"callbackBodyType":"application/x-www-form-urlencoded" |
|
}'; |
|
$options = array(OssClient::OSS_CALLBACK => $url); |
|
$this->putObjectCallbackOk($options, "200"); |
|
} |
|
//json and add callback_var |
|
{ |
|
$json = |
|
'{ |
|
"callbackUrl":"callback.oss-demo.com:23450", |
|
"callbackHost":"oss-cn-hangzhou.aliyuncs.com", |
|
"callbackBody":"{\"mimeType\":${mimeType},\"size\":${size},\"x:var1\":${x:var1},\"x:var2\":${x:var2}}", |
|
"callbackBodyType":"application/json" |
|
}'; |
|
|
|
$var = |
|
'{ |
|
"x:var1":"value1", |
|
"x:var2":"aliyun.com" |
|
}'; |
|
$options = array(OssClient::OSS_CALLBACK => $json, |
|
OssClient::OSS_CALLBACK_VAR => $var |
|
); |
|
$this->putObjectCallbackOk($options, "200"); |
|
} |
|
//url and add callback_var |
|
{ |
|
$url = |
|
'{ |
|
"callbackUrl":"callback.oss-demo.com:23450", |
|
"callbackHost":"oss-cn-hangzhou.aliyuncs.com", |
|
"callbackBody":"bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}&my_var1=${x:var1}&my_var2=${x:var2}", |
|
"callbackBodyType":"application/x-www-form-urlencoded" |
|
}'; |
|
$var = |
|
'{ |
|
"x:var1":"value1凌波不过横塘路,但目送,芳", |
|
"x:var2":"值2" |
|
}'; |
|
$options = array(OssClient::OSS_CALLBACK => $url, |
|
OssClient::OSS_CALLBACK_VAR => $var |
|
); |
|
$this->putObjectCallbackOk($options, "200"); |
|
} |
|
|
|
} |
|
|
|
public function testPutCallbackWithCallbackFailed() |
|
{ |
|
{ |
|
$json = |
|
'{ |
|
"callbackUrl":"http://www.baidu.com", |
|
"callbackHost":"oss-cn-hangzhou.aliyuncs.com", |
|
"callbackBody":"{\"mimeType\":${mimeType},\"size\":${size}}", |
|
"callbackBodyType":"application/json" |
|
}'; |
|
$options = array(OssClient::OSS_CALLBACK => $json); |
|
$this->putObjectCallbackFailed($options, "203"); |
|
} |
|
|
|
{ |
|
$url = |
|
'{ |
|
"callbackUrl":"http://www.baidu.com", |
|
"callbackHost":"oss-cn-hangzhou.aliyuncs.com", |
|
"callbackBody":"bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}&my_var1=${x:var1}&my_var2=${x:var2}", |
|
"callbackBodyType":"application/x-www-form-urlencoded" |
|
}'; |
|
$options = array(OssClient::OSS_CALLBACK => $url); |
|
$this->putObjectCallbackFailed($options, "203"); |
|
} |
|
|
|
} |
|
|
|
private function putObjectCallbackOk($options, $status) |
|
{ |
|
$object = "oss-php-sdk-callback-test.txt"; |
|
$content = file_get_contents(__FILE__); |
|
try { |
|
$result = $this->ossClient->putObject($this->bucket, $object, $content, $options); |
|
$this->assertEquals($status, $result['info']['http_code']); |
|
$this->assertEquals("{\"Status\":\"OK\"}", $result['body']); |
|
} catch (OssException $e) { |
|
$this->assertFalse(true); |
|
} |
|
} |
|
|
|
private function putObjectCallbackFailed($options, $status) |
|
{ |
|
$object = "oss-php-sdk-callback-test.txt"; |
|
$content = file_get_contents(__FILE__); |
|
try { |
|
$result = $this->ossClient->putObject($this->bucket, $object, $content, $options); |
|
$this->assertTrue(false); |
|
} catch (OssException $e) { |
|
$this->assertEquals($status, $e->getHTTPStatus()); |
|
$this->assertTrue(true); |
|
} |
|
} |
|
|
|
public function setUp() |
|
{ |
|
parent::setUp(); |
|
} |
|
}
|
|
|