From bd00f0d79010b5a85865ae8368085a1c7e91f220 Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 15:23:48 +0800 Subject: [PATCH 01/23] .travis.yml --- .travis.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 15e6549..8384813 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,11 @@ language: php php: - 7.1 +before_install: + - nvm install 8 + install: + - npm install -g ganache-cli - composer install notifications: @@ -14,7 +18,7 @@ notifications: on_failure: always script: - - vendor/bin/phpunit --coverage-clover=coverage.xml + - ganache-cli > /dev/null & vendor/bin/phpunit --coverage-clover=coverage.xml after_success: - bash <(curl -s https://codecov.io/bash) -t 8436848f-9a99-4b49-be60-629d7ff9a62c \ No newline at end of file From 7b5543138b2217f4dafa75894983c0b2d743176e Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 15:40:13 +0800 Subject: [PATCH 02/23] Change host. --- test/TestCase.php | 9 ++++++++- test/unit/ContractTest.php | 1 - 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/test/TestCase.php b/test/TestCase.php index ed6e437..780e377 100644 --- a/test/TestCase.php +++ b/test/TestCase.php @@ -21,6 +21,13 @@ class TestCase extends BaseTestCase */ protected $testRinkebyHost = 'https://rinkeby.infura.io/vuethexplore'; + /** + * testHost + * + * @var string + */ + protected $testHost = 'http://localhost:8545'; + /** * setUp * @@ -28,7 +35,7 @@ class TestCase extends BaseTestCase */ public function setUp() { - $web3 = new Web3($this->testRinkebyHost); + $web3 = new Web3($this->testHost); $this->web3 = $web3; } diff --git a/test/unit/ContractTest.php b/test/unit/ContractTest.php index 4f24078..538a97b 100644 --- a/test/unit/ContractTest.php +++ b/test/unit/ContractTest.php @@ -304,7 +304,6 @@ class ContractTest extends TestCase { parent::setUp(); - // $this->contract = new Contract('http://localhost:8545', $this->testAbi); $this->contract = new Contract($this->web3->provider, $this->testAbi); $this->contract->eth->accounts(function ($err, $accounts) { if ($err === null) { From 04c5ac24f686acb9e11574c69daa0bf244a36c0e Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 15:42:43 +0800 Subject: [PATCH 03/23] Eth hashrate output formatter. --- src/Methods/Eth/Hashrate.php | 5 ++++- test/unit/EthApiTest.php | 9 ++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Methods/Eth/Hashrate.php b/src/Methods/Eth/Hashrate.php index a08d6ab..478f7f5 100644 --- a/src/Methods/Eth/Hashrate.php +++ b/src/Methods/Eth/Hashrate.php @@ -13,6 +13,7 @@ namespace Web3\Methods\Eth; use InvalidArgumentException; use Web3\Methods\EthMethod; +use Web3\Formatters\BigNumberFormatter; class Hashrate extends EthMethod { @@ -35,7 +36,9 @@ class Hashrate extends EthMethod * * @var array */ - protected $outputFormatters = []; + protected $outputFormatters = [ + BigNumberFormatter::class + ]; /** * defaultValues diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index 8c1ee63..2ea2c5b 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -73,10 +73,9 @@ class EthApiTest extends TestCase $eth->coinbase(function ($err, $coinbase) { if ($err !== null) { - // infura banned us to use coinbase - return $this->assertTrue($err->getCode() === 405); + return $this->fail($err->getMessage()); } - $this->assertTrue(is_string($coinbass)); + $this->assertEquals($coinbase, '0x561a2aa10f9a8589c93665554c871106342f70af'); }); } @@ -93,7 +92,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->fail($err->getMessage()); } - $this->assertTrue($mining !== null); + $this->assertTrue($mining); }); } @@ -110,7 +109,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->fail($err->getMessage()); } - $this->assertTrue(is_string($hashrate)); + $this->assertEquals($hashrate->toString(), '0'); }); } From 828f554eb68d10f4b2a1ad8feb2fd673131cf4a5 Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 15:45:20 +0800 Subject: [PATCH 04/23] Eth gasPrice output formatter. --- src/Methods/Eth/GasPrice.php | 5 ++++- test/unit/EthApiTest.php | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Methods/Eth/GasPrice.php b/src/Methods/Eth/GasPrice.php index 8bef5d4..9218cc1 100644 --- a/src/Methods/Eth/GasPrice.php +++ b/src/Methods/Eth/GasPrice.php @@ -13,6 +13,7 @@ namespace Web3\Methods\Eth; use InvalidArgumentException; use Web3\Methods\EthMethod; +use Web3\Formatters\BigNumberFormatter; class GasPrice extends EthMethod { @@ -35,7 +36,9 @@ class GasPrice extends EthMethod * * @var array */ - protected $outputFormatters = []; + protected $outputFormatters = [ + BigNumberFormatter::class + ]; /** * defaultValues diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index 2ea2c5b..b7c3959 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -126,7 +126,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->fail($err->getMessage()); } - $this->assertTrue(is_string($gasPrice)); + $this->assertTrue(is_numeric($gasPrice->toString())); }); } From 9aec83ed6ce347d31ec5811b2174a8ad09f798db Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 15:46:39 +0800 Subject: [PATCH 05/23] Eth blockNumber output formatter. --- src/Methods/Eth/BlockNumber.php | 5 ++++- test/unit/EthApiTest.php | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Methods/Eth/BlockNumber.php b/src/Methods/Eth/BlockNumber.php index f402239..7d6d33c 100644 --- a/src/Methods/Eth/BlockNumber.php +++ b/src/Methods/Eth/BlockNumber.php @@ -13,6 +13,7 @@ namespace Web3\Methods\Eth; use InvalidArgumentException; use Web3\Methods\EthMethod; +use Web3\Formatters\BigNumberFormatter; class BlockNumber extends EthMethod { @@ -35,7 +36,9 @@ class BlockNumber extends EthMethod * * @var array */ - protected $outputFormatters = []; + protected $outputFormatters = [ + BigNumberFormatter::class + ]; /** * defaultValues diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index b7c3959..7f30819 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -160,7 +160,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->fail($err->getMessage()); } - $this->assertTrue(is_string($blockNumber)); + $this->assertTrue(is_numeric($blockNumber->toString())); }); } From 52c1774c9c05b7c595aad9f2175a59ce78e0f56b Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 15:48:15 +0800 Subject: [PATCH 06/23] Eth getBalance output formatter. --- src/Methods/Eth/GetBalance.php | 5 ++++- test/unit/EthApiTest.php | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Methods/Eth/GetBalance.php b/src/Methods/Eth/GetBalance.php index 793dad4..007e97b 100644 --- a/src/Methods/Eth/GetBalance.php +++ b/src/Methods/Eth/GetBalance.php @@ -18,6 +18,7 @@ use Web3\Validators\QuantityValidator; use Web3\Validators\AddressValidator; use Web3\Formatters\AddressFormatter; use Web3\Formatters\OptionalQuantityFormatter; +use Web3\Formatters\BigNumberFormatter; class GetBalance extends EthMethod { @@ -46,7 +47,9 @@ class GetBalance extends EthMethod * * @var array */ - protected $outputFormatters = []; + protected $outputFormatters = [ + BigNumberFormatter::class + ]; /** * defaultValues diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index 7f30819..a017c3b 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -177,7 +177,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->fail($err->getMessage()); } - $this->assertTrue(is_string($balance)); + $this->assertTrue(is_numeric($balance->toString())); }); } From b575e68a69cb3c1e8cbb45316e1f89ac02ab18dc Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 15:51:27 +0800 Subject: [PATCH 07/23] Eth getTransactionCount output formatter. --- src/Methods/Eth/GetTransactionCount.php | 5 ++++- test/unit/EthApiTest.php | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Methods/Eth/GetTransactionCount.php b/src/Methods/Eth/GetTransactionCount.php index 6c16d7c..468e078 100644 --- a/src/Methods/Eth/GetTransactionCount.php +++ b/src/Methods/Eth/GetTransactionCount.php @@ -18,6 +18,7 @@ use Web3\Validators\QuantityValidator; use Web3\Validators\AddressValidator; use Web3\Formatters\AddressFormatter; use Web3\Formatters\OptionalQuantityFormatter; +use Web3\Formatters\BigNumberFormatter; class GetTransactionCount extends EthMethod { @@ -46,7 +47,9 @@ class GetTransactionCount extends EthMethod * * @var array */ - protected $outputFormatters = []; + protected $outputFormatters = [ + BigNumberFormatter::class + ]; /** * defaultValues diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index a017c3b..ad8cd81 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -190,7 +190,7 @@ class EthApiTest extends TestCase { $eth = $this->eth; - $eth->getStorageAt('0x407d73d8a49eeb85d32cf465507dd71d507100c1', '0x0', function ($err, $storage) { + $eth->getStorageAt('0x561a2aa10f9a8589c93665554c871106342f70af', '0x0', function ($err, $storage) { if ($err !== null) { return $this->fail($err->getMessage()); } @@ -207,11 +207,11 @@ class EthApiTest extends TestCase { $eth = $this->eth; - $eth->getTransactionCount('0x407d73d8a49eeb85d32cf465507dd71d507100c1', function ($err, $transactionCount) { + $eth->getTransactionCount('0x561a2aa10f9a8589c93665554c871106342f70af', function ($err, $transactionCount) { if ($err !== null) { return $this->fail($err->getMessage()); } - $this->assertTrue(is_string($transactionCount)); + $this->assertTrue(is_numeric($transactionCount->toString())); }); } From 3d8b0d32647748fa74f41519f3c6c464310bce8a Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 15:53:53 +0800 Subject: [PATCH 08/23] Eth getTransactionCountByHash output formatter. --- src/Methods/Eth/GetBlockTransactionCountByHash.php | 5 ++++- test/unit/EthApiTest.php | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Methods/Eth/GetBlockTransactionCountByHash.php b/src/Methods/Eth/GetBlockTransactionCountByHash.php index 259e160..c8acb87 100644 --- a/src/Methods/Eth/GetBlockTransactionCountByHash.php +++ b/src/Methods/Eth/GetBlockTransactionCountByHash.php @@ -15,6 +15,7 @@ use InvalidArgumentException; use Web3\Methods\EthMethod; use Web3\Validators\BlockHashValidator; use Web3\Formatters\HexFormatter; +use Web3\Formatters\BigNumberFormatter; class GetBlockTransactionCountByHash extends EthMethod { @@ -41,7 +42,9 @@ class GetBlockTransactionCountByHash extends EthMethod * * @var array */ - protected $outputFormatters = []; + protected $outputFormatters = [ + BignumberFormatter::class + ]; /** * defaultValues diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index ad8cd81..aef886c 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -228,7 +228,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($transactionCount)); + $this->assertTrue(is_numeric($transactionCount->toString())); }); } From 808134f19f744679d24ad5fd23f719468e03b0e8 Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 15:54:44 +0800 Subject: [PATCH 09/23] Eth getTransactionCountByNumber output formatter. --- src/Methods/Eth/GetBlockTransactionCountByNumber.php | 5 ++++- test/unit/EthApiTest.php | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Methods/Eth/GetBlockTransactionCountByNumber.php b/src/Methods/Eth/GetBlockTransactionCountByNumber.php index 064ff08..8b53e77 100644 --- a/src/Methods/Eth/GetBlockTransactionCountByNumber.php +++ b/src/Methods/Eth/GetBlockTransactionCountByNumber.php @@ -15,6 +15,7 @@ use InvalidArgumentException; use Web3\Methods\EthMethod; use Web3\Validators\QuantityValidator; use Web3\Formatters\OptionalQuantityFormatter; +use Web3\Formatters\BigNumberFormatter; class GetBlockTransactionCountByNumber extends EthMethod { @@ -41,7 +42,9 @@ class GetBlockTransactionCountByNumber extends EthMethod * * @var array */ - protected $outputFormatters = []; + protected $outputFormatters = [ + BigNumberFormatter::class + ]; /** * defaultValues diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index aef886c..15c69cd 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -245,7 +245,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($transactionCount)); + $this->assertTrue(is_numeric($transactionCount->toString())); }); } From f8d005dae1033b2c4adbb0fe3e96f3bf8d39657d Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 15:56:10 +0800 Subject: [PATCH 10/23] Eth getUncleCountByHash output formatter. --- src/Methods/Eth/GetUncleCountByBlockHash.php | 5 ++++- test/unit/EthApiTest.php | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Methods/Eth/GetUncleCountByBlockHash.php b/src/Methods/Eth/GetUncleCountByBlockHash.php index 33da325..625635c 100644 --- a/src/Methods/Eth/GetUncleCountByBlockHash.php +++ b/src/Methods/Eth/GetUncleCountByBlockHash.php @@ -15,6 +15,7 @@ use InvalidArgumentException; use Web3\Methods\EthMethod; use Web3\Validators\BlockHashValidator; use Web3\Formatters\HexFormatter; +use Web3\Formatters\BigNumberFormatter; class GetUncleCountByBlockHash extends EthMethod { @@ -41,7 +42,9 @@ class GetUncleCountByBlockHash extends EthMethod * * @var array */ - protected $outputFormatters = []; + protected $outputFormatters = [ + BigNumberFormatter::class + ]; /** * defaultValues diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index 15c69cd..d1f67b2 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -262,7 +262,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($uncleCount)); + $this->assertTrue(is_numeric($uncleCount->toString())); }); } From a413aa4da4a65a1ace8c5603a5177f14a0326ca3 Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 15:57:21 +0800 Subject: [PATCH 11/23] Eth getUncleCountByBlockNumber output formatter. --- src/Methods/Eth/GetUncleCountByBlockNumber.php | 5 ++++- test/unit/EthApiTest.php | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Methods/Eth/GetUncleCountByBlockNumber.php b/src/Methods/Eth/GetUncleCountByBlockNumber.php index 5cb5569..dc4ad9f 100644 --- a/src/Methods/Eth/GetUncleCountByBlockNumber.php +++ b/src/Methods/Eth/GetUncleCountByBlockNumber.php @@ -16,6 +16,7 @@ use Web3\Methods\EthMethod; use Web3\Validators\TagValidator; use Web3\Validators\QuantityValidator; use Web3\Formatters\OptionalQuantityFormatter; +use Web3\Formatters\BigNumberFormatter; class GetUncleCountByBlockNumber extends EthMethod { @@ -44,7 +45,9 @@ class GetUncleCountByBlockNumber extends EthMethod * * @var array */ - protected $outputFormatters = []; + protected $outputFormatters = [ + BigNumberFormatter::class + ]; /** * defaultValues diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index d1f67b2..3e18852 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -279,7 +279,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($uncleCount)); + $this->assertTrue(is_numeric($uncleCount->toString())); }); } From 5a9bd4f8c07dee6674cc6030ba58ad055524bd4d Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 16:00:02 +0800 Subject: [PATCH 12/23] Eth api estimateGas unit test. --- test/unit/EthApiTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index 3e18852..b961132 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -404,7 +404,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($gas)); + $this->assertTrue(is_numeric($gas->toString())); }); } From ea150f79582086076d887b3695c75402b3e5c97a Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 16:01:55 +0800 Subject: [PATCH 13/23] Eth api getCompilers unit test. --- test/unit/EthApiTest.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index b961132..61f8ff6 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -421,7 +421,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($block)); + $this->assertTrue($block !== null); }); } @@ -558,7 +558,8 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($compilers)); + $this->assertTrue(is_array($compilers)); + $this->assertEquals($compilers[0], 'solidity'); }); } From a2d1ab535c46c784c215b7283c87e8ab4f9a3a81 Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 16:03:18 +0800 Subject: [PATCH 14/23] Eth api uninstall unit test. --- test/unit/EthApiTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index 61f8ff6..ab2f32b 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -687,7 +687,7 @@ class EthApiTest extends TestCase // infura banned us to uninstall filter return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($filter)); + $this->assertTrue(is_bool($filter)); }); } From ad91024dfa5028f45cab5b2f0ea244b5f49d3205 Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 16:06:26 +0800 Subject: [PATCH 15/23] Eth api getFilterChanges unit test. --- test/unit/EthApiTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index ab2f32b..8cac1c4 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -700,12 +700,12 @@ class EthApiTest extends TestCase { $eth = $this->eth; - $eth->getFilterChanges('0x01', function ($err, $filter) { + $eth->getFilterChanges('0x01', function ($err, $changes) { if ($err !== null) { // infura banned us to get filter changes return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($filter)); + $this->assertTrue(is_array($changes)); }); } From 596a3599dec2c3e0174c546b053479c99db3e036 Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 16:11:47 +0800 Subject: [PATCH 16/23] Personal api unlockAccount unit test. --- test/unit/PersonalApiTest.php | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/test/unit/PersonalApiTest.php b/test/unit/PersonalApiTest.php index e9a449a..055bbf6 100644 --- a/test/unit/PersonalApiTest.php +++ b/test/unit/PersonalApiTest.php @@ -14,6 +14,13 @@ class PersonalApiTest extends TestCase */ protected $personal; + /** + * newAccount + * + * @var string + */ + protected $newAccount; + /** * setUp * @@ -55,8 +62,7 @@ class PersonalApiTest extends TestCase $personal->newAccount('123456', function ($err, $account) { if ($err !== null) { - // infura banned us to use new account - return $this->assertTrue($err->getCode() === 405); + return $this->fail($e->getMessage()); } $this->assertTrue(is_string($account)); }); @@ -71,12 +77,21 @@ class PersonalApiTest extends TestCase { $personal = $this->personal; - $personal->unlockAccount('0x407d73d8a49eeb85d32cf465507dd71d507100c1', '123456', function ($err, $account) { + // create account + $personal->newAccount('123456', function ($err, $account) { + if ($err !== null) { + return $this->fail($e->getMessage()); + } + $this->newAccount = $account; + $this->assertTrue(is_string($account)); + }); + + $personal->unlockAccount($this->newAccount, '123456', function ($err, $unlocked) { if ($err !== null) { // infura banned us to use unlock account return $this->assertTrue($err->getCode() === 405); } - $this->assertTrue(is_bool($account)); + $this->assertTrue($unlocked); }); } From 0a4060e6dd782fe3f66431d22df27e16de09cfe1 Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 16:17:59 +0800 Subject: [PATCH 17/23] Unit test of eth apis. --- test/unit/EthApiTest.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index 8cac1c4..db8c094 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -456,7 +456,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($transaction)); + $this->assertTrue($transaction !== null); }); } @@ -473,7 +473,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($transaction)); + $this->assertTrue($transaction !== null); }); } @@ -490,7 +490,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($transaction)); + $this->assertTrue($transaction !== null); }); } @@ -507,7 +507,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($transaction)); + $this->assertTrue($transaction !== null); }); } @@ -524,7 +524,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($uncle)); + $this->assertTrue($uncle !== null); }); } @@ -541,7 +541,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->assertTrue($err !== null); } - $this->assertTrue(is_string($uncle)); + $this->assertTrue($uncle !== null); }); } From 0e7155334356046fa233791d69715a88af7df4d3 Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 16:49:50 +0800 Subject: [PATCH 18/23] Add coinbase and fix unit test of personal api. --- test/TestCase.php | 14 +++++++++++++ test/unit/EthApiTest.php | 2 +- test/unit/PersonalApiTest.php | 38 ++++++++++++++++++++++++++--------- 3 files changed, 43 insertions(+), 11 deletions(-) diff --git a/test/TestCase.php b/test/TestCase.php index 780e377..51593d8 100644 --- a/test/TestCase.php +++ b/test/TestCase.php @@ -28,6 +28,13 @@ class TestCase extends BaseTestCase */ protected $testHost = 'http://localhost:8545'; + /** + * coinbase + * + * @var string + */ + protected $coinbase; + /** * setUp * @@ -37,6 +44,13 @@ class TestCase extends BaseTestCase { $web3 = new Web3($this->testHost); $this->web3 = $web3; + + $web3->eth->coinbase(function ($err, $coinbase) { + if ($err !== null) { + return $this->fail($err->getMessage()); + } + $this->coinbase = $coinbase; + }); } /** diff --git a/test/unit/EthApiTest.php b/test/unit/EthApiTest.php index db8c094..0d4cc4b 100644 --- a/test/unit/EthApiTest.php +++ b/test/unit/EthApiTest.php @@ -75,7 +75,7 @@ class EthApiTest extends TestCase if ($err !== null) { return $this->fail($err->getMessage()); } - $this->assertEquals($coinbase, '0x561a2aa10f9a8589c93665554c871106342f70af'); + $this->assertEquals($coinbase, $this->coinbase); }); } diff --git a/test/unit/PersonalApiTest.php b/test/unit/PersonalApiTest.php index 055bbf6..9924b0a 100644 --- a/test/unit/PersonalApiTest.php +++ b/test/unit/PersonalApiTest.php @@ -104,19 +104,37 @@ class PersonalApiTest extends TestCase { $personal = $this->personal; - $personal->sendTransaction([ - 'from' => "0xb60e8dd61c5d32be8058bb8eb970870f07233155", - 'to' => "0xd46e8dd67c5d32be8058bb8eb970870f07244567", - 'gas' => "0x76c0", - 'gasPrice' => "0x9184e72a000", - 'value' => "0x9184e72a", - 'data' => "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675" - ], '123456', function ($err, $transaction) { + // create account + $personal->newAccount('123456', function ($err, $account) { if ($err !== null) { - // infura banned us to use send transaction - return $this->assertTrue($err->getCode() === 405); + return $this->fail($e->getMessage()); + } + $this->newAccount = $account; + $this->assertTrue(is_string($account)); + }); + + $this->web3->eth->sendTransaction([ + 'from' => $this->coinbase, + 'to' => $this->newAccount, + 'value' => '0xfffffffff', + ], function ($err, $transaction) { + if ($err !== null) { + return $this->fail($err->getMessage()); } $this->assertTrue(is_string($transaction)); + $this->assertTrue(mb_strlen($transaction) === 66); + }); + + $personal->sendTransaction([ + 'from' => $this->newAccount, + 'to' => $this->coinbase, + 'value' => '0x01', + ], '123456', function ($err, $transaction) { + if ($err !== null) { + return $this->fail($err->getMessage()); + } + $this->assertTrue(is_string($transaction)); + $this->assertTrue(mb_strlen($transaction) === 66); }); } From d65e0acd17696749647b032db51c9690f3f6d390 Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 17:03:13 +0800 Subject: [PATCH 19/23] test.sh --- .travis.yml | 2 +- scripts/test.sh | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 scripts/test.sh diff --git a/.travis.yml b/.travis.yml index 8384813..5bb76f7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,7 @@ notifications: on_failure: always script: - - ganache-cli > /dev/null & vendor/bin/phpunit --coverage-clover=coverage.xml + - scripts/test.sh after_success: - bash <(curl -s https://codecov.io/bash) -t 8436848f-9a99-4b49-be60-629d7ff9a62c \ No newline at end of file diff --git a/scripts/test.sh b/scripts/test.sh new file mode 100644 index 0000000..caab94b --- /dev/null +++ b/scripts/test.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +ganache-cli -g 0 -l 0 > /dev/null & vendor/bin/phpunit --coverage-clover=coverage.xml \ No newline at end of file From b9b0b53d22dc4d506a30bbc60f364b7e6cd239ad Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 17:07:30 +0800 Subject: [PATCH 20/23] Require root permission. --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 5bb76f7..c2f385b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,5 @@ +sudo: required + language: php php: From 28b589608fc834112825118894cc16d6f106cb20 Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 17:24:07 +0800 Subject: [PATCH 21/23] Chmod test.sh. --- scripts/test.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 scripts/test.sh diff --git a/scripts/test.sh b/scripts/test.sh old mode 100644 new mode 100755 From ac5e46ba2a497aaaff8f01d785d99f5ea1a0ec83 Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 17:56:46 +0800 Subject: [PATCH 22/23] Kill ganache process after test. --- scripts/test.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/scripts/test.sh b/scripts/test.sh index caab94b..6b63d4a 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -1,3 +1,10 @@ #!/usr/bin/env bash -ganache-cli -g 0 -l 0 > /dev/null & vendor/bin/phpunit --coverage-clover=coverage.xml \ No newline at end of file +ganache-cli -g 0 -l 0 > /dev/null & +ganachecli_pid=$! +echo "Start ganache-cli pid: $ganachecli_pid" + +vendor/bin/phpunit --coverage-clover=coverage.xml + +kill -9 $ganachecli_pid +echo "Kill ganache-cli" \ No newline at end of file From b16a8f9b9a809c38e24da13b9ac34b7fa8a2ba2d Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Fri, 12 Jan 2018 18:05:52 +0800 Subject: [PATCH 23/23] Fix: Non-static method Web3\Contracts\Ethabi::encodeEventSignature() should not be called statically --- src/Contract.php | 12 +++++++++++- test/unit/ContractTest.php | 4 ++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Contract.php b/src/Contract.php index b5fa933..21ac3a9 100644 --- a/src/Contract.php +++ b/src/Contract.php @@ -243,7 +243,7 @@ class Contract } /** - * getAbr + * getAbi * * @return array */ @@ -252,6 +252,16 @@ class Contract return $this->abi; } + /** + * getEthabi + * + * @return array + */ + public function getEthabi() + { + return $this->ethabi; + } + /** * getEth * diff --git a/test/unit/ContractTest.php b/test/unit/ContractTest.php index 538a97b..b3f0d91 100644 --- a/test/unit/ContractTest.php +++ b/test/unit/ContractTest.php @@ -416,7 +416,7 @@ class ContractTest extends TestCase $transactionId = $result; $this->assertTrue((preg_match('/^0x[a-f0-9]{64}$/', $transactionId) === 1)); - $contract->eth->getTransactionReceipt($transactionId, function ($err, $transaction) use ($fromAccount, $toAccount) { + $contract->eth->getTransactionReceipt($transactionId, function ($err, $transaction) use ($fromAccount, $toAccount, $contract) { if ($err !== null) { return $this->fail($err); } @@ -425,7 +425,7 @@ class ContractTest extends TestCase echo "\nTransaction has mind:) block number: " . $transaction->blockNumber . "\n"; // validate topics - $this->assertEquals(Ethabi::encodeEventSignature($this->contract->events['Transfer']), $topics[0]); + $this->assertEquals($contract->ethabi->encodeEventSignature($this->contract->events['Transfer']), $topics[0]); $this->assertEquals('0x' . IntegerFormatter::format($fromAccount), $topics[1]); $this->assertEquals('0x' . IntegerFormatter::format($toAccount), $topics[2]); }