HttpProviderTest.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. namespace Test\Unit;
  3. use RuntimeException;
  4. use Test\TestCase;
  5. use Web3\Providers\HttpAsyncProvider;
  6. use Web3\Providers\HttpProvider;
  7. use Web3\Methods\Web3\ClientVersion;
  8. class HttpProviderTest extends TestCase
  9. {
  10. /**
  11. * testSend
  12. *
  13. * @return void
  14. */
  15. public function testSend()
  16. {
  17. $provider = new HttpProvider($this->testHost);
  18. $method = new ClientVersion('web3_clientVersion', []);
  19. $provider->send($method, function ($err, $version) {
  20. if ($err !== null) {
  21. $this->fail($err->getMessage());
  22. }
  23. $this->assertTrue(is_string($version));
  24. });
  25. }
  26. /**
  27. * testBatch
  28. *
  29. * @return void
  30. */
  31. public function testBatch()
  32. {
  33. $provider = new HttpProvider($this->testHost);
  34. $method = new ClientVersion('web3_clientVersion', []);
  35. $callback = function ($err, $data) {
  36. if ($err !== null) {
  37. $this->fail($err->getMessage());
  38. }
  39. $this->assertEquals($data[0], $data[1]);
  40. };
  41. try {
  42. $provider->execute($callback);
  43. } catch (RuntimeException $err) {
  44. $this->assertTrue($err->getMessage() !== true);
  45. }
  46. $provider->batch(true);
  47. $provider->send($method, null);
  48. $provider->send($method, null);
  49. $provider->execute($callback);
  50. }
  51. /**
  52. * testSendAsync
  53. *
  54. * @return void
  55. */
  56. public function testSendAsync()
  57. {
  58. $provider = new HttpAsyncProvider($this->testHost);
  59. $method = new ClientVersion('web3_clientVersion', []);
  60. // \React\Async\await($provider->send($method, function ($err, $version) {
  61. // if ($err !== null) {
  62. // $this->fail($err->getMessage());
  63. // }
  64. // $this->assertTrue(is_string($version));
  65. // }));
  66. $a = $provider->send($method, function ($err, $version) {
  67. if ($err !== null) {
  68. $this->fail($err->getMessage());
  69. }
  70. $this->assertTrue(is_string($version));
  71. });
  72. $b = $provider->send($method, function ($err, $version) {
  73. if ($err !== null) {
  74. $this->fail($err->getMessage());
  75. }
  76. $this->assertTrue(is_string($version));
  77. });
  78. $c = $provider->send($method, function ($err, $version) {
  79. if ($err !== null) {
  80. $this->fail($err->getMessage());
  81. }
  82. $this->assertTrue(is_string($version));
  83. });
  84. \React\Async\await(\React\Async\parallel([
  85. function () use ($a) { return $a; },
  86. function () use ($b) { return $b; },
  87. function () use ($c) { return $c; }
  88. ]));
  89. }
  90. /**
  91. * testBatchAsync
  92. *
  93. * @return void
  94. */
  95. public function testBatchAsync()
  96. {
  97. $provider = new HttpAsyncProvider($this->testHost);
  98. $method = new ClientVersion('web3_clientVersion', []);
  99. $callback = function ($err, $data) {
  100. if ($err !== null) {
  101. $this->fail($err->getMessage());
  102. }
  103. $this->assertEquals($data[0], $data[1]);
  104. };
  105. try {
  106. \React\Async\await($provider->execute($callback));
  107. } catch (RuntimeException $err) {
  108. $this->assertTrue($err->getMessage() !== true);
  109. }
  110. $provider->batch(true);
  111. $provider->send($method, null);
  112. $provider->send($method, null);
  113. \React\Async\await($provider->execute($callback));
  114. }
  115. }