public async Task deploy_bytecode_deploys_the_contract() { var spec = new SingleReleaseSpecProvider(ConstantinopleFix.Instance, 1); TestRpcBlockchain testRpc = await TestRpcBlockchain.ForTest(SealEngineType.NethDev).Build(spec); testRpc.TestWallet.UnlockAccount(TestItem.Addresses[0], new SecureString()); await testRpc.AddFunds(TestItem.Addresses[0], 1.Ether()); BaselineModule baselineModule = CreateBaselineModule(testRpc); var result = await baselineModule.baseline_deployBytecode( TestItem.Addresses[0], File.ReadAllText("testBytecode")); result.Data.Should().NotBe(null); result.ErrorCode.Should().Be(0); result.Result.Error.Should().BeNull(); result.Result.ResultType.Should().Be(ResultType.Success); await testRpc.AddBlock(); testRpc.BlockTree.Head.Number.Should().Be(5); testRpc.BlockTree.Head.Transactions.Should().Contain(tx => tx.IsContractCreation); var code = testRpc.StateReader .GetCode(testRpc.BlockTree.Head.StateRoot, ContractAddress.From(TestItem.Addresses[0], 0)); code.Should().NotBeEmpty(); }
public async Task deploy_bytecode_validates_input(string bytecode) { var spec = new SingleReleaseSpecProvider(ConstantinopleFix.Instance, 1); TestRpcBlockchain testRpc = await TestRpcBlockchain.ForTest(SealEngineType.NethDev).Build(spec); testRpc.TestWallet.UnlockAccount(TestItem.Addresses[0], new SecureString()); await testRpc.AddFunds(TestItem.Addresses[0], 1.Ether()); BaselineModule baselineModule = new BaselineModule( testRpc.TxPoolBridge, testRpc.LogFinder, testRpc.BlockTree, _abiEncoder, _fileSystem, new MemDb(), LimboLogs.Instance); var result = await baselineModule.baseline_deployBytecode( TestItem.Addresses[0], bytecode); // invalid input result.Data.Should().Be(null); result.ErrorCode.Should().Be(ErrorCodes.InvalidInput); result.Result.Error.Should().NotBeNull(); result.Result.ResultType.Should().Be(ResultType.Failure); await testRpc.AddBlock(); testRpc.BlockTree.Head.Number.Should().Be(5); testRpc.BlockTree.Head.Transactions.Should().NotContain(tx => tx.IsContractCreation); var code = testRpc.StateReader .GetCode(testRpc.BlockTree.Head.StateRoot, ContractAddress.From(TestItem.Addresses[0], 0)); code.Should().BeEmpty(); }