def _join(client, network): """Join the given network. Args: client (two1.server.rest_client.TwentyOneRestClient) an object for sending authenticated requests to the TwentyOne backend network (str): the name of the network being joined. Defaults to 21market Raises: ServerRequestError: if server returns an error code other than 401 """ try: # ensures the zerotier daemon is running zerotier.start_daemon() zt_device_address = zerotier.device_address() response = client.join(network, zt_device_address) if response.ok: network_id = response.json().get("networkid") zerotier.join_network(network_id) logger.info(uxstring.UxString.successful_join.format(click.style(network, fg="magenta"))) return {'joined': True} except exceptions.ServerRequestError as e: if e.status_code == 400: logger.info(uxstring.UxString.invalid_network) return {'joined': False, 'reason': 'invalid network'} else: raise e except subprocess.CalledProcessError as e: logger.info(str(e)) return {'joined': False, 'reason': str(e)}
def _leave(client, network): """Join the given network. Args: client (two1.server.rest_client.TwentyOneRestClient) an object for sending authenticated requests to the TwentyOne backend network (str): the name of the network being joined. Defaults to 21market """ # ensures the zerotier daemon is running zerotier.start_daemon() is_in_network = False for ntwk in zerotier.list_networks(): if ntwk['name'] == network: is_in_network = True nwid = ntwk['nwid'] break if not is_in_network: logger.info('not in network') return {'left': False, 'reason': 'not in network'} try: zerotier.leave_network(nwid) logger.info(uxstring.UxString.successful_leave.format(click.style(network, fg="magenta"))) return {'left': True} except subprocess.CalledProcessError as e: logger.info(str(e)) return {'left': False, 'reason': str(e)}
def _join(client, network): """Join the given network. Args: client (two1.server.rest_client.TwentyOneRestClient) an object for sending authenticated requests to the TwentyOne backend network (str): the name of the network being joined. Defaults to 21market Raises: ServerRequestError: if server returns an error code other than 401 """ try: # ensures the zerotier daemon is running zerotier.start_daemon() zt_device_address = zerotier.device_address() response = client.join(network, zt_device_address) if response.ok: network_id = response.json().get("networkid") zerotier.join_network(network_id) logger.info( uxstring.UxString.successful_join.format( click.style(network, fg="magenta"))) return {'joined': True} except exceptions.ServerRequestError as e: if e.status_code == 400: logger.info(uxstring.UxString.invalid_network) return {'joined': False, 'reason': 'invalid network'} else: raise e except subprocess.CalledProcessError as e: logger.info(str(e)) return {'joined': False, 'reason': str(e)}
def _leave(client, network): """Join the given network. Args: client (two1.server.rest_client.TwentyOneRestClient) an object for sending authenticated requests to the TwentyOne backend network (str): the name of the network being joined. Defaults to 21market """ # ensures the zerotier daemon is running zerotier.start_daemon() is_in_network = False for ntwk in zerotier.list_networks(): if ntwk['name'] == network: is_in_network = True nwid = ntwk['nwid'] break if not is_in_network: logger.info('not in network') return {'left': False, 'reason': 'not in network'} try: zerotier.leave_network(nwid) logger.info( uxstring.UxString.successful_leave.format( click.style(network, fg="magenta"))) return {'left': True} except subprocess.CalledProcessError as e: logger.info(str(e)) return {'left': False, 'reason': str(e)}
def test_start_daemon(is_installed_mock, which_mock, system_mock, check_output_mock, which_side_effect, system_return_value, cmd, outcome): """ Tests various platforms and sytem configs if the daemon can be started """ which_mock.side_effect = which_side_effect system_mock.return_value = system_return_value is_installed_mock.return_value = True if isinstance(outcome, str): check_output_mock.return_value = outcome assert zerotier.start_daemon() == outcome if outcome: check_output_mock.assert_called_once_with(cmd) else: check_output_mock.side_effect = outcome with pytest.raises(outcome): zerotier.start_daemon()
def test_start_daemon( is_installed_mock, which_mock, system_mock, check_output_mock, which_side_effect, system_return_value, cmd, outcome): """ Tests various platforms and sytem configs if the daemon can be started """ which_mock.side_effect = which_side_effect system_mock.return_value = system_return_value is_installed_mock.return_value = True if isinstance(outcome, str): check_output_mock.return_value = outcome assert zerotier.start_daemon() == outcome if outcome: check_output_mock.assert_called_once_with(cmd) else: check_output_mock.side_effect = outcome with pytest.raises(outcome): zerotier.start_daemon()