Passed
Pull Request — main (#24)
by Switcheolytics
01:04
created

TestAuthenticatedClient.test_stake_switcheo()   A

Complexity

Conditions 1

Size

Total Lines 7
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nop 1
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
import random
2
from tradehub.authenticated_client import AuthenticatedClient
3
from tests import APITestCase, TESTNET_VAL_IP, TRADING_TESTNET_WALLET_MNEMONIC
4
import tradehub.types as types
5
from tradehub.wallet import Wallet
6
7
8
class TestAuthenticatedClient(APITestCase):
9
10
    def setUp(self) -> None:
11
        self.validator_addresses = ['tswthvaloper1hn0spc9plh5ker8lrtzyz9uqfe3xk2yn0c6nyf', 'tswthvaloper10229tj7kh2mzwsn9cnfxuq3sqjuph860dlezpr']
12
        self.validator_address = self.validator_addresses[random.randint(a=0, b=len(self.validator_addresses)-1)]
13
        self.validator_dst_address = self.validator_addresses
14
        self.validator_dst_address.remove(self.validator_address)
15
        self.validator_dst_address = self.validator_dst_address[0]
16
        self._wallet: Wallet = Wallet(mnemonic=TRADING_TESTNET_WALLET_MNEMONIC, network="testnet")
17
        self.authenticated_client: AuthenticatedClient = AuthenticatedClient(wallet=self._wallet,
18
                                                                             node_ip=TESTNET_VAL_IP,
19
                                                                             node_port=5001,
20
                                                                             network="testnet")
21
        self.expect: dict = {
22
            'height': str,
23
            'txhash': str,
24
            'raw_log': str,
25
            'logs': [{
26
                'msg_index': int,
27
                'log': str,
28
                'events': [{
29
                    'type': str,
30
                    'attributes': [{
31
                        'key': str,
32
                        'value': str
33
                    }]
34
                }]
35
            }],
36
            'gas_wanted': str,
37
            'gas_used': str
38
        }
39
40
    def test_update_profile(self):
41
        txn_message: dict = types.UpdateProfileMessage(username='PythonCICD', twitter='PythonCICD')
42
        result: dict = self.authenticated_client.update_profile(message=txn_message)
43
44
        self.assertDictStructure(expect=self.expect, actual=result)
45
46
    def test_send_tokens(self):
47
        txn_message: dict = types.SendTokensMessage(to_address='tswth1rjr3nm2xcyr6psseksk8vhpc4n33htntuhmdfm',
48
                                                    amount=[types.SendTokensAmount(amount='5.1', denom='swth')])
49
        result: dict = self.authenticated_client.send_tokens(message=txn_message)
50
51
        self.assertDictStructure(expect=self.expect, actual=result)
52
53
    def test_create_order(self):
54
        txn_message: dict = types.CreateOrderMessage(market='swth_eth',
55
                                                     side="sell",
56
                                                     quantity="200",
57
                                                     type="market")
58
        result: dict = self.authenticated_client.create_order(message=txn_message)
59
60
        self.assertDictStructure(expect=self.expect, actual=result)
61
62
    def test_stake_switcheo(self):
63
        txn_message: dict = types.DelegateTokensMessage(delegator_address=self._wallet.address,
64
                                                        validator_address=self.validator_address,
65
                                                        amount=types.DelegateTokensAmount(amount='5.1', denom='swth'))
66
        result: dict = self.authenticated_client.stake_switcheo(message=txn_message)
67
68
        self.assertDictStructure(expect=self.expect, actual=result)
69
70
    def test_claim_staking_rewards(self):
71
        txn_message: dict = types.WithdrawDelegatorRewardsMessage(delegator_address=self._wallet.address,
72
                                                                  validator_address='tswthvaloper10229tj7kh2mzwsn9cnfxuq3sqjuph860dlezpr')
73
        result: dict = self.authenticated_client.claim_staking_rewards(message=txn_message)
74
75
        self.assertDictStructure(expect=self.expect, actual=result)
76
77
    def test_claim_all_staking_rewards(self):
78
        validator_addresses = []
79
        delegation_rewards: dict = self.authenticated_client.get_delegation_rewards(swth_address=self._wallet.address)
80
        for delegation_reward in delegation_rewards["result"]["rewards"]:
81
            validator_addresses.append(delegation_reward["validator_address"])
82
83
        txn_message: dict = types.WithdrawAllDelegatorRewardsParams(delegator_address=self._wallet.address,
84
                                                                    validator_addresses=validator_addresses)
85
        result: dict = self.authenticated_client.claim_all_staking_rewards(message=txn_message)
86
87
        self.assertDictStructure(expect=self.expect, actual=result)
88
89
    def test_unbond_tokens(self):
90
        expect: dict = self.expect
91
        expect['data'] = str
92
        txn_message: dict = types.BeginUnbondingTokensMessage(delegator_address=self._wallet.address,
93
                                                              validator_address=self.validator_address,
94
                                                              amount=types.AmountMessage(amount='1.1', denom='swth'))
95
        result: dict = self.authenticated_client.unbond_tokens(message=txn_message)
96
97
        self.assertDictStructure(expect=expect, actual=result)
98
99
    def test_redelegate_tokens(self):
100
        expect: dict = self.expect
101
        expect['data'] = str
102
        txn_message: dict = types.BeginRedelegatingTokensMessage(delegator_address=self._wallet.address,
103
                                                                 validator_src_address=self.validator_address,
104
                                                                 validator_dst_address=self.validator_dst_address,
105
                                                                 amount=types.AmountMessage(amount='1.1', denom='swth'))
106
        result: dict = self.authenticated_client.redelegate_tokens(message=txn_message)
107
108
        self.assertDictStructure(expect=expect, actual=result)
109