Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unit Test for Wallets Module #1018

Merged
merged 211 commits into from
Aug 16, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
211 commits
Select commit Hold shift + click to select a range
53e0ccf
testDemo
Jul 6, 2019
877ff70
Merge remote-tracking branch 'upstream/master'
eryeer Jul 8, 2019
ad5e1a9
add dll lib
eryeer Jul 8, 2019
9d70536
add dbsnapshot dispose
eryeer Jul 8, 2019
a61cac3
Merge remote-tracking branch 'upstream/master'
eryeer Jul 9, 2019
71675aa
test get blocks in levelDBStore
eryeer Jul 9, 2019
c55415b
add levelDBStore test funcs
eryeer Jul 9, 2019
d3e55d8
fix levelDBStore funcs
eryeer Jul 9, 2019
e440d60
add DbCache addInternal
eryeer Jul 9, 2019
7598dfa
differ db path
Jul 9, 2019
2ea1f86
space
Jul 9, 2019
ada729a
Merge t push
eryeer Jul 10, 2019
e581d8a
fix delete internal test
eryeer Jul 10, 2019
53e155f
add test getInternal tryGetInternal move libleveldb.dll
eryeer Jul 10, 2019
9deaa7d
Merge pull request #1 from eryeer/fix/db-path
eryeer Jul 10, 2019
7c6b9a1
add dbCache method test
eryeer Jul 10, 2019
0f50d07
Merge branch 'master' of github.com:eryeer/neoUT
eryeer Jul 10, 2019
86ed33f
add store test
eryeer Jul 10, 2019
cf4e202
add cache unit tests
Jul 10, 2019
1190766
add cache unit tests
Jul 10, 2019
ec9f488
Merge branch 'master' of github.com:eryeer/neoUT
Jul 10, 2019
235321f
up readonly max_capacity
Jul 10, 2019
c6df5ea
Merge remote-tracking branch 'upstream/master'
eryeer Jul 11, 2019
801165a
Merge branch 'master' of github.com:eryeer/neoUT
eryeer Jul 11, 2019
7fb81c4
fix leveldbexception
eryeer Jul 11, 2019
18b3562
fix comment on UT_Cache
eryeer Jul 11, 2019
bbf66fe
format
Jul 11, 2019
299401a
fix multithread test problem
eryeer Jul 11, 2019
f0214f8
up cache
Jul 11, 2019
c97b260
Merge branch 'master' of github.com:eryeer/neoUT
Jul 11, 2019
137672c
update travis config
eryeer Jul 11, 2019
48d2af9
update travis.yml
eryeer Jul 11, 2019
ad5cff3
test DbMetaDataCache
Jul 11, 2019
e8878d4
fix db directory
Jul 11, 2019
08fe898
Merge pull request #2 from eryeer/test/leveldb.dbmetadatecache
Jul 11, 2019
a16d40b
format and update travis for maxos
eryeer Jul 11, 2019
de3f249
Merge branch 'master' of github.com:eryeer/neoUT
eryeer Jul 11, 2019
0ec6a4b
Merge branch 'master' into master
vncoelho Jul 11, 2019
041e800
Merge branch 'master' into master
vncoelho Jul 11, 2019
4d13f39
fix mac env travis
eryeer Jul 12, 2019
cceceef
2019/7/12 10:34
lmy0930 Jul 12, 2019
888df61
Merge branch 'master' of https://github.com/eryeer/neoUT
lmy0930 Jul 12, 2019
3b5697d
2019/7/12 11:01
lmy0930 Jul 12, 2019
f379b9f
remove commented line
eryeer Jul 12, 2019
9ebc18c
test BigDecimal
Jul 12, 2019
205fc01
fix format and csproj
eryeer Jul 12, 2019
f9de384
Merge branch 'ut' of github.com:eryeer/neoUT into ut
eryeer Jul 12, 2019
0baf66b
Merge pull request #3 from eryeer/ut
eryeer Jul 12, 2019
984ddd9
rm coverage.opencover.xml
eryeer Jul 12, 2019
ea3d8be
update method name
eryeer Jul 12, 2019
4a3279c
Merge pull request #4 from eryeer/ut
eryeer Jul 12, 2019
115008e
add UT_P_Helper
Jul 12, 2019
9c23106
modify UT_P_Helper
Jul 12, 2019
583db9d
modify UT_P_helper
Jul 12, 2019
f30b58d
Clean ut
shargon Jul 12, 2019
d11b639
test Base58 & BloomFilter
Jul 12, 2019
4e014ab
Update UT_Cache.cs
shargon Jul 12, 2019
82e8754
Correct Typo
Jul 12, 2019
1d65676
test JsonArray
eryeer Jul 12, 2019
925496f
update namespace
eryeer Jul 12, 2019
f493318
Merge pull request #5 from shargon/clean-ut
eryeer Jul 12, 2019
091d655
update namespace
eryeer Jul 12, 2019
455d436
update format
eryeer Jul 12, 2019
4d53e58
update format
eryeer Jul 12, 2019
93c69f4
Merge branch 'ut' of github.com:eryeer/neoUT into ut
Jul 12, 2019
63aecea
Merge branch 'master' into master
eryeer Jul 14, 2019
9d37be7
Merge remote-tracking branch 'upstream/master' into ut
eryeer Jul 15, 2019
299093b
organise folder structure
eryeer Jul 15, 2019
007165e
add UT_JString
Jul 15, 2019
6aa995b
Merge branch 'ut' of github.com:eryeer/neoUT into ut
Jul 15, 2019
2aa85b6
test JBoolean JNumber & JObject
eryeer Jul 15, 2019
d7a8174
Merge branch 'ut' of github.com:eryeer/neoUT into ut
eryeer Jul 15, 2019
b8fb5bf
Merge remote-tracking branch 'upstream/master'
eryeer Jul 16, 2019
6c279a0
Merge remote-tracking branch 'upstream/master' into ut
eryeer Jul 16, 2019
57f740b
2019/7/16 10:30
lmy0930 Jul 16, 2019
d6dce91
Merge branch 'ut' of https://github.com/eryeer/neoUT into ut
lmy0930 Jul 16, 2019
a31d6ac
fix timestamp
eryeer Jul 16, 2019
609ba6f
test ECDsa and Crypto
Jul 16, 2019
571938e
test OrderedDictionary & complete IO.Json tests
eryeer Jul 16, 2019
5a5c3d7
Merge branch 'ut' of github.com:eryeer/neoUT into ut
eryeer Jul 16, 2019
1ca84d9
2019/7/16 17:33
lmy0930 Jul 16, 2019
e5c1783
Merge branch 'ut' of https://github.com/eryeer/neoUT into ut
lmy0930 Jul 16, 2019
c8402ac
test FIFOSet
eryeer Jul 16, 2019
00d2579
Merge branch 'ut' of github.com:eryeer/neoUT into ut
eryeer Jul 16, 2019
3369ca5
add CloneCache and DataCache unit tests
Jul 16, 2019
85404a6
Merge branch 'ut' of github.com:eryeer/neoUT into ut
Jul 16, 2019
97ec014
Merge remote-tracking branch 'upstream/master'
eryeer Jul 17, 2019
5570a5b
Merge remote-tracking branch 'upstream/master' into ut
eryeer Jul 17, 2019
d094af9
fix namespace
eryeer Jul 17, 2019
4b753ef
add UT_Cryptography_Helper
Jul 17, 2019
bd4ee5a
Merge branch 'ut' of github.com:eryeer/neoUT into ut
Jul 17, 2019
327b036
format UT_CloneCache and UT_DataCache
Jul 17, 2019
b693471
add UT_DataCache.GetAndChange unit test
Jul 17, 2019
6975292
Merge remote-tracking branch 'upstream/master'
eryeer Jul 18, 2019
2ca6662
Merge remote-tracking branch 'upstream/master' into ut
eryeer Jul 18, 2019
2fffcaf
update namespace
eryeer Jul 18, 2019
e220a28
remove comment code
Jul 18, 2019
c4d4acd
Merge remote-tracking branch 'upstream/master'
eryeer Jul 19, 2019
a071acb
Merge remote-tracking branch 'upstream/master' into ut
eryeer Jul 19, 2019
7ad2e6e
delete Persistence part
eryeer Jul 19, 2019
269085b
2019/7/19 11:07
lmy0930 Jul 19, 2019
88a7dd9
Merge branch 'ut' of https://github.com/eryeer/neoUT into ut
lmy0930 Jul 19, 2019
0b8f79a
Fix Base58 Test
Jul 19, 2019
8403ceb
Merge branch 'ut' of https://github.com/eryeer/neoUT into ut
lmy0930 Jul 19, 2019
a752eb4
2019/7/19 11:33
lmy0930 Jul 19, 2019
9bd5702
update IOHelper exception assert
eryeer Jul 19, 2019
b66712d
Merge branch 'ut' of github.com:eryeer/neoUT into ut
eryeer Jul 19, 2019
2b06d6c
2019/7/19 14:22
lmy0930 Jul 19, 2019
61ded58
format IOHelper
eryeer Jul 19, 2019
de75342
merge conflict of IOHelper
eryeer Jul 19, 2019
db06a47
review IO.Wrapper
eryeer Jul 19, 2019
336c3c3
review Wallets.SQLite UT
eryeer Jul 19, 2019
e4a6fa6
Test ECFieldElement ECPoint
Jul 19, 2019
4234650
Merge branch 'ut' of https://github.com/eryeer/neoUT into ut
Jul 19, 2019
935fec4
refactor package
Jul 19, 2019
c87fd50
format ECDsa
eryeer Jul 19, 2019
3d36710
merge conflict
eryeer Jul 19, 2019
599d077
update namespace
eryeer Jul 19, 2019
61dd25a
Code fix
Jul 19, 2019
87526bd
Merge branch 'ut' of https://github.com/eryeer/neoUT into ut
Jul 19, 2019
ae5129c
review cache
Jul 19, 2019
72254eb
modify UT_JString
Jul 19, 2019
aeb5869
fomat
eryeer Jul 19, 2019
fddce6a
merge confilct
eryeer Jul 19, 2019
6232806
format UT_ECPoint
Jul 19, 2019
5169605
resolve and format UT_Ecdsa
Jul 19, 2019
a48a0c3
using Actin replace with try-catch
Jul 19, 2019
cc2dcac
add UT_CloneMetaCache and UT_MetaDataCache
Jul 19, 2019
5856bc6
Merge remote-tracking branch 'upstream/master'
eryeer Jul 19, 2019
0eb76c8
merge
eryeer Jul 19, 2019
6c44ceb
update namespace
eryeer Jul 19, 2019
0343b21
Merge branch 'ut' of github.com:eryeer/neoUT into ut
eryeer Jul 19, 2019
714123d
format UT_DataCache.cs
Jul 21, 2019
2b4b1d3
Merge branch 'ut' of github.com:eryeer/neoUT into ut
Jul 21, 2019
3010a2c
Merge remote-tracking branch 'upstream/master'
eryeer Jul 22, 2019
ef36ac0
Merge remote-tracking branch 'upstream/master' into ut
eryeer Jul 22, 2019
86696a1
Code Fix
Jul 22, 2019
bf0672a
Merge branch 'ut' of https://github.com/eryeer/neoUT into ut
Jul 22, 2019
47f3afe
merge conflict
eryeer Jul 22, 2019
958f319
Merge branch 'ut' of github.com:eryeer/neoUT into ut
eryeer Jul 22, 2019
d454960
format
eryeer Jul 22, 2019
1551d6a
update csproj
eryeer Jul 22, 2019
2ff4dc8
Code fix for UT_ECFieldElement and UT_ECPoint
Jul 22, 2019
2763eeb
Merge branch 'ut' of https://github.com/eryeer/neoUT into ut
Jul 22, 2019
5d77ca9
Code fix
Jul 22, 2019
3f36346
Merge branch 'ut' of github.com:eryeer/neoUT into ut
eryeer Jul 22, 2019
bce3f94
format
eryeer Jul 22, 2019
4f87abc
update travis
eryeer Jul 22, 2019
7150321
delete deleteFiles
eryeer Jul 22, 2019
93ee3fa
Merge pull request #6 from eryeer/ut
eryeer Jul 22, 2019
2044b11
fix path and comment
eryeer Jul 22, 2019
d396d23
Merge remote-tracking branch 'upstream/master'
eryeer Jul 22, 2019
54679e4
update travis
eryeer Jul 22, 2019
dbb7b07
Merge remote-tracking branch 'upstream/master'
eryeer Jul 23, 2019
0581b4a
delete test ToTimeStamp
eryeer Jul 23, 2019
143ab3d
Merge branch 'master' into master
eryeer Jul 23, 2019
d382be8
format UT_*Cache
Jul 23, 2019
ced2ee6
Merge pull request #7 from eryeer/ut_io_cache
eryeer Jul 23, 2019
f8c8597
update format
eryeer Jul 23, 2019
d90a850
Merge branch 'master' of github.com:eryeer/neoUT
eryeer Jul 23, 2019
1808a54
fomat
eryeer Jul 23, 2019
0f362c2
use hex extensions in Cryptography_Helper
Jul 23, 2019
e2a199d
Merge branch 'master' into master
eryeer Jul 24, 2019
9970a0a
Merge pull request #8 from ShawnYun/master
eryeer Jul 24, 2019
124e8f0
remove reflection
eryeer Jul 24, 2019
6a517e7
optimization of UT_DataCache
eryeer Jul 24, 2019
b152a49
update namespace
eryeer Jul 24, 2019
547279d
modify TestSha256
eryeer Jul 24, 2019
630f942
Merge branch 'master' into master
eryeer Jul 25, 2019
29dc9c1
Merge remote-tracking branch 'upstream/master'
eryeer Jul 29, 2019
91896fb
update UT in crypto module
eryeer Jul 29, 2019
8fd545f
Rename UT_Scrypt.cs to UT_SCrypt.cs
eryeer Jul 29, 2019
1259556
format
eryeer Jul 29, 2019
2c16837
update UT_Murmur3
eryeer Jul 29, 2019
918cfdb
Merge branch 'master' into master
eryeer Jul 29, 2019
a4ac0ca
Merge remote-tracking branch 'upstream/master'
eryeer Jul 30, 2019
8b2da2e
Merge remote-tracking branch 'upstream/master'
eryeer Jul 31, 2019
78558ad
Merge remote-tracking branch 'upstream/master'
eryeer Aug 1, 2019
49d1b23
Merge remote-tracking branch 'upstream/master'
eryeer Aug 5, 2019
9edf9a6
update IO module test
eryeer Aug 5, 2019
4ed359e
delete empty line
eryeer Aug 5, 2019
78c16f7
changename
eryeer Aug 5, 2019
40f1f60
delete empty line
eryeer Aug 5, 2019
5e8aa8c
Merge remote-tracking branch 'upstream/master'
eryeer Aug 5, 2019
492eed0
revert commit
eryeer Aug 6, 2019
25e52e6
Merge remote-tracking branch 'upstream/master'
eryeer Aug 6, 2019
42ac8ec
Merge branch 'master' into master
eryeer Aug 7, 2019
d21abd6
Merge remote-tracking branch 'upstream/master'
eryeer Aug 8, 2019
bf25c0a
Merge remote-tracking branch 'upstream/master'
eryeer Aug 9, 2019
4a7c443
Merge remote-tracking branch 'upstream/master'
eryeer Aug 12, 2019
7df2760
add wallet test
eryeer Aug 12, 2019
46cfab8
update testUtil
eryeer Aug 12, 2019
91ab002
delete empty line
eryeer Aug 12, 2019
4d10647
Update UT_NEP6Wallet.cs
shargon Aug 12, 2019
875b3c9
Merge branch 'master' into master
shargon Aug 12, 2019
3059a9f
update ut
eryeer Aug 12, 2019
3b3ac50
Optimize wallet test
shargon Aug 12, 2019
1fcd04b
fix
shargon Aug 12, 2019
72e58d1
add change
eryeer Aug 12, 2019
2b05549
Merge pull request #16 from shargon/optimize-wallet-1
eryeer Aug 12, 2019
dd1c09d
Merge branch 'master' into fix_nep6wallet
eryeer Aug 12, 2019
738a10b
fix nep6wallet
Aug 12, 2019
ee00f90
Fix
shargon Aug 12, 2019
72b338a
Optimize
shargon Aug 12, 2019
2fbf61c
Merge branch 'master' into master
eryeer Aug 13, 2019
5519464
fix optimize
eryeer Aug 13, 2019
1d7134f
fix
eryeer Aug 13, 2019
bde75ff
Merge pull request #14 from eryeer/optimize/shargon
shargon Aug 13, 2019
ac44960
Optimize
shargon Aug 13, 2019
78222cf
Merge pull request #17 from shargon/optimize
eryeer Aug 13, 2019
98062ee
Merge branch 'master' into master
vncoelho Aug 16, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 10 additions & 22 deletions neo.UnitTests/Network/P2P/Payloads/UT_Transaction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,24 +84,12 @@ public void Size_Get()
uut.Size.Should().Be(83);
}

private NEP6Wallet GenerateTestWallet()
{
JObject wallet = new JObject();
wallet["name"] = "noname";
wallet["version"] = new System.Version().ToString();
wallet["scrypt"] = new ScryptParameters(0, 0, 0).ToJson();
wallet["accounts"] = new JArray();
wallet["extra"] = null;
wallet.ToString().Should().Be("{\"name\":\"noname\",\"version\":\"0.0\",\"scrypt\":{\"n\":0,\"r\":0,\"p\":0},\"accounts\":[],\"extra\":null}");
return new NEP6Wallet(wallet);
}

[TestMethod]
public void FeeIsMultiSigContract()
{
var store = TestBlockchain.GetStore();
var walletA = GenerateTestWallet();
var walletB = GenerateTestWallet();
var walletA = TestUtils.GenerateTestWallet();
var walletB = TestUtils.GenerateTestWallet();
var snapshot = store.GetSnapshot();

using (var unlockA = walletA.Unlock("123"))
Expand Down Expand Up @@ -188,7 +176,7 @@ public void FeeIsMultiSigContract()
[TestMethod]
public void FeeIsSignatureContractDetailed()
{
var wallet = GenerateTestWallet();
var wallet = TestUtils.GenerateTestWallet();
var snapshot = store.GetSnapshot();

using (var unlock = wallet.Unlock("123"))
Expand Down Expand Up @@ -303,7 +291,7 @@ public void FeeIsSignatureContractDetailed()
[TestMethod]
public void FeeIsSignatureContract_TestScope_Global()
{
var wallet = GenerateTestWallet();
var wallet = TestUtils.GenerateTestWallet();
var snapshot = store.GetSnapshot();

// no password on this wallet
Expand Down Expand Up @@ -394,7 +382,7 @@ public void FeeIsSignatureContract_TestScope_Global()
[TestMethod]
public void FeeIsSignatureContract_TestScope_CurrentHash_GAS()
{
var wallet = GenerateTestWallet();
var wallet = TestUtils.GenerateTestWallet();
var snapshot = store.GetSnapshot();

// no password on this wallet
Expand Down Expand Up @@ -486,7 +474,7 @@ public void FeeIsSignatureContract_TestScope_CurrentHash_GAS()
[TestMethod]
public void FeeIsSignatureContract_TestScope_CalledByEntry_Plus_GAS()
{
var wallet = GenerateTestWallet();
var wallet = TestUtils.GenerateTestWallet();
var snapshot = store.GetSnapshot();

// no password on this wallet
Expand Down Expand Up @@ -581,7 +569,7 @@ public void FeeIsSignatureContract_TestScope_CalledByEntry_Plus_GAS()
[TestMethod]
public void FeeIsSignatureContract_TestScope_CurrentHash_NEO_FAULT()
{
var wallet = GenerateTestWallet();
var wallet = TestUtils.GenerateTestWallet();
var snapshot = store.GetSnapshot();

// no password on this wallet
Expand Down Expand Up @@ -639,7 +627,7 @@ public void FeeIsSignatureContract_TestScope_CurrentHash_NEO_FAULT()
[TestMethod]
public void FeeIsSignatureContract_TestScope_CurrentHash_NEO_GAS()
{
var wallet = GenerateTestWallet();
var wallet = TestUtils.GenerateTestWallet();
var snapshot = store.GetSnapshot();

// no password on this wallet
Expand Down Expand Up @@ -736,7 +724,7 @@ public void FeeIsSignatureContract_TestScope_CurrentHash_NEO_GAS()
[TestMethod]
public void FeeIsSignatureContract_TestScope_NoScopeFAULT()
{
var wallet = GenerateTestWallet();
var wallet = TestUtils.GenerateTestWallet();
var snapshot = store.GetSnapshot();

// no password on this wallet
Expand Down Expand Up @@ -966,7 +954,7 @@ public void FeeIsSignatureContract_TestScope_Global_Default()
Cosigner cosigner = new Cosigner();
cosigner.Scopes.Should().Be(WitnessScope.Global);

var wallet = GenerateTestWallet();
var wallet = TestUtils.GenerateTestWallet();
var snapshot = store.GetSnapshot();

// no password on this wallet
Expand Down
38 changes: 36 additions & 2 deletions neo.UnitTests/TestUtils.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
using Neo.IO;
using FluentAssertions;
using Neo.IO;
using Neo.IO.Json;
using Neo.Ledger;
using Neo.Network.P2P.Payloads;
using Neo.SmartContract.Manifest;
using Neo.VM;
using Neo.Wallets.NEP6;
using System;
using System.IO;

Expand All @@ -21,6 +26,18 @@ public static byte[] GetByteArray(int length, byte firstByte)
return array;
}

public static NEP6Wallet GenerateTestWallet()
{
JObject wallet = new JObject();
wallet["name"] = "noname";
wallet["version"] = new System.Version().ToString();
wallet["scrypt"] = new ScryptParameters(0, 0, 0).ToJson();
wallet["accounts"] = new JArray();
wallet["extra"] = null;
wallet.ToString().Should().Be("{\"name\":\"noname\",\"version\":\"0.0\",\"scrypt\":{\"n\":0,\"r\":0,\"p\":0},\"accounts\":[],\"extra\":null}");
return new NEP6Wallet(wallet);
}

public static Transaction GetTransaction()
{
return new Transaction
Expand All @@ -37,6 +54,15 @@ public static Transaction GetTransaction()
};
}

internal static ContractState GetContract()
{
return new ContractState
{
Script = new byte[] { 0x01, 0x01, 0x01, 0x01 },
Manifest = ContractManifest.CreateDefault(UInt160.Parse("0xa400ff00ff00ff00ff00ff00ff00ff00ff00ff01"))
};
}

public static void SetupHeaderWithValues(Header header, UInt256 val256, out UInt256 merkRootVal, out UInt160 val160, out ulong timestampVal, out uint indexVal, out Witness scriptVal)
{
setupBlockBaseWithValues(header, val256, out merkRootVal, out val160, out timestampVal, out indexVal, out scriptVal);
Expand Down Expand Up @@ -109,5 +135,13 @@ public static T CopyMsgBySerialization<T>(T serializableObj, T newObj) where T :

return newObj;
}

public static void DeleteFile(string file)
{
if (File.Exists(file))
{
File.Delete(file);
}
}
}
}
}
139 changes: 139 additions & 0 deletions neo.UnitTests/Wallets/NEP6/UT_NEP6Account.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
using FluentAssertions;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Neo.Cryptography;
using Neo.IO.Json;
using Neo.SmartContract;
using Neo.Wallets;
using Neo.Wallets.NEP6;

namespace Neo.UnitTests.Wallets.NEP6
{
[TestClass]
public class UT_NEP6Account
{
NEP6Account account;
UInt160 hash;
NEP6Wallet wallet;
private static string nep2;
private static KeyPair keyPair;

[ClassInitialize]
public static void ClassSetup(TestContext context) {
byte[] privateKey = { 0x01,0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
keyPair = new KeyPair(privateKey);
nep2 = keyPair.Export("Satoshi", 0, 0, 0);
}

[TestInitialize]
public void TestSetup()
{
wallet = TestUtils.GenerateTestWallet();
byte[] array1 = { 0x01 };
hash = new UInt160(Crypto.Default.Hash160(array1));
account = new NEP6Account(wallet, hash);
}

[TestMethod]
public void TestConstructorWithNep2Key()
{
account.ScriptHash.Should().Be(hash);
account.Decrypted.Should().BeTrue();
account.HasKey.Should().BeFalse();
}

[TestMethod]
public void TestConstructorWithKeyPair()
{
NEP6Wallet wallet = new NEP6Wallet("a");
byte[] array1 = { 0x01 };
var hash = new UInt160(Crypto.Default.Hash160(array1));
string password = "hello world";
NEP6Account account = new NEP6Account(wallet, hash, keyPair, password);
account.ScriptHash.Should().Be(hash);
account.Decrypted.Should().BeTrue();
account.HasKey.Should().BeTrue();
}

[TestMethod]
public void TestFromJson()
{
JObject json = new JObject();
json["address"] = "ARxgjcH2K1yeW5f5ryuRQNaBzSa9TZzmVS";
json["key"] = null;
json["label"] = null;
json["isDefault"] = true;
json["lock"] = false;
json["contract"] = null;
json["extra"] = null;
NEP6Account account = NEP6Account.FromJson(json, wallet);
account.ScriptHash.Should().Be("ARxgjcH2K1yeW5f5ryuRQNaBzSa9TZzmVS".ToScriptHash());
account.Label.Should().BeNull();
account.IsDefault.Should().BeTrue();
account.Lock.Should().BeFalse();
account.Contract.Should().BeNull();
account.Extra.Should().BeNull();
account.GetKey().Should().BeNull();

json["key"] = "6PYRjVE1gAbCRyv81FTiFz62cxuPGw91vMjN4yPa68bnoqJtioreTznezn";
json["label"] = "label";
account = NEP6Account.FromJson(json, wallet);
account.Label.Should().Be("label");
account.HasKey.Should().BeTrue();
}

[TestMethod]
public void TestGetKey()
{
account.GetKey().Should().BeNull();
wallet.Unlock("Satoshi");
account = new NEP6Account(wallet, hash, nep2);
account.GetKey().Should().Be(keyPair);
}

[TestMethod]
public void TestGetKeyWithString()
{
account.GetKey("Satoshi").Should().BeNull();
account = new NEP6Account(wallet, hash, nep2);
account.GetKey("Satoshi").Should().Be(keyPair);
}

[TestMethod]
public void TestToJson()
{
JObject nep6contract = new JObject();
nep6contract["script"] = "2103603f3880eb7aea0ad4500893925e4a42fea48a44ee6f898a10b3c7ce05d2a267ac";
JObject parameters = new JObject();
parameters["type"] = 0x00;
parameters["name"] = "Sig";
JArray array = new JArray
{
parameters
};
nep6contract["parameters"] = array;
nep6contract["deployed"] = false;
account.Contract = NEP6Contract.FromJson(nep6contract);
JObject json = account.ToJson();
json["address"].Should().Equals("AZk5bAanTtD6AvpeesmYgL8CLRYUt5JQsX");
json["label"].Should().BeNull();
json["isDefault"].ToString().Should().Be("false");
json["lock"].ToString().Should().Be("false");
json["key"].Should().BeNull();
json["contract"]["script"].ToString().Should().Be("\"2103603f3880eb7aea0ad4500893925e4a42fea48a44ee6f898a10b3c7ce05d2a267ac\"");
json["extra"].Should().BeNull();

account.Contract = null;
json = account.ToJson();
json["contract"].Should().BeNull();
}

[TestMethod]
public void TestVerifyPassword()
{
account = new NEP6Account(wallet, hash, nep2);
account.VerifyPassword("Satoshi").Should().BeTrue();
account.VerifyPassword("b").Should().BeFalse();
}
}
}
67 changes: 67 additions & 0 deletions neo.UnitTests/Wallets/NEP6/UT_NEP6Contract.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
using FluentAssertions;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Neo.IO.Json;
using Neo.SmartContract;
using Neo.Wallets.NEP6;

namespace Neo.UnitTests.Wallets.NEP6
{
[TestClass]
public class UT_NEP6Contract
{
[TestMethod]
public void TestFromNullJson()
{
NEP6Contract nep6Contract = NEP6Contract.FromJson(null);
nep6Contract.Should().BeNull();
}

[TestMethod]
public void TestFromJson()
{
string json = "{\"script\":\"2103ef891df4c0b7eefb937d21ea0fb88cde8e0d82a7ff11872b5e7047969dafb4eb68747476aa\"," +
"\"parameters\":[{\"name\":\"signature\",\"type\":\"Signature\"}],\"deployed\":false}";
JObject @object = JObject.Parse(json);

NEP6Contract nep6Contract = NEP6Contract.FromJson(@object);
nep6Contract.Script.Should().BeEquivalentTo("2103ef891df4c0b7eefb937d21ea0fb88cde8e0d82a7ff11872b5e7047969dafb4eb68747476aa".HexToBytes());
nep6Contract.ParameterList.Length.Should().Be(1);
nep6Contract.ParameterList[0].Should().Be(ContractParameterType.Signature);
nep6Contract.ParameterNames.Length.Should().Be(1);
nep6Contract.ParameterNames[0].Should().Be("signature");
nep6Contract.Deployed.Should().BeFalse();
}

[TestMethod]
public void TestToJson()
{
NEP6Contract nep6Contract = new NEP6Contract()
{
Script = new byte[] { 0x00, 0x01 },
ParameterList = new ContractParameterType[] { ContractParameterType.Boolean, ContractParameterType.Integer },
ParameterNames = new string[] { "param1", "param2" },
Deployed = false
};

JObject @object = nep6Contract.ToJson();
JString jString = (JString)@object["script"];
jString.Value.Should().Be(nep6Contract.Script.ToHexString());

JBoolean jBoolean = (JBoolean)@object["deployed"];
jBoolean.Value.Should().BeFalse();

JArray parameters = (JArray)@object["parameters"];
parameters.Count.Should().Be(2);

jString = (JString)(parameters[0]["name"]);
jString.Value.Should().Be("param1");
jString = (JString)(parameters[0]["type"]);
jString.Value.Should().Be(ContractParameterType.Boolean.ToString());

jString = (JString)(parameters[1]["name"]);
jString.Value.Should().Be("param2");
jString = (JString)(parameters[1]["type"]);
jString.Value.Should().Be(ContractParameterType.Integer.ToString());
}
}
}
Loading