building-sign/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CallbackTest.php

297 lines
11 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?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. Initialize a block upload event, which is initialized to upload Multipart, get the 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":"'.Common::getCallbackUrl().'",'.
' "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. Initialize a block upload event, which is initialized to upload Multipart, get the 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":"'.Common::getCallbackUrl().'",'.
' "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":"'.Common::getCallbackUrl().'",'.
' "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":"'.Common::getCallbackUrl().'",'.
' "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":"'.Common::getCallbackUrl().'",'.
' "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":"'.Common::getCallbackUrl().'",'.
' "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":"'.Common::getCallbackUrl().'",'.
' "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":"'.Common::getCallbackUrl().'",'.
' "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);
}
}
protected function setUp(): void
{
parent::setUp();
}
}