Beispiel #1
0
        public async Task TestSendIcxTransaction()
        {
            var provider    = GetMockProvider <Bytes>();
            var fromAddress = new Address("hxbe258ceb872e08851f1f59694dac2558708ece11");
            var toAddress   = new Address("hx5bfdb090f43a808005ffc27c25b213145e80b7cd");

            var transaction = TransactionBuilder.CreateBuilder()
                              .Nid(NetworkId.Main)
                              .From(fromAddress)
                              .To(toAddress)
                              .Value(BigInteger.Parse("0de0b6b3a7640000", NumberStyles.AllowHexSpecifier))
                              .StepLimit(BigInteger.Parse("012345", NumberStyles.AllowHexSpecifier))
                              .Timestamp(BigInteger.Parse("0563a6cf330136", NumberStyles.AllowHexSpecifier))
                              .Nonce(BigInteger.Parse("1"))
                              .Build();
            IWallet wallet            = KeyWallet.Load(new Bytes(SampleKeys.PrivateKeyString));
            var     signedTransaction = new SignedTransaction(transaction, wallet);

            var iconService = new IconService(provider.Object);
            await iconService.SendTransaction(signedTransaction);

            var expected = "xR6wKs+IA+7E91bT8966jFKlK5mayutXCvayuSMCrx9KB7670CsWa0B7LQzgsxU0GLXaovlAT2MLs1XuDiSaZQE=";

            provider.Verify(x =>
                            x.SendRequestAsync(It.Is <Request>(request => RequestCheckTestSendIcxTransaction(request, expected)),
                                               It.IsAny <IRpcConverter <Bytes> >()), Times.Once);
        }
Beispiel #2
0
        public byte[] GeneratePublicKey(byte[] privateKey)
        {
            var pkBytes = new Bytes(privateKey);
            var wallet  = KeyWallet.Load(pkBytes);

            return(wallet.GetPublicKey().ToByteArray());
        }
Beispiel #3
0
        public void TestLoadWithPrivateKey()
        {
            var pkBytes       = new Bytes(SampleKeys.PrivateKeyString);
            var wallet        = KeyWallet.Load(pkBytes);
            var loadedAddress = wallet.GetAddress();

            Assert.Equal(new Address(SampleKeys.Address), loadedAddress);
        }
Beispiel #4
0
        public void TestCreate()
        {
            var wallet = KeyWallet.Create();

            Assert.True(IconKeys.IsValidAddress(wallet.GetAddress().ToString()));
            IWallet loadWallet = KeyWallet.Load(wallet.GetPrivateKey());

            Assert.Equal(wallet.GetAddress(), loadWallet.GetAddress());
        }
Beispiel #5
0
        public IconServiceVCRTest(ITestOutputHelper testOutputHelper)
        {
            _testOutputHelper = testOutputHelper;
            //var pk1 = Environment.GetEnvironmentVariable("PK1");
            _scoreAddress = new Address("cxcc7ef86cdae93a89b6c08206a7962bcb9abb7bf4");
            var httpClient = new HttpClient();

            _iconService  = new IconService(new HttpProvider(httpClient, Url));
            _wallet       = KeyWallet.Load(new Bytes(PrivateKeyString));
            _secretWallet = null; //KeyWallet.Load(new Bytes(pk1));
        }
Beispiel #6
0
        public void TestSignMessageNullException()
        {
            var wallet = KeyWallet.Load(new Bytes(SampleKeys.PrivateKeyString));

            byte[] message = null;
            Assert.Throws <ArgumentException>(() =>
            {
                // ReSharper disable once ExpressionIsAlwaysNull
                wallet.Sign(message);
            });
        }
Beispiel #7
0
        private void TestSignMessage()
        {
            const string message  = "0xefc935bb4a944ccf02b4ff4a601f5bb47d60b55e21aa9683aaf17bf1d79129ae";
            const string expected = "0x7e224bd64f2fa18a340acda4f7e567f87d9c8e65e523759d00034453b92be2d55ab206c41bc60f831055ae2f49ab40431a209a87f09a965492a84ab1f0b885c001";

            var privateKey = new Bytes(SampleKeys.PrivateKeyString);
            var wallet     = KeyWallet.Load(privateKey);
            var byteArray  = new Bytes(message).ToByteArray();
            var sign       = wallet.Sign(byteArray);
            var hexString  = new Bytes(sign).ToHexString(true);

            Assert.Equal(expected, hexString);
        }
        public void TestRequestSerialization()
        {
            var wallet = KeyWallet.Load(new Bytes(SampleKeys.PrivateKeyString));

            var @params = new RpcObject.Builder()
                          .Put("address", new RpcValue(wallet.GetAddress()))
                          .Build();

            //var request = new Request(requestId, "icx_getBalance", @params);

            var json = JsonConvert.SerializeObject(@params, Formatting.Indented, new RpcItemSerializer());

            Assert.True(json.Length > 2);
        }
        //This is needed to run tests locally!
        public BaseTest()
        {
            #region LoadEnvVariables

            try
            {
                using (var file = File.OpenText("Properties\\launchSettings.json"))
                {
                    var reader  = new JsonTextReader(file);
                    var jObject = JObject.Load(reader);

                    var variables = jObject
                                    .GetValue("profiles")
                                    //select a proper profile here
                                    .SelectMany(profiles => profiles.Children())
                                    .SelectMany(profile => profile.Children <JProperty>())
                                    .Where(prop => prop.Name == "environmentVariables")
                                    .SelectMany(prop => prop.Value.Children <JProperty>())
                                    .ToList();

                    foreach (var variable in variables)
                    {
                        Environment.SetEnvironmentVariable(variable.Name, variable.Value.ToString());
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }

            #endregion LoadEnvVariables

            var secretKey1 = Environment.GetEnvironmentVariable("PrivateKey");
            var secretKey2 = Environment.GetEnvironmentVariable("PrivateKey2");

            _settingsUrl  = Environment.GetEnvironmentVariable("SettingsUrl");
            _secretWallet = KeyWallet.Load(new Bytes(secretKey1));
            _toWallet     = KeyWallet.Load(new Bytes(secretKey2));
            _container    = TestModulesRegistrator.GetContainer(_settingsUrl).Result;
        }
Beispiel #10
0
        public async Task TestTransferTokenTransaction()
        {
            var provider = GetMockProvider <Bytes>();

            var fromAddress  = new Address("hxbe258ceb872e08851f1f59694dac2558708ece11");
            var scoreAddress = new Address("cx982aed605b065b50a2a639c1ea5710ef5a0501a9");
            var toAddress    = new Address("hx5bfdb090f43a808005ffc27c25b213145e80b7cd");

            // ReSharper disable once ObjectCreationAsStatement
            new Address("hxbe258ceb872e08851f1f59694dac2558708ece11");

            var @params = new RpcObject.Builder()
                          .Put("_to", new RpcValue(toAddress))
                          .Put("_value", new RpcValue(BigInteger.Parse("1")))
                          .Build();

            var transaction = TransactionBuilder.CreateBuilder()
                              .Nid(NetworkId.Main)
                              .From(fromAddress)
                              .To(scoreAddress)
                              .StepLimit(BigInteger.Parse("12345", NumberStyles.HexNumber))
                              .Timestamp(BigInteger.Parse("563a6cf330136", NumberStyles.HexNumber))
                              .Nonce(BigInteger.Parse("1"))
                              .Call("transfer")
                              .Params(@params)
                              .Build();

            IWallet wallet            = KeyWallet.Load(new Bytes(SampleKeys.PrivateKeyString));
            var     signedTransaction = new SignedTransaction(transaction, wallet);

            var iconService = new IconService(provider.Object);
            await iconService.SendTransaction(signedTransaction);

            const string expected = "ITpAdh3bUV4Xj0WQIPlfhv+ppA+K+LtXqaYMjnt8pMwV7QJwyZNQuhH2ljdGPR+31wG+GpKEdOEuqeYOwODBVwA=";

            provider.Verify(x =>
                            x.SendRequestAsync(It.Is <Request>(request => RequestCheckTestTransferTokenTransaction(request, expected)),
                                               It.IsAny <IRpcConverter <Bytes> >()), Times.Once);
        }
 public SignVerificationTest()
 {
     wallet = KeyWallet.Load(new Bytes(SampleKeys.PrivateKeyString));
 }
Beispiel #12
0
 public SignedTransactionTest()
 {
     wallet = KeyWallet.Load(new Bytes(SampleKeys.PrivateKeyString));
 }