async def test_get_wallet_success(mock_address): address = 'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD' balances = [{'balance': '9.9999200', 'asset_type': 'native'}] sequence = 1 data = {"name": "VW5pdFRlc3Q=", "age": "MzA="} thresholds = {"low_threshold": 1, "med_threshold": 2, "high_threshold": 2} signers = [{ "public_key": "GDBNKZDZMEKXOH3HLWLKFMM7ARN2XVPHWZ7DWBBEV3UXTIGXBTRGJLHF", "weight": 1, "key": "GDBNKZDZMEKXOH3HLWLKFMM7ARN2XVPHWZ7DWBBEV3UXTIGXBTRGJLHF", "type": "ed25519_public_key", }] mock_address.return_value = Wallet(address, balances, sequence, data, signers, thresholds, {}) result = await get_wallet(address) expect_result = { "address": address, "balances": balances, "signers": signers, "thresholds": thresholds, "data": data, "sequence": sequence, "flags": {}, } assert result.__dict__ == expect_result
async def test_generate_escrow_wallet_success(self, mock_build, mock_cal, mock_get_stellar_wallet): mock_build.return_value = ['xdr', 'tx_hash'] mock_cal.return_value = 20 mock_get_stellar_wallet.return_value = Wallet( "1", [], "1", {}, [], {}, {} ) expect = { '@id': reverse('escrow-generate-wallet', escrow_address=self.escrow_address), '@transaction_url': reverse('transaction', transaction_hash='tx_hash'), 'signers': [self.escrow_address, self.creator_address, self.provider_address], 'xdr': 'xdr', 'transaction_hash': 'tx_hash' } result = await generate_escrow_wallet( escrow_address=self.escrow_address, transaction_source_address=self.transaction_source_address, creator_address=self.creator_address, provider_address=self.provider_address, destination_address=self.destination_address, starting_balance=self.starting_balance, expiration_date=self.expiration_date, cost_per_transaction=self.cost_per_transaction ) assert result == expect number_of_transaction = 500 / 50 + 2 mock_cal.assert_called_once_with(8, number_of_transaction)
async def test_generate_merge_transaction_success(self, mock_wallet_detail, mock_merge_transaction, mock_get_stellar_wallet): mock_wallet_detail.return_value = self.wallet_detail mock_merge_transaction.return_value = self.unsigned_xdr, self.tx_hash result = await generate_merge_transaction( self.transaction_source_address, self.wallet_address, self.parties_wallet) mock_get_stellar_wallet.return_value = Wallet("1", [], "1", {}, [], {}, {}) expect = { 'wallet_address': self.wallet_address, 'transaction_url': reverse('transaction', transaction_hash=self.tx_hash), 'signers': self.wallet_detail['signers'], 'xdr': self.unsigned_xdr, 'transaction_hash': self.tx_hash, } assert result == expect
async def test_build_joint_wallet_with_meta(self, mock_builder, mock_get_stellar_wallet): instance = mock_builder.return_value instance.append_create_account_op.return_value = 'test' instance.append_trust_op.return_value = 'test' instance.append_set_options_op.return_value = 'test' instance.append_payment_op.return_value = 'test' instance.gen_xdr.return_value = b'generate-joint-wallet-xdr' instance.te.hash_meta.return_value = b'tx-hash' mock_get_stellar_wallet.return_value = Wallet("1", [], "1", {}, [], {}, {}) transaction_source_address = 'GDSB3JZDYKLYKWZ6NXDPPGPCYJ32ISMTZ2LVF5PYQGY4B4FGNIU2M5BJ' deal_address = 'GAYIEFTTY52HSXAHKTQGK4K4OQRKMD324WCG4O2HGIQUGVTVE6RZW25F' creator = 'GABEAFZ7POCHDY4YCQMRAGVVXEEO4XWYKBY4LMHHJRHTC4MZQBWS6NL6' parties = [{ "address": "GDR3AGPEISYHLHAB6EVP3HD4COCIT7SPGL7WTSIZR3PNBWKFKZGTUJSN", "amount": 10 }, { "address": "GAYIEFTTY52HSXAHKTQGK4K4OQRKMD324WCG4O2HGIQUGVTVE6RZW25F", "amount": 15 }] meta = {"expiration_date": "2018-05-15"} result_xdr, result_hash = await build_joint_wallet( transaction_source_address, deal_address, parties, creator, 5, meta) assert result_xdr == 'generate-joint-wallet-xdr' assert result_hash == '74782d68617368'
async def test_get_signers(self, mock_address): signers = [ { 'public_key': 'GDBNKZDZMEKXOH3HLWLKFMM7ARN2XVPHWZ7DWBBEV3UXTIGXBTRGJLHF', 'weight': 1, 'key': 'GDBNKZDZMEKXOH3HLWLKFMM7ARN2XVPHWZ7DWBBEV3UXTIGXBTRGJLHF', 'type': 'ed25519_public_key', }, { 'public_key': 'GDHH7XOUKIWA2NTMGBRD3P245P7SV2DAANU2RIONBAH6DGDLR5WISZZI', 'weight': 1, 'key': 'GDHH7XOUKIWA2NTMGBRD3P245P7SV2DAANU2RIONBAH6DGDLR5WISZZI', 'type': 'ed25519_public_key', }, { 'public_key': 'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD', 'weight': 0, 'key': 'GBVJJJH6VS5NNM5B4FZ3JQHWN6ANEAOSCEU4STPXPB24BHD5JO5VTGAD', 'type': 'ed25519_public_key', }, ] mock_address.return_value = Wallet('test-address', 'test-balance', 'test-sequence', {}, signers, {}, {}) result = await get_signers('test-address') expect_result = [ { 'public_key': 'GDBNKZDZMEKXOH3HLWLKFMM7ARN2XVPHWZ7DWBBEV3UXTIGXBTRGJLHF', 'weight': 1 }, { 'public_key': 'GDHH7XOUKIWA2NTMGBRD3P245P7SV2DAANU2RIONBAH6DGDLR5WISZZI', 'weight': 1 }, ] assert result == expect_result
async def test_generate_joint_wallet_with_meta(self, mock_build, mock_get_stellar_wallet): deal_address = 'deal_address' parties = [{ 'address': 'address1', 'amount': 10 }, { 'address': 'address2', 'amount': 20 }] mock_get_stellar_wallet.return_value = Wallet("1", [], "1", {}, [], {}, {}) creator = 'creator_address' meta = {"expiration_date": "2018-05-15"} transaction_source_address = 'GDSB3JZDYKLYKWZ6NXDPPGPCYJ32ISMTZ2LVF5PYQGY4B4FGNIU2M5BJ' mock_build.return_value = ('create_joint_wallet_xdr', 'create_joint_wallet_tx_hash') result = await generate_joint_wallet(transaction_source_address, deal_address, parties, creator, 5, meta) expect = { "@id": reverse('generate-joint-wallet', wallet_address='deal_address'), "@transaction_url": reverse('transaction', transaction_hash='create_joint_wallet_tx_hash'), "signers": [{ "public_key": "address1", "weight": 1 }, { "public_key": "address2", "weight": 1 }, { "public_key": "creator_address", "weight": 1 }, { "public_key": "deal_address", "weight": 1 }], "xdr": "create_joint_wallet_xdr", "transaction_hash": "create_joint_wallet_tx_hash" } assert result == expect
async def test_get_unsigned_change_trust_success(self, mock_get_threshold_weight, mock_get_signer, mock_get_stellar_wallet): mock_get_threshold_weight.return_value = 1 mock_get_signer.return_value = [{ "public_key": "GAGNG7WP6JJH726KJ3RPMHB3TNOVNABRBHULYVN3APK6CHXRJNRSSHBA", "weight": 1 }] mock_get_stellar_wallet.return_value = Wallet("1", [], "1", {}, [], {}, {}) result = await get_unsigned_change_trust( 'GAGNG7WP6JJH726KJ3RPMHB3TNOVNABRBHULYVN3APK6CHXRJNRSSHBA', 'GDHZCRVQP3W3GUSZMC3ECHRG3WVQQZXVDHY5TOQ5AB5JKRSSUUZ6XDUE', ) assert "@id" in result
async def test_post_generate_wallet_from_request_success(self, mock_xdr, mock_check, mock_get_wallet, mock_signers): mock_signers.return_value = [{ "public_key": "GDHH7XOUKIWA2NTMGBRD3P245P7SV2DAANU2RIONBAH6DGDLR5WISZZI", "weight": 1 }] mock_get_wallet.return_value = Wallet( "1", [], "1", {}, [], {}, {} ) mock_xdr.return_value = (b'test-xdr', b'test-transaction-envelop') mock_check.return_value = False url = reverse('generate-wallet', wallet_address=self.wallet_address) json_request = { 'target_address' : self.target_address, 'transaction_source_address': self.transaction_source_address, 'amount_xlm' : self.amount_xlm } resp = await self.client.request("POST", url, json=json_request) assert resp.status == 200 text = await resp.json() expect_tx_hash = binascii.hexlify(mock_xdr.return_value[1]).decode() expect_unsigned_xdr = mock_xdr.return_value[0].decode() expect = { 'source_address': self.wallet_address, 'signers': [ { "public_key": "GDHH7XOUKIWA2NTMGBRD3P245P7SV2DAANU2RIONBAH6DGDLR5WISZZI", "weight": 1 } ], 'xdr': expect_unsigned_xdr, 'transaction_url': f"{self.host}{reverse('transaction', transaction_hash=expect_tx_hash)}", 'transaction_hash': expect_tx_hash, '@id': url } assert text == expect
async def test_post_generate_trust_wallet_from_request_success( self, mock_xdr, get_wallet, mock_check): mock_xdr.return_value = (b'test-xdr', b'test-transaction-envelop') get_wallet.return_value = Wallet("1", [], "1", {}, [], {}, {}) mock_check.return_value = False url = reverse('generate-trust-wallet', wallet_address=self.wallet_address) json_request = { 'target_address': self.target_address, 'transaction_source_address': self.transaction_source_address, 'xlm_amount': self.xlm_amount } resp = await self.client.request("POST", url, json=json_request) assert resp.status == 200 text = await resp.json() expect_tx_hash = binascii.hexlify(mock_xdr.return_value[1]).decode() expect_unsigned_xdr = mock_xdr.return_value[0].decode() expect = { 'source_address': self.wallet_address, 'transaction_source_address': self.transaction_source_address, 'signers': [ self.wallet_address, self.target_address, self.transaction_source_address ], 'xdr': expect_unsigned_xdr, 'transaction_url': f"{self.host}{reverse('transaction', transaction_hash=expect_tx_hash)}", 'transaction_hash': expect_tx_hash, '@id': f'{self.host}{url}' } assert text == expect