OssClientTest.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. <?php
  2. namespace OSS\Tests;
  3. use OSS\Core\OssException;
  4. use OSS\OssClient;
  5. class OssClientTest extends TestOssClientBase
  6. {
  7. public function testConstrunct()
  8. {
  9. try {
  10. $ossClient = new OssClient('id', 'key', 'http://oss-cn-hangzhou.aliyuncs.com');
  11. $this->assertFalse($ossClient->isUseSSL());
  12. $ossClient->setUseSSL(true);
  13. $this->assertTrue($ossClient->isUseSSL());
  14. $this->assertTrue(true);
  15. $this->assertEquals(3, $ossClient->getMaxRetries());
  16. $ossClient->setMaxTries(4);
  17. $this->assertEquals(4, $ossClient->getMaxRetries());
  18. $ossClient->setTimeout(10);
  19. $ossClient->setConnectTimeout(20);
  20. } catch (OssException $e) {
  21. assertFalse(true);
  22. }
  23. }
  24. public function testConstrunct2()
  25. {
  26. try {
  27. $ossClient = new OssClient('id', "", 'http://oss-cn-hangzhou.aliyuncs.com');
  28. $this->assertFalse(true);
  29. } catch (OssException $e) {
  30. $this->assertEquals("access key secret is empty", $e->getMessage());
  31. }
  32. }
  33. public function testConstrunct3()
  34. {
  35. try {
  36. $ossClient = new OssClient("", 'key', 'http://oss-cn-hangzhou.aliyuncs.com');
  37. $this->assertFalse(true);
  38. } catch (OssException $e) {
  39. $this->assertEquals("access key id is empty", $e->getMessage());
  40. }
  41. }
  42. public function testConstrunct4()
  43. {
  44. try {
  45. $ossClient = new OssClient('id', 'key', "");
  46. $this->assertFalse(true);
  47. } catch (OssException $e) {
  48. $this->assertEquals('endpoint is empty', $e->getMessage());
  49. }
  50. }
  51. public function testConstrunct5()
  52. {
  53. try {
  54. $ossClient = new OssClient('id', 'key', "123.123.123.1");
  55. $this->assertTrue(true);
  56. } catch (OssException $e) {
  57. $this->assertTrue(false);
  58. }
  59. }
  60. public function testConstrunct6()
  61. {
  62. try {
  63. $ossClient = new OssClient('id', 'key', "https://123.123.123.1");
  64. $this->assertTrue($ossClient->isUseSSL());
  65. $this->assertTrue(true);
  66. } catch (OssException $e) {
  67. $this->assertTrue(false);
  68. }
  69. try {
  70. $ossClient = new OssClient('id', 'key', "https://123.123.123.1:3128");
  71. $this->assertTrue($ossClient->isUseSSL());
  72. $this->assertTrue(true);
  73. } catch (OssException $e) {
  74. $this->assertTrue(false);
  75. }
  76. }
  77. public function testConstrunct7()
  78. {
  79. try {
  80. $ossClient = new OssClient('id', 'key', "http://123.123.123.1");
  81. $this->assertFalse($ossClient->isUseSSL());
  82. $this->assertTrue(true);
  83. } catch (OssException $e) {
  84. $this->assertTrue(false);
  85. }
  86. try {
  87. $ossClient = new OssClient('id', 'key', "http://123.123.123.1:3128");
  88. $this->assertFalse($ossClient->isUseSSL());
  89. $this->assertTrue(true);
  90. } catch (OssException $e) {
  91. $this->assertTrue(false);
  92. }
  93. }
  94. public function testConstrunct8()
  95. {
  96. try {
  97. $ossClient = new OssClient('id', 'key', "http://123.123.123.1", true);
  98. $ossClient->listBuckets();
  99. $this->assertFalse(true);
  100. } catch (OssException $e) {
  101. }
  102. }
  103. public function testConstrunct9()
  104. {
  105. try {
  106. $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' ';
  107. $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' ';
  108. $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ ';
  109. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
  110. $ossClient->listBuckets();
  111. } catch (OssException $e) {
  112. $this->assertFalse(true);
  113. }
  114. }
  115. public function testConstrunct10()
  116. {
  117. try {
  118. $ossClient = new OssClient('id', 'key', "http://ABC-COM.TEST.123.cn", true);
  119. $this->assertTrue(true);
  120. } catch (OssException $e) {
  121. $this->assertTrue(false);
  122. }
  123. }
  124. public function testConstrunct11()
  125. {
  126. try {
  127. $ossClient = new OssClient('id', 'key', "oss-test.com\\aliyuncs.com");
  128. $this->assertFalse(true);
  129. } catch (OssException $e) {
  130. $this->assertEquals('endpoint is invalid:'."oss-test.com\\aliyuncs.com", $e->getMessage());
  131. }
  132. }
  133. public function testConstrunct12()
  134. {
  135. try {
  136. $ossClient = new OssClient('id', 'key', "192.168.1.0:abc123");
  137. $this->assertFalse(true);
  138. } catch (OssException $e) {
  139. $this->assertEquals('endpoint is invalid:'."192.168.1.0:abc123", $e->getMessage());
  140. }
  141. }
  142. public function testSupportPutEmptyObject()
  143. {
  144. try {
  145. $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' ';
  146. $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' ';
  147. $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ ';
  148. $bucket = $this->bucket;
  149. $ossClient = new OssClient($accessKeyId, $accessKeySecret , $endpoint, false);
  150. $ossClient->putObject($bucket,'test_emptybody','');
  151. } catch (OssException $e) {
  152. $this->assertFalse(true);
  153. }
  154. //use invalid sts-token, should fail.
  155. try {
  156. $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' ';
  157. $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' ';
  158. $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ ';
  159. $bucket = $this->bucket;
  160. $ossClient = new OssClient($accessKeyId, $accessKeySecret , $endpoint, false, "invalid-sts-token");
  161. $ossClient->putObject($bucket,'test_emptybody','');
  162. $this->assertTrue(false);
  163. } catch (OssException $e) {
  164. $this->assertEquals('InvalidAccessKeyId', $e->getErrorCode());
  165. }
  166. }
  167. public function testCreateObjectDir()
  168. {
  169. $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' ';
  170. $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' ';
  171. $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ ';
  172. $bucket = $this->bucket;
  173. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
  174. try {
  175. $object='test-dir';
  176. $ossClient->createObjectDir($bucket,$object);
  177. } catch (OssException $e) {
  178. $this->assertFalse(true);
  179. }
  180. try {
  181. $object='0';
  182. $ossClient->createObjectDir($bucket,$object);
  183. $ossClient->putObject($bucket,$object, '');
  184. } catch (OssException $e) {
  185. var_dump($e);
  186. $this->assertFalse(true);
  187. }
  188. }
  189. public function testGetBucketCors()
  190. {
  191. try {
  192. $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' ';
  193. $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' ';
  194. $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ ';
  195. $bucket = getenv('OSS_BUCKET');
  196. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
  197. $ossClient->getBucketCors($bucket);
  198. } catch (OssException $e) {
  199. $this->assertFalse(true);
  200. }
  201. }
  202. public function testGetBucketCname()
  203. {
  204. try {
  205. $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' ';
  206. $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' ';
  207. $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ ';
  208. $bucket = $this->bucket;
  209. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
  210. $ossClient->getBucketCname($bucket);
  211. } catch (OssException $e) {
  212. $this->assertFalse(true);
  213. }
  214. }
  215. public function testProxySupport()
  216. {
  217. $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' ';
  218. $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' ';
  219. $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ ';
  220. $bucket = getenv('OSS_BUCKET') . '-proxy';
  221. $requestProxy = getenv('OSS_PROXY');
  222. $key = 'test-proxy-srv-object';
  223. $content = 'test-content';
  224. $proxys = parse_url($requestProxy);
  225. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, null, $requestProxy);
  226. $result = $ossClient->createBucket($bucket);
  227. $this->checkProxy($result, $proxys);
  228. $result = $ossClient->putObject($bucket, $key, $content);
  229. $this->checkProxy($result, $proxys);
  230. $result = $ossClient->getObject($bucket, $key);
  231. $this->assertEquals($content, $result);
  232. // list object
  233. $objectListInfo = $ossClient->listObjects($bucket);
  234. $objectList = $objectListInfo->getObjectList();
  235. $this->assertNotNull($objectList);
  236. $this->assertTrue(is_array($objectList));
  237. $objects = array();
  238. foreach ($objectList as $value) {
  239. $objects[] = $value->getKey();
  240. }
  241. $this->assertEquals(1, count($objects));
  242. $this->assertTrue(in_array($key, $objects));
  243. $result = $ossClient->deleteObject($bucket, $key);
  244. $this->checkProxy($result,$proxys);
  245. $result = $ossClient->deleteBucket($bucket);
  246. $this->checkProxy($result, $proxys);
  247. }
  248. private function checkProxy($result, $proxys)
  249. {
  250. $this->assertEquals($result['info']['primary_ip'], $proxys['host']);
  251. $this->assertEquals($result['info']['primary_port'], $proxys['port']);
  252. $this->assertTrue(array_key_exists('via', $result));
  253. }
  254. public function testIpEndpoint()
  255. {
  256. try {
  257. $accessKeyId = 'sk' . getenv('OSS_ACCESS_KEY_ID') . ' ';
  258. $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' ';
  259. $endpoint = '192.168.1.1';
  260. $bucket = getenv('OSS_BUCKET');
  261. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
  262. $object = "a.file";
  263. $timeout = 3600;
  264. $options = array('Content-Type' => 'txt');
  265. $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options);
  266. $this->assertTrue(strpos($signedUrl, '192.168.1.1/skyranch-php-test/a.file?') != false);
  267. } catch (OssException $e) {
  268. $this->assertFalse(true);
  269. }
  270. }
  271. public function testCnameEndpoint()
  272. {
  273. try {
  274. $accessKeyId = 'sk' . getenv('OSS_ACCESS_KEY_ID') . ' ';
  275. $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' ';
  276. $endpoint = 'cname.endpoint';
  277. $bucket = getenv('OSS_BUCKET');
  278. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, true);
  279. $object = "a.file";
  280. $timeout = 3600;
  281. $options = array('Content-Type' => 'txt');
  282. $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options);
  283. $this->assertTrue(strpos($signedUrl, 'cname.endpoint/a.file?') != false);
  284. } catch (OssException $e) {
  285. $this->assertFalse(true);
  286. }
  287. }
  288. public function testStsToken()
  289. {
  290. try {
  291. $accessKeyId = 'sk' . getenv('OSS_ACCESS_KEY_ID') . ' ';
  292. $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' ';
  293. $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ ';
  294. $bucket = getenv('OSS_BUCKET');
  295. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, "test-token");
  296. $object = "a.file";
  297. $timeout = 3600;
  298. $options = array('Content-Type' => 'txt');
  299. $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options);
  300. $this->assertTrue(strpos($signedUrl, 'security-token=test-token') != false);
  301. } catch (OssException $e) {
  302. $this->assertFalse(true);
  303. }
  304. }
  305. }