OssClientForcePathStyleTest.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. namespace OSS\Tests;
  3. use OSS\Core\OssException;
  4. use OSS\Http\RequestCore;
  5. use OSS\OssClient;
  6. require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestOssClientBase.php';
  7. class OssClientForcePathStyleTest extends TestOssClientBase
  8. {
  9. public function testForcePathStyle()
  10. {
  11. $config = array(
  12. 'signatureVersion' => OssClient::OSS_SIGNATURE_VERSION_V4,
  13. 'forcePathStyle' => true,
  14. );
  15. $pathStyleClient = Common::getOssClient($config);
  16. try {
  17. $pathStyleClient->getBucketInfo($this->bucket);
  18. $this->assertTrue(false, "should not here");
  19. } catch (OssException $e) {
  20. $this->assertEquals($e->getErrorCode(), "SecondLevelDomainForbidden");
  21. $this->assertTrue(true);
  22. }
  23. try {
  24. $object = "oss-php-sdk-test/upload-test-object-name.txt";
  25. $pathStyleClient->putObject($this->bucket, $object, 'hi oss');
  26. $this->assertTrue(false, "should not here");
  27. } catch (OssException $e) {
  28. $this->assertEquals($e->getErrorCode(), "SecondLevelDomainForbidden");
  29. $this->assertTrue(true);
  30. }
  31. try {
  32. $endpoint = Common::getEndpoint();
  33. $endpoint = str_replace(array('http://', 'https://'), '', $endpoint);
  34. $strUrl = $endpoint . "/" . $this->bucket . '/' . $object;
  35. $signUrl = $pathStyleClient->signUrl($this->bucket, $object, 3600);
  36. $this->assertTrue(strpos($signUrl, $strUrl) !== false);
  37. } catch (OssException $e) {
  38. $this->assertFalse(true);
  39. }
  40. }
  41. public function testForcePathStyleOKV1()
  42. {
  43. $bucket = Common::getPathStyleBucket();
  44. $this->assertFalse(empty($bucket), "path style bucket is not set.");
  45. $config = array(
  46. 'signatureVersion' => OssClient::OSS_SIGNATURE_VERSION_V1,
  47. 'forcePathStyle' => true,
  48. );
  49. $pathStyleClient = Common::getOssClient($config);
  50. // bucket
  51. $info = $pathStyleClient->getBucketInfo($bucket);
  52. $this->assertEquals($bucket, $info->getName());
  53. // object
  54. $object = "upload-test-object-name.txt";
  55. $pathStyleClient->putObject($bucket, $object, 'hi oss');
  56. $res = $pathStyleClient->getObject($bucket, $object);
  57. $this->assertEquals($res, 'hi oss');
  58. //presign
  59. $signUrl = $pathStyleClient->signUrl($bucket, $object, 3600);
  60. $httpCore = new RequestCore($signUrl);
  61. $httpCore->set_body("");
  62. $httpCore->set_method("GET");
  63. $httpCore->connect_timeout = 10;
  64. $httpCore->timeout = 10;
  65. $httpCore->add_header("Content-Type", "");
  66. $httpCore->send_request();
  67. $this->assertEquals(200, $httpCore->response_code);
  68. }
  69. public function testForcePathStyleOKV4()
  70. {
  71. $bucket = Common::getPathStyleBucket();
  72. $this->assertFalse(empty($bucket), "path style bucket is not set.");
  73. $config = array(
  74. 'signatureVersion' => OssClient::OSS_SIGNATURE_VERSION_V4,
  75. 'forcePathStyle' => true,
  76. );
  77. $pathStyleClient = Common::getOssClient($config);
  78. // bucket
  79. $info = $pathStyleClient->getBucketInfo($bucket);
  80. $this->assertEquals($bucket, $info->getName());
  81. // object
  82. $object = "upload-test-object-name.txt";
  83. $pathStyleClient->putObject($bucket, $object, 'hi oss');
  84. $res = $pathStyleClient->getObject($bucket, $object);
  85. $this->assertEquals($res, 'hi oss');
  86. //presign
  87. $signUrl = $pathStyleClient->signUrl($bucket, $object, 3600);
  88. #print("signUrl" . $signUrl . "\n");
  89. $httpCore = new RequestCore($signUrl);
  90. $httpCore->set_body("");
  91. $httpCore->set_method("GET");
  92. $httpCore->connect_timeout = 10;
  93. $httpCore->timeout = 10;
  94. $httpCore->add_header("Content-Type", "");
  95. $httpCore->send_request();
  96. $this->assertEquals(200, $httpCore->response_code);
  97. }
  98. }