def test_add_control_by_private_key(self): wm = WalletManager() wm.create_wallet_file(path) try: wm.open_wallet(path) private_key = utils.get_random_bytes(32) hex_private_key = private_key.hex() public_key = Signature.ec_get_public_key_by_private_key( private_key, Curve.P256) hex_public_key = public_key.hex() identity = wm.create_identity('label', password) wm.write_wallet() wm.add_control_by_hex_private_key(identity.ont_id, password, hex_private_key) ctrl_acct = wm.get_control_account_by_index( identity.ont_id, 1, password) acct_private_key = ctrl_acct.get_private_key_hex() acct_public_key = ctrl_acct.get_public_key_hex() self.assertEqual(hex_public_key, acct_public_key) self.assertEqual(hex_private_key, acct_private_key) ctrl_len_1 = len(wm.wallet_in_mem.identities[0].controls) ctrl_len_2 = len(wm.wallet_file.identities[0].controls) self.assertEqual(ctrl_len_1, ctrl_len_2 + 1) finally: wm.del_wallet_file()
def test_open_wallet(self): wm = WalletManager() path = os.path.join(os.getcwd(), 'test.json') wm.open_wallet(path) self.assertEqual(wm.__dict__['scheme'], SignatureScheme.SHA256withECDSA) wm.write_wallet() os.remove(path)
def test_create_write(self): wm = WalletManager() path = os.path.join(os.getcwd(), 'test.json') wm.open_wallet(path) password = '******' label = 'label' wm.create_account(label, password) wm.create_identity(label, password) wm.write_wallet() os.remove(path)
def test_create_identity_from_pri_key(self): wm = WalletManager() path = os.path.join(os.getcwd(), 'test.json') wm.open_wallet(path) private_key = '75de8489fcb2dcaf2ef3cd607feffde18789de7da129b5e97c81e001793cb7cf' ide = wm.create_identity_from_private_key("ide", "1", private_key) self.assertEqual(ide.label, 'ide') self.assertEqual(ide.ont_id, 'did:ont:AazEvfQPcQ2GEFFPLF1ZLwQ7K5jDn81hve') wm.write_wallet() os.remove(path)
def test_get_accounts(self): wm = WalletManager() path = os.path.join(os.getcwd(), 'test.json') wm.open_wallet(path) password = '******' size = 5 for i in range(size): wm.create_account('', password) accounts = wm.get_wallet().get_accounts() self.assertEqual(len(accounts), size) wm.write_wallet() os.remove(path)
def test_import_identity(self): wm = WalletManager() path = os.path.join(os.getcwd(), 'test.json') wm.open_wallet(path) salt = util.get_random_str(16) private_key = '75de8489fcb2dcaf2ef3cd607feffde18789de7da129b5e97c81e001793cb7cf' acct = Account(private_key) enpri = acct.export_gcm_encrypted_private_key("1", salt, 16384) wm.import_identity("label2", enpri, "1", salt, acct.get_address_base58()) wm.write_wallet() os.remove(path)
def test_create_write(self): wm = WalletManager() path = os.path.join(os.getcwd(), 'test.json') wm.open_wallet(path) password = util.get_random_str(10) label = 'label' wm.create_account(label, password) default_account = wm.get_default_account() self.assertEqual(label, default_account.label) wm.create_identity(label, password) default_identity = wm.get_default_identity() self.assertEqual(label, default_identity.label) wm.write_wallet() os.remove(path)
def import_account(project_path, private_key): wallet_path_dir = os.path.join(project_path, 'wallet') # TODO: the file name 'wallet.json' should be custom defined here wallet_path = os.path.join(wallet_path_dir, 'wallet.json') if not os.path.exists(wallet_path): os.makedirs(wallet_path_dir) wallet_manager = WalletManager() wallet_manager.open_wallet(wallet_path) pwd = Account.get_password() try: wallet_manager.create_account_from_private_key('', pwd, private_key) wallet_manager.write_wallet() except ValueError as e: print('import account error:') print(e.args)
def test_get_default_account(self): wm = WalletManager() path = os.path.join(os.getcwd(), 'test.json') wm.open_wallet(path) password = '******' size = 3 for i in range(size): wm.create_account('', password) accounts = wm.get_wallet().get_accounts() self.assertEqual(len(accounts), size) for acct in accounts: wm.get_wallet().set_default_account_by_address(acct.address) default_account = wm.get_default_account() self.assertEqual(default_account.address, acct.address) wm.write_wallet() os.remove(path)
def test_create_write(self): wm = WalletManager() wm.create_wallet_file(path) try: wm.open_wallet(path) random_password = utils.get_random_hex_str(10) label = 'label' wm.create_account(random_password, label) default_account = wm.get_default_account_data() self.assertEqual(label, default_account.label) wm.create_identity(random_password, label) default_identity = wm.get_default_identity() self.assertEqual(default_identity.label, label) wm.write_wallet() finally: wm.del_wallet_file()
def test_set_default_account_by_index(self): wm = WalletManager() path = os.path.join(os.getcwd(), 'test.json') wm.open_wallet(path) password = '******' size = 3 for i in range(size): wm.create_account('', password) accounts = wm.get_wallet().get_accounts() self.assertEqual(len(accounts), size) self.assertRaises(SDKException, wm.get_wallet().set_default_account_by_index, size) for index in range(size): wm.get_wallet().set_default_account_by_index(index) default_address = wm.get_wallet().get_default_account_address() self.assertEqual(accounts[index].address, default_address) wm.write_wallet() os.remove(path)
def test_set_default_identity_by_index(self): wm = WalletManager() path = os.path.join(os.getcwd(), 'test.json') wm.open_wallet(path) size = 3 for i in range(size): private_key = util.get_random_str(64) wm.create_identity_from_private_key("ide", str(i), private_key) identities = wm.get_wallet().get_identities() self.assertEqual(len(identities), size) self.assertRaises(SDKException, wm.get_wallet().set_default_identity_by_index, size) for index in range(size): wm.get_wallet().set_default_identity_by_index(index) default_identity = wm.get_default_identity() self.assertEqual(identities[index], default_identity) wm.write_wallet() os.remove(path)
def test_import_identity(self): wm = WalletManager() path = os.path.join(os.getcwd(), 'test.json') wm.open_wallet(path) private_key = util.get_random_str(64) acct = Account(private_key) password = util.get_random_str(10) salt = util.get_random_str(16) scrypt_n = 16384 encrypted_private_key = acct.export_gcm_encrypted_private_key( password, salt, scrypt_n) label = 'label' b58_address = acct.get_address_base58() wm.import_identity(label, encrypted_private_key, password, salt, b58_address) identity = wm.get_default_identity() self.assertEqual(label, identity.label) wm.write_wallet() os.remove(path)
def test_deep_copy(self): wm = WalletManager() wm.create_wallet_file(path) try: wm.open_wallet(path) for index in range(5): wm.create_account(password, f'label{index}') wm.write_wallet() self.assertEqual(len(wm.wallet_file.identities), len(wm.wallet_in_mem.identities)) self.assertEqual(len(wm.wallet_file.accounts), len(wm.wallet_in_mem.accounts)) self.assertNotEqual(id(wm.wallet_file), id(wm.wallet_in_mem)) self.assertNotEqual(id(wm.wallet_file.identities), id(wm.wallet_in_mem.identities)) self.assertNotEqual(id(wm.wallet_file.accounts), id(wm.wallet_in_mem.accounts)) self.assertNotEqual(id(wm.wallet_file.scrypt), id(wm.wallet_in_mem.scrypt)) finally: wm.del_wallet_file()
def test_set_default_identity_by_ont_id(self): wm = WalletManager() path = os.path.join(os.getcwd(), 'test.json') wm.open_wallet(path) size = 3 for i in range(size): private_key = util.get_random_str(64) wm.create_identity_from_private_key("ide", str(i), private_key) identities = wm.get_wallet().get_identities() self.assertEqual(len(identities), size) self.assertRaises(SDKException, wm.get_wallet().set_default_identity_by_ont_id, '') ont_id_list = list() for identity in wm.get_wallet().identities: ont_id_list.append(identity.ont_id) for index in range(size * 5): rand_ont_id = random.choice(ont_id_list) wm.get_wallet().set_default_identity_by_ont_id(rand_ont_id) default_identity = wm.get_default_identity() self.assertEqual(rand_ont_id, default_identity.ont_id) wm.write_wallet() os.remove(path)
def generateAccount(label, password, walletPath, walletName="wallet.json"): wm = WalletManager() wm.create_account(label, password) wm.open_wallet(os.path.join(walletPath, walletName)) wm.write_wallet()