ProxyTest.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. namespace AlibabaCloud\Client\Tests\LowerthanVersion7_2\Feature\Request;
  3. use PHPUnit\Framework\TestCase;
  4. use AlibabaCloud\Client\AlibabaCloud;
  5. use AlibabaCloud\Client\Exception\ServerException;
  6. use AlibabaCloud\Client\Exception\ClientException;
  7. use AlibabaCloud\Client\Tests\Mock\Services\Ecs\DescribeRegionsRequest;
  8. /**
  9. * Class ProxyTest
  10. *
  11. * @package AlibabaCloud\Client\Tests\LowerthanVersion7_2\Feature\Request
  12. * @coversDefaultClass \AlibabaCloud\Client\Request\RpcRequest
  13. */
  14. class ProxyTest extends TestCase
  15. {
  16. /**
  17. * @throws ServerException
  18. * @throws ClientException
  19. */
  20. public function testNoProxy()
  21. {
  22. // Setup
  23. $nameClient = 'name';
  24. $regionId = \AlibabaCloud\Client\env('REGION_ID', 'cn-hangzhou');
  25. $accessKeyId = \getenv('ACCESS_KEY_ID');
  26. $accessKeySecret = \getenv('ACCESS_KEY_SECRET');
  27. // Test
  28. AlibabaCloud::accessKeyClient($accessKeyId, $accessKeySecret)
  29. ->regionId($regionId)
  30. ->name($nameClient);
  31. // Test
  32. $result = (new DescribeRegionsRequest())->client($nameClient)
  33. ->connectTimeout(25)
  34. ->timeout(30)
  35. ->request();
  36. // Assert
  37. $headers = $result->getHeaders();
  38. static::assertArrayNotHasKey('Via', $headers);
  39. }
  40. /**
  41. * @throws ServerException
  42. * @throws ClientException
  43. */
  44. public function testProxyWithoutPassword()
  45. {
  46. // Setup
  47. $nameClient = 'name';
  48. $regionId = \AlibabaCloud\Client\env('REGION_ID', 'cn-hangzhou');
  49. $accessKeyId = \getenv('ACCESS_KEY_ID');
  50. $accessKeySecret = \getenv('ACCESS_KEY_SECRET');
  51. // Test
  52. AlibabaCloud::accessKeyClient($accessKeyId, $accessKeySecret)
  53. ->regionId($regionId)
  54. ->name($nameClient);
  55. // Test
  56. $result = (new DescribeRegionsRequest())->client($nameClient)
  57. ->connectTimeout(25)
  58. ->timeout(30)
  59. ->proxy([
  60. 'http' => 'http://localhost:8989',
  61. ])
  62. ->request();
  63. // Assert
  64. $headers = $result->getHeaders();
  65. static::assertArrayHasKey('Via', $headers);
  66. static::assertEquals('HTTP/1.1 o_o', $headers['Via'][0]);
  67. static::assertNotNull($result->RequestId);
  68. static::assertNotNull($result->Regions->Region[0]->LocalName);
  69. static::assertNotNull($result->Regions->Region[0]->RegionId);
  70. }
  71. /**
  72. * @throws ServerException
  73. * @throws ClientException
  74. */
  75. public function testProxyWithPassword()
  76. {
  77. // Setup
  78. $nameClient = 'name';
  79. $regionId = \AlibabaCloud\Client\env('REGION_ID', 'cn-hangzhou');
  80. $accessKeyId = \getenv('ACCESS_KEY_ID');
  81. $accessKeySecret = \getenv('ACCESS_KEY_SECRET');
  82. // Test
  83. AlibabaCloud::accessKeyClient($accessKeyId, $accessKeySecret)
  84. ->regionId($regionId)
  85. ->name($nameClient);
  86. // Test
  87. $result = (new DescribeRegionsRequest())->client($nameClient)
  88. ->connectTimeout(25)
  89. ->timeout(30)
  90. ->proxy([
  91. 'http' => 'http://username:password@localhost:8989',
  92. ])
  93. ->request();
  94. // Assert
  95. $headers = $result->getHeaders();
  96. static::assertArrayHasKey('Via', $headers);
  97. static::assertEquals('HTTP/1.1 o_o', $headers['Via'][0]);
  98. static::assertNotNull($result->RequestId);
  99. static::assertNotNull($result->Regions->Region[0]->LocalName);
  100. static::assertNotNull($result->Regions->Region[0]->RegionId);
  101. }
  102. /**
  103. * @expectedException \AlibabaCloud\Client\Exception\ClientException
  104. * @expectedExceptionMessageRegExp /cURL error/
  105. * @throws ClientException
  106. * @throws ServerException
  107. */
  108. public function testProxyNotSet()
  109. {
  110. // Setup
  111. $nameClient = 'name';
  112. $regionId = \AlibabaCloud\Client\env('REGION_ID', 'cn-hangzhou');
  113. $accessKeyId = \getenv('ACCESS_KEY_ID');
  114. $accessKeySecret = \getenv('ACCESS_KEY_SECRET');
  115. // Test
  116. AlibabaCloud::accessKeyClient($accessKeyId, $accessKeySecret)
  117. ->regionId($regionId)
  118. ->name($nameClient);
  119. // Assert
  120. (new DescribeRegionsRequest())->client($nameClient)
  121. ->connectTimeout(1)
  122. ->timeout(2)
  123. ->proxy([
  124. 'http' => 'http://localhost:55657',
  125. ])
  126. ->request();
  127. }
  128. }