Skip to content

Commit

Permalink
Merge pull request #56 from tinymanorg/app-call-notes
Browse files Browse the repository at this point in the history
fix client constructors
  • Loading branch information
gokselcoban authored Jan 4, 2023
2 parents ac706c6 + b470a02 commit fc4675d
Show file tree
Hide file tree
Showing 5 changed files with 144 additions and 58 deletions.
53 changes: 0 additions & 53 deletions tests/test.py

This file was deleted.

111 changes: 111 additions & 0 deletions tests/test_app_call_note.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
from base64 import b64encode
from unittest import TestCase

from algosdk.v2client.algod import AlgodClient

from tinyman.utils import generate_app_call_note, parse_app_call_note
from tinyman.v1.client import TinymanClient, TinymanTestnetClient, TinymanMainnetClient
from tinyman.v1.constants import TESTNET_VALIDATOR_APP_ID_V1_1
from tinyman.v2.client import (
TinymanV2Client,
TinymanV2TestnetClient,
TinymanV2MainnetClient,
)
from tinyman.v2.constants import TESTNET_VALIDATOR_APP_ID_V2


class AppCallNoteTestCase(TestCase):
maxDiff = None

def test_app_call_note(self):
note = generate_app_call_note(
version="v2", client_name="unit-test", extra_data={"extra": "some text"}
)
expected_result = {
"version": "v2",
"data": {"extra": "some text", "origin": "unit-test"},
}

# test possible versions
string_note = note
bytes_note = string_note.encode()
base64_note = b64encode(bytes_note).decode()

result = parse_app_call_note(string_note)
self.assertDictEqual(
result,
expected_result,
)

result = parse_app_call_note(base64_note)
self.assertDictEqual(
result,
expected_result,
)

result = parse_app_call_note(base64_note)
self.assertDictEqual(
result,
expected_result,
)

result = parse_app_call_note("invalid format")
self.assertEqual(result, None)
result = parse_app_call_note(
"INVALID+dGlueW1hbi92MjpqeyJvcmlnaW4iOiJ0aW55bWFuLXB5dGhvbi1zZGsifQ=="
)
self.assertEqual(result, None)
result = parse_app_call_note(b"invalid format")
self.assertEqual(result, None)
result = parse_app_call_note(
b'INVALID+tinyman/v2:j{"origin":"tinyman-python-sdk"}'
)
self.assertEqual(result, None)

def test_tinyman_clients(self):
algod_client = AlgodClient(algod_token="", algod_address="")
client_name = "test"

# V1
self.assertEqual(
TinymanClient(
algod_client=algod_client,
client_name=client_name,
validator_app_id=TESTNET_VALIDATOR_APP_ID_V1_1,
).generate_app_call_note(),
'tinyman/v1:j{"origin":"test"}',
)
self.assertEqual(
TinymanTestnetClient(
algod_client=algod_client, client_name=client_name
).generate_app_call_note(),
'tinyman/v1:j{"origin":"test"}',
)
self.assertEqual(
TinymanMainnetClient(
algod_client=algod_client, client_name=client_name
).generate_app_call_note(),
'tinyman/v1:j{"origin":"test"}',
)

# V2
self.assertEqual(
TinymanV2Client(
algod_client=algod_client,
client_name=client_name,
validator_app_id=TESTNET_VALIDATOR_APP_ID_V2,
).generate_app_call_note(),
'tinyman/v2:j{"origin":"test"}',
)
self.assertEqual(
TinymanV2TestnetClient(
algod_client=algod_client, client_name=client_name
).generate_app_call_note(),
'tinyman/v2:j{"origin":"test"}',
)
self.assertEqual(
TinymanV2MainnetClient(
algod_client=algod_client, client_name=client_name
).generate_app_call_note(),
'tinyman/v2:j{"origin":"test"}',
)
2 changes: 1 addition & 1 deletion tinyman/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def __init__(
self,
algod_client: AlgodClient,
validator_app_id: int,
user_address=None,
user_address: Optional[str] = None,
staking_app_id: Optional[int] = None,
client_name: Optional[str] = None,
):
Expand Down
18 changes: 16 additions & 2 deletions tinyman/v1/client.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
from base64 import b64decode
from typing import Optional

from algosdk.v2client.algod import AlgodClient
from algosdk.encoding import encode_address
from tinyman.assets import AssetAmount
Expand Down Expand Up @@ -65,20 +67,32 @@ def fetch_excess_amounts(self, user_address=None):


class TinymanTestnetClient(TinymanClient):
def __init__(self, algod_client: AlgodClient, user_address=None):
def __init__(
self,
algod_client: AlgodClient,
user_address: Optional[str] = None,
client_name: Optional[str] = None,
):
super().__init__(
algod_client,
validator_app_id=TESTNET_VALIDATOR_APP_ID,
user_address=user_address,
staking_app_id=TESTNET_STAKING_APP_ID,
client_name=client_name,
)


class TinymanMainnetClient(TinymanClient):
def __init__(self, algod_client: AlgodClient, user_address=None):
def __init__(
self,
algod_client: AlgodClient,
user_address: Optional[str] = None,
client_name: Optional[str] = None,
):
super().__init__(
algod_client,
validator_app_id=MAINNET_VALIDATOR_APP_ID,
user_address=user_address,
staking_app_id=MAINNET_STAKING_APP_ID,
client_name=client_name,
)
18 changes: 16 additions & 2 deletions tinyman/v2/client.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from typing import Optional

from algosdk.v2client.algod import AlgodClient
from tinyman.client import BaseTinymanClient
from tinyman.staking.constants import (
Expand Down Expand Up @@ -32,20 +34,32 @@ def handle_error(self, exception, txn_group):


class TinymanV2TestnetClient(TinymanV2Client):
def __init__(self, algod_client: AlgodClient, user_address=None):
def __init__(
self,
algod_client: AlgodClient,
user_address: Optional[str] = None,
client_name: Optional[str] = None,
):
super().__init__(
algod_client,
validator_app_id=TESTNET_VALIDATOR_APP_ID,
user_address=user_address,
staking_app_id=TESTNET_STAKING_APP_ID,
client_name=client_name,
)


class TinymanV2MainnetClient(TinymanV2Client):
def __init__(self, algod_client: AlgodClient, user_address=None):
def __init__(
self,
algod_client: AlgodClient,
user_address: Optional[str] = None,
client_name: Optional[str] = None,
):
super().__init__(
algod_client,
validator_app_id=MAINNET_VALIDATOR_APP_ID,
user_address=user_address,
staking_app_id=MAINNET_STAKING_APP_ID,
client_name=client_name,
)

0 comments on commit fc4675d

Please sign in to comment.