def test_wallet_info(config): response_data = { 'data': { 'address': 'simple_address', 'eth_balance': 13, 'skale_balance': 123 } } response_mock = MagicMock() response_mock.status_code = requests.codes.ok response_mock.json = Mock(return_value=response_data) result = run_command_mock('core.wallet.get_request', response_mock, wallet_info) assert result.exit_code == 0 expected = ( '--------------------------------------------------\n' 'Address: simple_address\n' 'ETH balance: 13 ETH\n' 'SKALE balance: 123 SKALE\n' '--------------------------------------------------\n' ) assert result.output == expected result = run_command_mock('core.wallet.get_request', response_mock, wallet_info, ['--format', 'json']) assert result.exit_code == 0 expected = ( "{'address': 'simple_address', " "'eth_balance': 13, 'skale_balance': 123}\n" ) assert result.output == expected
def test_checks(): payload = [{ "name": "test_schain", "healthchecks": { "config_dir": True, "dkg": False, "config": False, "volume": False, "skaled_container": False, "ima_container": False, "firewall_rules": False, "rpc": False, "blocks": False } }] resp_mock = response_mock(requests.codes.ok, json_data={ 'payload': payload, 'status': 'ok' }) result = run_command_mock('node_cli.utils.helper.requests.get', resp_mock, schains) assert result.exit_code == 0 assert result.output == 'sChain Name Config directory DKG Config file Volume Container IMA Firewall RPC Blocks\n-------------------------------------------------------------------------------------------------------------\ntest_schain True False False False False False False False False \n' # noqa result = run_command_mock('node_cli.utils.helper.requests.get', resp_mock, schains, ['--json']) assert result.exit_code == 0 assert result.output == '[{"name": "test_schain", "healthchecks": {"config_dir": true, "dkg": false, "config": false, "volume": false, "skaled_container": false, "ima_container": false, "firewall_rules": false, "rpc": false, "blocks": false}}]\n' # noqa
def test_schains(config): resp_mock = response_mock( requests.codes.ok, json_data={'data': RESPONSE_DATA, 'res': 1} ) result = run_command_mock('core.helper.get_request', resp_mock, schains) assert result.exit_code == 0 assert result.output == " Name Status Started At Image \n-------------------------------------------------------------------------------------\nskale_schain_test Running Oct 08 2019 13:59:54 image-skale\nskale_schain_test2 Running (Jan 01 1 00:00:00) Oct 08 2019 13:59:54 image-skale\n" # noqa resp_mock = response_mock( requests.codes.ok, json_data={'data': RESPONSE_DATA, 'res': 0} ) result = run_command_mock('core.helper.get_request', resp_mock, schains) assert result.exit_code == 1 assert result.output == ('----------------------------------' '----------------\n') resp_mock = response_mock( requests.codes.ok, None ) result = run_command_mock('core.helper.get_request', resp_mock, schains) assert result.exit_code == 1 assert result.output == '' resp_mock = response_mock( -1, {'data': RESPONSE_DATA, 'res': 1} ) result = run_command_mock('core.helper.get_request', resp_mock, schains) assert result.exit_code == 0 assert result.output == 'Request failed, status code: -1\n'
def test_ls(config): os.environ['TZ'] = 'Europe/London' time.tzset() response_data = [{ 'name': 'test_schain1', 'owner': '0x123', 'indexInOwnerList': 3, 'partOfNode': 0, 'lifetime': 5, 'startDate': 1570115385, 'deposit': 1000000000000000000, 'index': 3 }, { 'name': 'crazy_cats1', 'owner': '0x321', 'indexInOwnerList': 8, 'partOfNode': 0, 'lifetime': 5, 'startDate': 1570469410, 'deposit': 1000000000000000000, 'index': 8 }] resp_mock = response_mock(requests.codes.ok, json_data={ 'data': response_data, 'res': 1 }) result = run_command_mock('core.helper.get_request', resp_mock, ls) assert result.exit_code == 0 assert result.output == ' Name Owner Size Lifetime Created At Deposit \n-----------------------------------------------------------------------------------\ntest_schain1 0x123 0 5 Oct 03 2019 16:09:45 1000000000000000000\ncrazy_cats1 0x321 0 5 Oct 07 2019 18:30:10 1000000000000000000\n' # noqa
def test_node_info_node_info_in_maintenance(): payload = { 'node_info': { 'name': 'test', 'ip': '0.0.0.0', 'publicIP': '1.1.1.1', 'port': 10001, 'publicKey': '0x7', 'start_date': 1570114466, 'leaving_date': 0, 'last_reward_date': 1570628924, 'second_address': 0, 'status': 3, 'id': 32, 'owner': '0x23', 'domain_name': 'skale.test' } } resp_mock = response_mock(requests.codes.ok, json_data={ 'payload': payload, 'status': 'ok' }) result = run_command_mock('node_cli.utils.helper.requests.get', resp_mock, node_info) assert result.exit_code == 0 assert result.output == '--------------------------------------------------\nNode info\nName: test\nID: 32\nIP: 0.0.0.0\nPublic IP: 1.1.1.1\nPort: 10001\nDomain name: skale.test\nStatus: In Maintenance\n--------------------------------------------------\n' # noqa
def test_node_info_node_info_not_created(): payload = { 'node_info': { 'name': 'test', 'ip': '0.0.0.0', 'publicIP': '1.1.1.1', 'port': 10001, 'publicKey': '0x7', 'start_date': 1570114466, 'leaving_date': 0, 'last_reward_date': 1570628924, 'second_address': 0, 'status': 5, 'id': 32, 'owner': '0x23', 'domain_name': 'skale.test' } } resp_mock = response_mock(requests.codes.ok, json_data={ 'payload': payload, 'status': 'ok' }) result = run_command_mock('node_cli.utils.helper.requests.get', resp_mock, node_info) assert result.exit_code == 0 assert result.output == 'This SKALE node is not registered on SKALE Manager yet\n'
def test_generate_already_exists(resource_alloc_config): resp_mock = response_mock(requests.codes.created) with mock.patch('node_cli.core.resources.get_disk_size', return_value=BIG_DISK_SIZE): result = run_command_mock('node_cli.utils.helper.post_request', resp_mock, generate, ['./tests/test-env', '--yes']) assert result.output == 'Resource allocation file is already exists\n' assert result.exit_code == 0 result = run_command_mock('node_cli.utils.helper.post_request', resp_mock, generate, ['./tests/test-env', '--yes', '--force']) assert result.output == (f'Resource allocation file generated: ' f'{RESOURCE_ALLOCATION_FILEPATH}\n') assert result.exit_code == 0
def test_show(resource_alloc_config): resp_mock = response_mock(requests.codes.created) write_json(RESOURCE_ALLOCATION_FILEPATH, TEST_CONFIG) result = run_command_mock('node_cli.utils.helper.post_request', resp_mock, show) assert result.output == json.dumps(TEST_CONFIG, indent=4) + '\n' assert result.exit_code == 0
def test_ls(): resp_mock = response_mock( requests.codes.ok, json_data={'data': RESPONSE_DATA, 'res': 1} ) result = run_command_mock('core.helper.get_request', resp_mock, ls) assert result.exit_code == 0 assert result.output == ' Name Status Started At Image \n-------------------------------------------------------------------------------------\nskale_schain_test Running Oct 08 2019 13:59:54 image-skale\nskale_schain_test2 Running (Jan 01 1 00:00:00) Oct 08 2019 13:59:54 image-skale\n' # noqa
def test_maintenance_off(mocked_g_config): resp_mock = response_mock(requests.codes.ok, { 'status': 'ok', 'payload': None }) result = run_command_mock('node_cli.utils.helper.requests.post', resp_mock, remove_node_from_maintenance) assert result.exit_code == 0 assert result.output == 'Setting maintenance mode off...\nNode is successfully removed from maintenance mode\n' # noqa
def test_maintenance_on(): resp_mock = response_mock(requests.codes.ok, { 'status': 'ok', 'payload': None }) result = run_command_mock('node_cli.utils.helper.requests.post', resp_mock, set_node_in_maintenance, ['--yes']) assert result.exit_code == 0 assert result.output == 'Setting maintenance mode on...\nNode is successfully set in maintenance mode\n' # noqa
def test_set_domain_name(): resp_mock = response_mock(requests.codes.ok, { 'status': 'ok', 'payload': None }) with mock.patch('node_cli.utils.decorators.is_node_inited', return_value=True): result = run_command_mock('node_cli.utils.helper.requests.post', resp_mock, _set_domain_name, ['-d', 'skale.test', '--yes']) assert result.exit_code == 0 assert result.output == 'Setting new domain name: skale.test\nDomain name successfully changed\n' # noqa
def test_turn_off_maintenance_on(mocked_g_config): resp_mock = response_mock(requests.codes.ok, { 'status': 'ok', 'payload': None }) with mock.patch('subprocess.run', new=subprocess_run_mock), \ mock.patch('node_cli.core.node.turn_off_op'), \ mock.patch('node_cli.core.node.is_node_inited', return_value=True): result = run_command_mock('node_cli.utils.helper.requests.post', resp_mock, _turn_off, ['--maintenance-on', '--yes']) assert result.exit_code == 0 assert result.output == 'Setting maintenance mode on...\nNode is successfully set in maintenance mode\n' # noqa
def test_node_signature(): signature_sample = '0x1231231231' response_data = { 'status': 'ok', 'payload': { 'signature': signature_sample } } resp_mock = response_mock(requests.codes.ok, json_data=response_data) result = run_command_mock('node_cli.utils.helper.requests.get', resp_mock, signature, ['1']) assert result.exit_code == 0 assert result.output == f'Signature: {signature_sample}\n'
def test_register_with_no_alloc(mocked_g_config): resp_mock = response_mock(requests.codes.ok, { 'status': 'ok', 'payload': None }) result = run_command_mock('node_cli.utils.helper.requests.post', resp_mock, register_node, ['--name', 'test-node', '-d', 'skale.test'], input='0.0.0.0\n') assert result.exit_code == 8 print(repr(result.output)) assert result.output == f'Enter node public IP: 0.0.0.0\nCommand failed with following errors:\n--------------------------------------------------\nNode hasn\'t been inited before.\nYou should run < skale node init >\n--------------------------------------------------\nYou can find more info in {G_CONF_HOME}.skale/.skale-cli-log/debug-node-cli.log\n' # noqa
def test_register_node_with_default_port(resource_alloc, mocked_g_config): resp_mock = response_mock(requests.codes.ok, { 'status': 'ok', 'payload': None }) with mock.patch('node_cli.utils.decorators.is_node_inited', return_value=True): result = run_command_mock('node_cli.utils.helper.requests.post', resp_mock, register_node, ['--name', 'test-node', '-d', 'skale.test'], input='0.0.0.0\n') assert result.exit_code == 0 assert result.output == 'Enter node public IP: 0.0.0.0\nNode registered in SKALE manager.\nFor more info run < skale node info >\n' # noqa