11import warnings
22import argcomplete
33import unittest
4- import unittest .mock as mock
5- import shutil
64import os
75
8- from snet .cli .commands .commands import BlockchainCommand
9-
106with warnings .catch_warnings ():
117 # Suppress the eth-typing package`s warnings related to some new networks
128 warnings .filterwarnings ("ignore" , "Network .* does not have a valid ChainId. eth-typing should be "
1511
1612from snet .cli .config import Config
1713
14+ INFURA_KEY = os .environ .get ("SNET_TEST_INFURA_KEY" )
15+ PRIVATE_KEY = os .environ .get ("SNET_TEST_WALLET_PRIVATE_KEY" )
16+ ADDR = os .environ .get ("SNET_TEST_WALLET_ADDRESS" )
17+ INFURA = f"https://sepolia.infura.io/v3/{ INFURA_KEY } "
18+ IDENTITY = "sepolia"
19+
1820
1921class StringOutput :
2022 def __init__ (self ):
@@ -32,102 +34,18 @@ def execute(args_list, parser, conf):
3234 except TypeError :
3335 args = parser .parse_args (argv + ["-h" ])
3436 f = StringOutput ()
35- getattr (args .cmd (conf , args , out_f = f ), args .fn )()
37+ getattr (args .cmd (conf , args , out_f = f ), args .fn )()
3638 return f .text
3739 except Exception as e :
3840 raise
3941
42+
4043class BaseTest (unittest .TestCase ):
4144 def setUp (self ):
4245 self .conf = Config ()
4346 self .parser = arguments .get_root_parser (self .conf )
4447 argcomplete .autocomplete (self .parser )
4548
4649
47- class TestCommands (BaseTest ):
48- def test_balance_output (self ):
49- result = execute (["account" , "balance" ], self .parser , self .conf )
50- assert len (result .split ("\n " )) >= 4
51-
52- def test_balance_address (self ):
53- result = execute (["account" , "balance" ], self .parser , self .conf )
54- assert result .split ("\n " )[0 ].split ()[1 ] == "0xe5D1fA424DE4689F9d2687353b75D7a8987900fD"
55-
56- class TestDepositWithdraw (BaseTest ):
57- def setUp (self ):
58- super ().setUp ()
59- self .balance_1 : int
60- self .balance_2 : int
61- self .amount = 0.1
62-
63- def test_deposit (self ):
64- result = execute (["account" , "balance" ], self .parser , self .conf )
65- self .balance_1 = float (result .split ("\n " )[3 ].split ()[1 ])
66- execute (["account" , "deposit" , f"{ self .amount } " , "-y" , "-q" ], self .parser , self .conf )
67- result = execute (["account" , "balance" ], self .parser , self .conf )
68- self .balance_2 = float (result .split ("\n " )[3 ].split ()[1 ])
69- assert self .balance_2 == self .balance_1 + self .amount
70-
71- def test_withdraw (self ):
72- result = execute (["account" , "balance" ], self .parser , self .conf )
73- self .balance_1 = float (result .split ("\n " )[3 ].split ()[1 ])
74- execute (["account" , "withdraw" , f"{ self .amount } " , "-y" , "-q" ], self .parser , self .conf )
75- result = execute (["account" , "balance" ], self .parser , self .conf )
76- self .balance_2 = float (result .split ("\n " )[3 ].split ()[1 ])
77- assert self .balance_2 == self .balance_1 - self .amount
78-
79-
80- class TestGenerateLibrary (BaseTest ):
81- def setUp (self ):
82- super ().setUp ()
83- self .path = './temp_files'
84- self .org_id = '26072b8b6a0e448180f8c0e702ab6d2f'
85- self .service_id = 'Exampleservice'
86-
87- def test_generate (self ):
88- execute (["sdk" , "generate-client-library" , self .org_id , self .service_id , self .path ], self .parser , self .conf )
89- assert os .path .exists (f'{ self .path } /{ self .org_id } /{ self .service_id } /python/' )
90-
91- def tearDown (self ):
92- shutil .rmtree (self .path )
93-
94-
95- class TestEncryptionKey (BaseTest ):
96- def setUp (self ):
97- super ().setUp ()
98- self .key = "1234567890123456789012345678901234567890123456789012345678901234"
99- self .password = "some_pass"
100- self .name = "some_name"
101- self .default_name = "default_name"
102- result = execute (["identity" , "list" ], self .parser , self .conf )
103- if self .default_name not in result :
104- execute (["identity" , "create" , self .default_name , "key" , "--private-key" , self .key , "-de" ],
105- self .parser ,
106- self .conf )
107-
108- def test_1_create_identity_with_encryption_key (self ):
109- with mock .patch ('getpass.getpass' , return_value = self .password ):
110- execute (["identity" , "create" , self .name , "key" , "--private-key" , self .key ],
111- self .parser ,
112- self .conf )
113- result = execute (["identity" , "list" ], self .parser , self .conf )
114- assert self .name in result
115-
116- def test_2_get_encryption_key (self ):
117- with mock .patch ('getpass.getpass' , return_value = self .password ):
118- execute (["identity" , self .name ], self .parser , self .conf )
119- cmd = BlockchainCommand (self .conf , self .parser .parse_args (['session' ]))
120- enc_key = cmd .config .get_session_field ("private_key" )
121- res_key = cmd ._get_decrypted_secret (enc_key )
122- assert res_key == self .key
123-
124- def test_3_delete_identity (self ):
125- with mock .patch ('getpass.getpass' , return_value = self .password ):
126- execute (["identity" , self .default_name ], self .parser , self .conf )
127- execute (["identity" , "delete" , self .name ], self .parser , self .conf )
128- result = execute (["identity" , "list" ], self .parser , self .conf )
129- assert self .name not in result
130-
131-
13250if __name__ == "__main__" :
13351 unittest .main ()
0 commit comments