import ContractCache from "../../../src/endpoints/ContractCache"; import ConfigHandler from "../../../src/config/configHandler"; let contract: ContractCache; let config: ConfigHandler; describe("Get mixnode data", (): void => { beforeAll(async (): Promise => { contract = new ContractCache(); config = ConfigHandler.getInstance(); }); it("Get all mixnodes", async (): Promise => { const response = await contract.getMixnodes(); response.forEach((mixnode) => { //bond information overview expect(typeof mixnode.bond_information.mix_id).toBe("number"); expect(typeof mixnode.bond_information.owner).toBe("string"); expect(typeof mixnode.bond_information.original_pledge.amount).toBe("string"); expect(typeof mixnode.bond_information.original_pledge.denom).toBe("string"); expect(typeof mixnode.bond_information.layer).toBe("number"); expect(typeof mixnode.bond_information.bonding_height).toBe("number"); expect(typeof mixnode.bond_information.is_unbonding).toBe("boolean"); if (mixnode.bond_information.proxy === null) { return true; } else { expect(typeof mixnode.bond_information.proxy).toBe("string"); } //mixnode expect(typeof mixnode.bond_information.mix_node.host).toBe("string"); expect(mixnode.bond_information.mix_node.http_api_port).toStrictEqual(8000); expect(typeof mixnode.bond_information.mix_node.verloc_port).toBe("number"); expect(typeof mixnode.bond_information.mix_node.mix_port).toBe("number"); expect(mixnode.bond_information.mix_node.mix_port).toStrictEqual(1789); expect(typeof mixnode.bond_information.mix_node.verloc_port).toBe("number"); const identitykey = mixnode.bond_information.mix_node.identity_key; if (typeof identitykey === "string") { if (identitykey.length === 43) { return true; } else expect(identitykey).toHaveLength(44); } const sphinx = mixnode.bond_information.mix_node.sphinx_key; if (typeof sphinx === "string") { if (sphinx.length === 43) { return true; } else expect(sphinx).toHaveLength(44); } //rewarding details expect(typeof mixnode.rewarding_details.cost_params.profit_margin_percent).toBe("string"); expect(typeof mixnode.rewarding_details.cost_params.interval_operating_cost.denom).toBe("string"); expect(typeof mixnode.rewarding_details.cost_params.interval_operating_cost.amount).toBe("string"); expect(typeof mixnode.rewarding_details.operator).toBe("string"); expect(typeof mixnode.rewarding_details.delegates).toBe("string"); expect(typeof mixnode.rewarding_details.total_unit_reward).toBe("string"); expect(typeof mixnode.rewarding_details.unit_delegation).toBe("string"); expect(typeof mixnode.rewarding_details.last_rewarded_epoch).toBe("number"); expect(typeof mixnode.rewarding_details.unique_delegations).toBe("number"); }); }); it("Get all mixnodes detailed", async (): Promise => { const response = await contract.getMixnodesDetailed(); response.forEach((mixnode) => { // overview details expect(typeof mixnode.estimated_delegators_apy).toBe("string"); expect(typeof mixnode.estimated_operator_apy).toBe("string"); expect(typeof mixnode.performance).toBe("string"); expect(typeof mixnode.uncapped_stake_saturation).toBe("string"); expect(typeof mixnode.stake_saturation).toBe("string"); // TODO why family is tempermental // expect(typeof mixnode.family).toBe("string"); //mixnode details bond info expect(typeof mixnode.mixnode_details.bond_information.mix_id).toBe("number") expect(typeof mixnode.mixnode_details.bond_information.owner).toBe("string"); expect(typeof mixnode.mixnode_details.bond_information.original_pledge.amount).toBe("string"); expect(typeof mixnode.mixnode_details.bond_information.original_pledge.denom).toBe("string"); expect(typeof mixnode.mixnode_details.bond_information.layer).toBe("number"); expect(typeof mixnode.mixnode_details.bond_information.bonding_height).toBe("number"); expect(typeof mixnode.mixnode_details.bond_information.is_unbonding).toBe("boolean"); if (mixnode.mixnode_details.bond_information.proxy === null) { return true; } else { expect(typeof mixnode.mixnode_details.bond_information.proxy).toBe("string"); } //mixnode expect(typeof mixnode.mixnode_details.bond_information.mix_node.host).toBe("string"); expect(mixnode.mixnode_details.bond_information.mix_node.http_api_port).toStrictEqual(8000); expect(typeof mixnode.mixnode_details.bond_information.mix_node.verloc_port).toBe("number"); expect(typeof mixnode.mixnode_details.bond_information.mix_node.mix_port).toBe("number"); expect(mixnode.mixnode_details.bond_information.mix_node.mix_port).toStrictEqual(1789); expect(typeof mixnode.mixnode_details.bond_information.mix_node.verloc_port).toBe("number"); const identitykey2 = mixnode.mixnode_details.bond_information.mix_node.identity_key if (typeof identitykey2 === "string") { if (identitykey2.length === 43) { return true; } else expect(identitykey2).toHaveLength(44); } const sphinx2 = mixnode.mixnode_details.bond_information.mix_node.sphinx_key if (typeof sphinx2 === "string") { if (sphinx2.length === 43) { return true; } else expect(sphinx2).toHaveLength(44); } //mixnode rewarding info expect(typeof mixnode.mixnode_details.rewarding_details.cost_params.profit_margin_percent).toBe("string"); expect(typeof mixnode.mixnode_details.rewarding_details.cost_params.interval_operating_cost.denom).toBe("string"); expect(typeof mixnode.mixnode_details.rewarding_details.cost_params.interval_operating_cost.amount).toBe("string"); expect(typeof mixnode.mixnode_details.rewarding_details.operator).toBe("string"); expect(typeof mixnode.mixnode_details.rewarding_details.delegates).toBe("string"); expect(typeof mixnode.mixnode_details.rewarding_details.total_unit_reward).toBe("string"); expect(typeof mixnode.mixnode_details.rewarding_details.unit_delegation).toBe("string"); expect(typeof mixnode.mixnode_details.rewarding_details.last_rewarded_epoch).toBe("number"); expect(typeof mixnode.mixnode_details.rewarding_details.unique_delegations).toBe("number"); }); }); it("Get active mixnodes", async (): Promise => { const response = await contract.getActiveMixnodes(); response.forEach(function (mixnode) { expect(mixnode.rewarding_details.cost_params.profit_margin_percent).toBeTruthy(); expect(typeof mixnode.bond_information.layer).toBe("number"); }); }); it("Get active mixnodes detailed", async (): Promise => { const response = await contract.getActiveMixnodesDetailed(); response.forEach(function (mixnode) { expect(mixnode.mixnode_details.rewarding_details.cost_params.profit_margin_percent).toBeTruthy(); }); }); it("Get rewarded mixnodes", async (): Promise => { const response = await contract.getRewardedMixnodes(); response.forEach(function (mixnode) { expect(mixnode.rewarding_details.last_rewarded_epoch).toBeTruthy(); }); }); it("Get rewarded mixnodes detailed", async (): Promise => { const response = await contract.getRewardedMixnodesDetailed(); response.forEach(function (mixnode) { expect(mixnode.mixnode_details.rewarding_details.last_rewarded_epoch).toBeTruthy(); }); }); it("Get blacklisted mixnodes", async (): Promise => { const response = await contract.getBlacklistedMixnodes(); response.forEach(function (value) { expect(typeof value).toBe("number"); }); }); });