Ejemplo n.º 1
0
        public void ActivateAccount(bool invalid, int expectedCode)
        {
            var nonce      = new byte[] { 0x00, 0x01, 0x02, 0x03 };
            var privateKey = new PrivateKey();

            (ActivationKey activationKey, PendingActivationState _) = ActivationKey.Create(privateKey, nonce);
            string invitationCode = invalid ? "invalid_code" : activationKey.Encode();
            var    filePath       = Path.Combine(Path.GetTempPath(), Path.GetTempFileName());
            var    resultCode     = _command.ActivateAccount(invitationCode, ByteUtil.Hex(nonce), filePath);

            Assert.Equal(expectedCode, resultCode);

            if (resultCode == 0)
            {
                var    rawAction = Convert.FromBase64String(File.ReadAllText(filePath));
                var    decoded   = (List)_codec.Decode(rawAction);
                string type      = (Text)decoded[0];
                Assert.Equal(nameof(Nekoyume.Action.ActivateAccount), type);

                Dictionary plainValue = (Dictionary)decoded[1];
                var        action     = new ActivateAccount();
                action.LoadPlainValue(plainValue);
                Assert.Equal(activationKey.PrivateKey.Sign(nonce), action.Signature);
                Assert.Equal(activationKey.PendingAddress, action.PendingAddress);
            }
            else
            {
                Assert.Contains("hexWithSlash seems invalid. [invalid_code]", _console.Error.ToString());
            }
        }