2021-06-07 07:10:18 -07:00
|
|
|
from .context import mango
|
2021-07-01 13:24:08 -07:00
|
|
|
from .fakes import fake_account_info, fake_seeded_public_key, fake_token_info
|
2021-06-07 07:10:18 -07:00
|
|
|
|
|
|
|
from decimal import Decimal
|
2021-06-25 07:50:37 -07:00
|
|
|
from mango.layouts import layouts
|
2021-06-07 07:10:18 -07:00
|
|
|
|
|
|
|
|
|
|
|
def test_construction():
|
|
|
|
account_info = fake_account_info()
|
2021-06-08 00:17:37 -07:00
|
|
|
name = "FAKE_GROUP"
|
2021-06-25 07:50:37 -07:00
|
|
|
meta_data = mango.Metadata(layouts.DATA_TYPE.Group, mango.Version.V1, True)
|
|
|
|
token_infos = [fake_token_info(), fake_token_info(), fake_token_info()]
|
|
|
|
spot_markets = []
|
|
|
|
perp_markets = []
|
|
|
|
oracles = []
|
2021-06-07 07:10:18 -07:00
|
|
|
signer_nonce = Decimal(1)
|
|
|
|
signer_key = fake_seeded_public_key("signer key")
|
2021-06-25 07:50:37 -07:00
|
|
|
admin_key = fake_seeded_public_key("admin key")
|
2021-06-07 07:10:18 -07:00
|
|
|
dex_program_id = fake_seeded_public_key("DEX program ID")
|
2021-06-25 07:50:37 -07:00
|
|
|
cache_key = fake_seeded_public_key("cache key")
|
2021-07-12 02:57:05 -07:00
|
|
|
dao_vault = fake_seeded_public_key("insurance vault")
|
2021-06-25 07:50:37 -07:00
|
|
|
valid_interval = Decimal(7)
|
2021-06-07 07:10:18 -07:00
|
|
|
|
2021-06-25 07:50:37 -07:00
|
|
|
actual = mango.Group(account_info, mango.Version.V1, name, meta_data, token_infos,
|
|
|
|
spot_markets, perp_markets, oracles, signer_nonce, signer_key,
|
2021-07-12 02:57:05 -07:00
|
|
|
admin_key, dex_program_id, cache_key, valid_interval, dao_vault)
|
2021-06-07 07:10:18 -07:00
|
|
|
|
|
|
|
assert actual is not None
|
|
|
|
assert actual.logger is not None
|
2021-06-08 00:17:37 -07:00
|
|
|
assert actual.name == name
|
2021-06-25 07:50:37 -07:00
|
|
|
assert actual.meta_data == meta_data
|
|
|
|
assert actual.tokens == token_infos
|
|
|
|
assert actual.spot_markets == spot_markets
|
|
|
|
assert actual.perp_markets == perp_markets
|
|
|
|
assert actual.oracles == oracles
|
2021-06-07 07:10:18 -07:00
|
|
|
assert actual.signer_nonce == signer_nonce
|
|
|
|
assert actual.signer_key == signer_key
|
2021-06-25 07:50:37 -07:00
|
|
|
assert actual.admin == admin_key
|
2021-06-07 07:10:18 -07:00
|
|
|
assert actual.dex_program_id == dex_program_id
|
2021-06-25 07:50:37 -07:00
|
|
|
assert actual.cache == cache_key
|
|
|
|
assert actual.valid_interval == valid_interval
|
2021-07-12 02:57:05 -07:00
|
|
|
assert actual.dao_vault == dao_vault
|
2021-06-07 07:10:18 -07:00
|
|
|
|
|
|
|
|
2021-07-01 13:24:08 -07:00
|
|
|
# Need better stubs/fakes/mocks before reinstating this, now that Group loading tries to fetch the RootBanks.
|
|
|
|
# def test_group_parse():
|
|
|
|
# # Data for group BTC_ETH_USDT
|
|
|
|
# group_public_key = fake_seeded_public_key("group3")
|
|
|
|
# owner_public_key = fake_seeded_public_key("owner3")
|
|
|
|
# encoded_group = "AAABAAAAAAABAAAAAAAAAAj1/cF+AGzTmuqIDB5wFq2w8yFRu3DL+Wyxjkgd/PVqwy0rRmYWXzvBRL+QIjmLbngeDnG+fow2YuRrIA0mHBAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMZ33fDPFwUNmlWliKPfOP/u8Pd78kUAsDoUas5//UHuif9gcUdlcNaC+xiZtvGAxcFS89us7Wp87De+6pdf96sJAAAAAAAAAMFacFpS+vSulQvbX86Y5KWvZXvvPKlOI0d1xmxct9jwZmZmZmbmAAAAAAAAAAAAAMzMzMzMzAAAAAAAAAAAAACZmZmZmRkBAAAAAAAAAAAAMzMzMzMzAQAAAAAAAAAAAMzMzMzMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
|
|
# decoded_group = base64.b64decode(encoded_group)
|
|
|
|
# group_account_info = fake_account_info(address=group_public_key, owner=owner_public_key, data=decoded_group)
|
|
|
|
# context = fake_context()
|
|
|
|
# ids_json_token_lookup: mango.TokenLookup = mango.IdsJsonTokenLookup("devnet", mango.default_group_name)
|
|
|
|
# context.token_lookup = ids_json_token_lookup
|
|
|
|
# # context.cluster = "devnet" # Needed for devnet token lookups.
|
|
|
|
# group = mango.Group.parse(context, group_account_info)
|
2021-06-07 07:10:18 -07:00
|
|
|
|
2021-07-01 13:24:08 -07:00
|
|
|
# assert group.address == group_public_key
|
2021-06-07 07:10:18 -07:00
|
|
|
|
2021-07-01 13:24:08 -07:00
|
|
|
# assert len(group.tokens) == 32
|
|
|
|
# assert group.tokens[0].token.mint == PublicKey("bypQzRBaSDWiKhoAw3hNkf35eF3z3AZCU8Sxks6mTPP")
|
|
|
|
# assert group.tokens[1] is None
|
|
|
|
# assert group.tokens[31].token.mint == PublicKey("EMjjdsqERN4wJUR9jMBax2pzqQPeGLNn5NeucbHpDUZK")
|
2021-06-25 07:50:37 -07:00
|
|
|
|
2021-07-01 13:24:08 -07:00
|
|
|
# assert len(group.spot_markets) == 31
|
|
|
|
# assert group.spot_markets[0].address == PublicKey("E1mfsnnCcL24JcDQxr7F2BpWjkyy5x2WHys8EL2pnCj9")
|
|
|
|
# assert group.spot_markets[1] is None
|
|
|
|
# assert group.spot_markets[30] is None
|
2021-06-25 07:50:37 -07:00
|
|
|
|
2021-07-01 13:24:08 -07:00
|
|
|
# assert len(group.perp_markets) == 31
|
|
|
|
# assert group.perp_markets[0].address == PublicKey("7hei6GvQPpkPcJGjELXKZP5fpZSdKbfFMFWN43zi76V9")
|
|
|
|
# assert group.perp_markets[1] is None
|
|
|
|
# assert group.perp_markets[30] is None
|
2021-06-25 07:50:37 -07:00
|
|
|
|
2021-07-01 13:24:08 -07:00
|
|
|
# assert len(group.oracles) == 1
|
|
|
|
# assert group.oracles[0] == PublicKey("En6zcdvZL7rAW3CBsVLWkEZa55sNoNhLtdoozLpP8aQs")
|
2021-06-25 07:50:37 -07:00
|
|
|
|
2021-07-01 13:24:08 -07:00
|
|
|
# assert group.signer_nonce == 0
|
|
|
|
# assert group.signer_key == PublicKey("HzpyPmuz8C4P6ExinCDndujSAy68MeMNHNzYLpmMAGMS")
|
|
|
|
# assert group.admin == PublicKey("Cwg1f6m4m3DGwMEbmsbAfDtUToUf5jRdKrJSGD7GfZCB")
|
|
|
|
# assert group.dex_program_id == PublicKey("DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY")
|
|
|
|
# assert group.cache == PublicKey("D2zSEAJTJADF46eCm1SrsSP3k4QDfv33nneTpbHow3DM")
|
|
|
|
# assert group.valid_interval == 5
|
2021-07-12 02:57:05 -07:00
|
|
|
# assert group.dao_vault is None
|