def setup_operator(self, number_owners: int = 1) -> SafeOperator:
     assert number_owners >= 1, 'Number of owners cannot be less than 1!'
     safe_address = self.deploy_test_safe(owners=[self.ethereum_test_account.address]).safe_address
     safe_operator = SafeOperator(safe_address, self.ethereum_node_url)
     safe_operator.load_cli_owners([self.ethereum_test_account.key.hex()])
     for _ in range(number_owners - 1):
         account = Account.create()
         safe_operator.add_owner(account.address)
         safe_operator.load_cli_owners([account.key.hex()])
     return safe_operator
Example #2
0
    def test_remove_owner(self):
        safe_address = self.deploy_test_safe(
            owners=[self.ethereum_test_account.address]).safe_address
        safe_operator = SafeOperator(safe_address, self.ethereum_node_url)
        random_address = Account.create().address
        with self.assertRaises(NonExistingOwnerException):
            safe_operator.remove_owner(random_address)

        safe_operator.load_cli_owners([self.ethereum_test_account.key.hex()])
        new_owner = Account.create().address
        safe = Safe(safe_address, self.ethereum_client)
        self.assertTrue(safe_operator.add_owner(new_owner))
        self.assertIn(new_owner, safe.retrieve_owners())

        self.assertTrue(safe_operator.remove_owner(new_owner))
        self.assertNotIn(new_owner, safe_operator.accounts)
        self.assertNotIn(new_owner, safe.retrieve_owners())
Example #3
0
    def test_load_cli_owner(self):
        random_address = Account.create().address
        safe_operator = SafeOperator(random_address, self.ethereum_node_url)
        random_accounts = [Account.create() for _ in range(3)]
        random_accounts_keys = [
            account.key.hex() for account in random_accounts
        ]
        self.assertFalse(safe_operator.accounts)
        safe_operator.load_cli_owners(random_accounts_keys)
        self.assertEqual(len(safe_operator.accounts),
                         len(random_accounts_keys))
        # Test accounts are not duplicated
        safe_operator.load_cli_owners(random_accounts_keys)
        self.assertEqual(len(safe_operator.accounts),
                         len(random_accounts_keys))
        # Test invalid accounts don't make the method break
        safe_operator.load_cli_owners(
            ['aloha', Account.create().key.hex(), 'bye'])
        self.assertEqual(len(safe_operator.accounts),
                         len(random_accounts_keys) + 1)
        # TODO Test setting default sender, mock getBalance

        # Test unload cli owner
        safe_operator.default_sender = random_accounts[0]
        number_of_accounts = len(safe_operator.accounts)
        safe_operator.unload_cli_owners(
            ['aloha', random_accounts[0].address, 'bye'])
        self.assertEqual(len(safe_operator.accounts), number_of_accounts - 1)
        self.assertFalse(safe_operator.default_sender)