Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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
Ejemplo n.º 8
0
    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