RemoteRF 2.2.4__tar.gz → 2.2.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {remoterf-2.2.4/src/remoterf.egg-info → remoterf-2.2.5}/PKG-INFO +1 -1
- {remoterf-2.2.4 → remoterf-2.2.5}/pyproject.toml +1 -1
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/core/app.py +5 -2
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/deployment/homes.py +1 -1
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/remoterf_cli.py +4 -4
- {remoterf-2.2.4 → remoterf-2.2.5/src/remoterf.egg-info}/PKG-INFO +1 -1
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_cli_login_fresh.py +19 -19
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_homes.py +3 -3
- {remoterf-2.2.4 → remoterf-2.2.5}/LICENSE +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/README.md +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/setup.cfg +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/grpc/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/grpc/deployment_capabilities.proto +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/grpc/deployment_capabilities_pb2.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/grpc/deployment_capabilities_pb2_grpc.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/grpc/grpc.proto +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/grpc/grpc_pb2.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/grpc/grpc_pb2_grpc.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/grpc/v2_codec.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/tos_notice.txt +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/utils/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/utils/ansi_codes.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/utils/api_token.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/utils/banner.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/utils/list_string.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/utils/process_arg.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/config/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/config/cert_fetcher.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/config/config.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/core/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/core/acc_login.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/core/banner_note.txt +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/core/direct_path.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/core/dynamic_v2_transport.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/core/grpc_acc.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/core/grpc_client.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/core/secure_channel.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/core/v2_errors.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/deployment/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/deployment/backend.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/deployment/direct.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/deployment/http.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/deployment/state.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/_virtual.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/adalm_pluto/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/adalm_pluto/adalm_pluto_remote.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/dynamic_device.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/dynamic_v2.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/hackrf/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/hackrf/hackrf_remote.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/rtl_sdr/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/rtl_sdr/rtl_sdr_remote.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/sim_sdr/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/sim_sdr/sim_sdr_remote.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/support/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/support/ti_mmwave.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/support/uhd.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/support/uhd_dsp.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/support/uhd_v2.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/ti_mmwave/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/ti_mmwave/ti_mmwave_remote.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/usrp/__init__.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/usrp/usrp_remote.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/drivers/usrp/usrp_remote.pyi +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/version.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf.egg-info/SOURCES.txt +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf.egg-info/dependency_links.txt +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf.egg-info/entry_points.txt +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf.egg-info/requires.txt +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf.egg-info/top_level.txt +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_banner.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_config_address.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_deployment_accounts.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_direct_path_fixed.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_direct_path_partner.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_direct_path_race.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_dynamic_device_codegen.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_dynamic_v2.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_federated_devices.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_fetch_idl_fallback.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_finish_prompt.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_gate_i_direct_path.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_grpc_client_target.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_native_account_credentials.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_native_devices.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_partner_dynamic_v2.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_pluto_virtual.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_process_arg.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_remoterf_cli.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_ti_mmwave.py +0 -0
- {remoterf-2.2.4 → remoterf-2.2.5}/tests/test_upgrade_rescue.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: remoterf
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.5
|
|
4
4
|
Summary: A python API to remotely access signal centric hardware. Client-side only! Courtesy of Wireless Lab @ UCLA & Prof. Ian Roberts.
|
|
5
5
|
Author-email: Ethan Ge <ethoGalaxy@gmail.com>
|
|
6
6
|
License-Expression: GPL-3.0-or-later
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "remoterf"
|
|
7
|
-
version = "2.2.
|
|
7
|
+
version = "2.2.5"
|
|
8
8
|
description = "A python API to remotely access signal centric hardware. Client-side only! Courtesy of Wireless Lab @ UCLA & Prof. Ian Roberts."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "GPL-3.0-or-later"
|
|
@@ -258,7 +258,7 @@ def _account_command(command):
|
|
|
258
258
|
from ..deployment import homes
|
|
259
259
|
typed = pending_username or _ask('Username or Email' if account.is_https_home else 'Username')
|
|
260
260
|
pending_username = None
|
|
261
|
-
# `
|
|
261
|
+
# `alice@ucla` typed at ucla is `alice` there.
|
|
262
262
|
name, where = homes.split_account(typed)
|
|
263
263
|
here = homes.GLOBAL_ACCOUNTS if account.is_https_home else home_name
|
|
264
264
|
account.username = name if where == here else typed
|
|
@@ -1628,9 +1628,12 @@ def run(backend=None, *, register=False, enrollment_code=None, server_label=None
|
|
|
1628
1628
|
# Continue below the banner rather than wiping the screen: with a
|
|
1629
1629
|
# stored login the wipe came a split second after everything appeared.
|
|
1630
1630
|
session_line()
|
|
1631
|
+
from ..deployment import homes
|
|
1632
|
+
# The prompt is the account's full name: alice@ucla, alice@global.
|
|
1633
|
+
where = homes.GLOBAL_ACCOUNTS if account.is_https_home else (home_name or 'remoterf')
|
|
1631
1634
|
while True:
|
|
1632
1635
|
try:
|
|
1633
|
-
inpu = session.prompt(stylize(f'{account.username}@
|
|
1636
|
+
inpu = session.prompt(stylize(f'{account.username}@{where}: ', Sty.BOLD))
|
|
1634
1637
|
if inpu in ('register', 'verify', 'login', 'forgot-password', 'reset-password'):
|
|
1635
1638
|
authenticated = _account_command(inpu)
|
|
1636
1639
|
if inpu == 'reset-password' and not welcome(show_banner=False):
|
|
@@ -273,7 +273,7 @@ GLOBAL_ACCOUNTS = "global"
|
|
|
273
273
|
|
|
274
274
|
|
|
275
275
|
def split_account(text: str) -> tuple[str, str | None]:
|
|
276
|
-
"""`
|
|
276
|
+
"""`alice@ucla` -> ("alice", "ucla"). A bare name, or an email (a dot
|
|
277
277
|
after the @; deployment names never have one), names no deployment."""
|
|
278
278
|
text = text.strip()
|
|
279
279
|
name, at, where = text.rpartition("@")
|
|
@@ -150,7 +150,7 @@ def print_help() -> None:
|
|
|
150
150
|
printf(" remoterf -h | --help", Sty.CYAN, " Show this help", Sty.DEFAULT)
|
|
151
151
|
print()
|
|
152
152
|
printf("Commands:", (Sty.BOLD, Sty.MAGENTA))
|
|
153
|
-
printf(" remoterf -l | --login [target]", Sty.CYAN, " Login: last used, 'global', a home name, or an account (
|
|
153
|
+
printf(" remoterf -l | --login [target]", Sty.CYAN, " Login: last used, 'global', a home name, or an account (username@lab)", Sty.DEFAULT)
|
|
154
154
|
printf(" remoterf -r | --register [global]", Sty.CYAN, " Register with an enrollment code (or a RemoteRF Global account)", Sty.DEFAULT)
|
|
155
155
|
printf(" remoterf homes", Sty.CYAN, " List saved deployment homes", Sty.DEFAULT)
|
|
156
156
|
printf(" remoterf -v | --version", Sty.CYAN, " Print version", Sty.DEFAULT)
|
|
@@ -171,7 +171,7 @@ def print_help() -> None:
|
|
|
171
171
|
printf(" remoterf --login", Sty.GREEN)
|
|
172
172
|
printf(" remoterf --login ucla", Sty.GREEN)
|
|
173
173
|
printf(" remoterf --login global", Sty.GREEN)
|
|
174
|
-
printf(" remoterf --login
|
|
174
|
+
printf(" remoterf --login jdoe@ucla", Sty.GREEN)
|
|
175
175
|
printf(" remoterf homes", Sty.GREEN)
|
|
176
176
|
printf(" remoterf --version", Sty.GREEN)
|
|
177
177
|
printf(" remoterf --config --addr 203.0.113.10:12321", Sty.GREEN)
|
|
@@ -417,10 +417,10 @@ def _login(target: str | None) -> int:
|
|
|
417
417
|
|
|
418
418
|
|
|
419
419
|
def _login_by_username() -> int:
|
|
420
|
-
"""A fresh install: an account says where it lives (`
|
|
420
|
+
"""A fresh install: an account says where it lives (`alice@ucla`), so
|
|
421
421
|
asking for it is enough. Enter registers, as `-l` here always did."""
|
|
422
422
|
try:
|
|
423
|
-
name = input('Account
|
|
423
|
+
name = input('Account (username@lab, Enter to register): ').strip()
|
|
424
424
|
except (EOFError, KeyboardInterrupt):
|
|
425
425
|
print()
|
|
426
426
|
return 1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: remoterf
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.5
|
|
4
4
|
Summary: A python API to remotely access signal centric hardware. Client-side only! Courtesy of Wireless Lab @ UCLA & Prof. Ian Roberts.
|
|
5
5
|
Author-email: Ethan Ge <ethoGalaxy@gmail.com>
|
|
6
6
|
License-Expression: GPL-3.0-or-later
|
|
@@ -29,14 +29,14 @@ def test_login_on_a_fresh_install_registers_on_enter():
|
|
|
29
29
|
def test_an_account_name_says_where_it_lives():
|
|
30
30
|
from remoterf.deployment.homes import split_account
|
|
31
31
|
|
|
32
|
-
assert split_account("
|
|
33
|
-
assert split_account("
|
|
34
|
-
assert split_account("
|
|
35
|
-
assert split_account("
|
|
36
|
-
assert split_account("
|
|
32
|
+
assert split_account(" jdoe@ucla ") == ("jdoe", "ucla")
|
|
33
|
+
assert split_account("JDoe@UCLA") == ("JDoe", "ucla")
|
|
34
|
+
assert split_account("jdoe@global") == ("jdoe", "global")
|
|
35
|
+
assert split_account("jdoe") == ("jdoe", None)
|
|
36
|
+
assert split_account("jdoe@ucla.edu") == ("jdoe@ucla.edu", None) # an email
|
|
37
37
|
assert split_account("a@b@ucla") == ("a@b", "ucla")
|
|
38
38
|
assert split_account("@ucla") == ("@ucla", None)
|
|
39
|
-
assert split_account("
|
|
39
|
+
assert split_account("jdoe@") == ("jdoe@", None)
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
def test_login_on_a_fresh_install_goes_to_the_lab_in_the_account_name():
|
|
@@ -46,7 +46,7 @@ def test_login_on_a_fresh_install_goes_to_the_lab_in_the_account_name():
|
|
|
46
46
|
route = {"kind": "relay", "host": "ucla.global.remoterf.net", "port": 12321}
|
|
47
47
|
with tmp, env, \
|
|
48
48
|
mock.patch("remoterf.config.config.require_tos_for_login", return_value=True), \
|
|
49
|
-
mock.patch("builtins.input", return_value="
|
|
49
|
+
mock.patch("builtins.input", return_value="jdoe@ucla"), \
|
|
50
50
|
mock.patch("remoterf.deployment.homes.register_home",
|
|
51
51
|
return_value=("ucla", {"display_name": "UCLA"}, route)) as register_home, \
|
|
52
52
|
mock.patch.object(remoterf_cli, "_account_shell", return_value=0) as shell:
|
|
@@ -54,13 +54,13 @@ def test_login_on_a_fresh_install_goes_to_the_lab_in_the_account_name():
|
|
|
54
54
|
register_home.assert_called_once_with("ucla.global.remoterf.net")
|
|
55
55
|
assert shell.call_args.kwargs["register"] is False
|
|
56
56
|
assert shell.call_args.kwargs["home"] == "ucla"
|
|
57
|
-
assert shell.call_args.kwargs["username"] == "
|
|
57
|
+
assert shell.call_args.kwargs["username"] == "jdoe"
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
def test_login_on_a_fresh_install_global_bare_names_and_emails_go_to_global():
|
|
61
61
|
from remoterf import remoterf_cli
|
|
62
62
|
|
|
63
|
-
for typed, username in (("
|
|
63
|
+
for typed, username in (("jdoe@global", "jdoe"), ("jdoe", "jdoe"), ("jdoe@ucla.edu", "jdoe@ucla.edu")):
|
|
64
64
|
tmp, env = _fresh_home()
|
|
65
65
|
with tmp, env, \
|
|
66
66
|
mock.patch("remoterf.config.config.require_tos_for_login", return_value=True), \
|
|
@@ -78,7 +78,7 @@ def test_login_to_a_lab_that_does_not_answer():
|
|
|
78
78
|
tmp, env = _fresh_home()
|
|
79
79
|
with tmp, env, \
|
|
80
80
|
mock.patch("remoterf.config.config.require_tos_for_login", return_value=True), \
|
|
81
|
-
mock.patch("builtins.input", return_value="
|
|
81
|
+
mock.patch("builtins.input", return_value="jdoe@nolab"), \
|
|
82
82
|
mock.patch("remoterf.deployment.homes.register_home",
|
|
83
83
|
side_effect=RuntimeError("no such deployment")) as register_home, \
|
|
84
84
|
mock.patch.object(remoterf_cli, "_account_shell") as shell:
|
|
@@ -96,8 +96,8 @@ def test_login_with_an_account_uses_the_saved_home():
|
|
|
96
96
|
mock.patch("remoterf.deployment.homes.homes", return_value={"ucla": {}}), \
|
|
97
97
|
mock.patch("remoterf.deployment.homes.register_home") as register_home, \
|
|
98
98
|
mock.patch.object(remoterf_cli, "_use_home", return_value=0) as use_home:
|
|
99
|
-
assert remoterf_cli._login("
|
|
100
|
-
use_home.assert_called_once_with("ucla", register=False, username="
|
|
99
|
+
assert remoterf_cli._login("jdoe@ucla") == 0
|
|
100
|
+
use_home.assert_called_once_with("ucla", register=False, username="jdoe")
|
|
101
101
|
register_home.assert_not_called()
|
|
102
102
|
|
|
103
103
|
|
|
@@ -190,14 +190,14 @@ def _login_at(home, typed, *, https=False, pending=None):
|
|
|
190
190
|
|
|
191
191
|
|
|
192
192
|
def test_a_found_username_is_not_asked_again():
|
|
193
|
-
username, ask = _login_at("ucla", None, pending="
|
|
194
|
-
assert username == "
|
|
193
|
+
username, ask = _login_at("ucla", None, pending="jdoe")
|
|
194
|
+
assert username == "jdoe"
|
|
195
195
|
ask.assert_called_once_with("Password (Hidden)", hidden=True)
|
|
196
196
|
|
|
197
197
|
|
|
198
198
|
def test_the_full_account_name_works_at_its_own_home_only():
|
|
199
|
-
assert _login_at("ucla", "
|
|
200
|
-
assert _login_at("ucla", "
|
|
201
|
-
assert _login_at("otheruni", "
|
|
202
|
-
assert _login_at(None, "
|
|
203
|
-
assert _login_at(None, "
|
|
199
|
+
assert _login_at("ucla", "jdoe@ucla")[0] == "jdoe"
|
|
200
|
+
assert _login_at("ucla", "jdoe")[0] == "jdoe"
|
|
201
|
+
assert _login_at("otheruni", "jdoe@ucla")[0] == "jdoe@ucla" # not this lab's: no such name here
|
|
202
|
+
assert _login_at(None, "jdoe@global", https=True)[0] == "jdoe"
|
|
203
|
+
assert _login_at(None, "jdoe@ucla.edu", https=True)[0] == "jdoe@ucla.edu" # an email
|
|
@@ -444,7 +444,7 @@ def test_every_command_after_login_goes_native_to_the_home(reachable, monkeypatc
|
|
|
444
444
|
return response
|
|
445
445
|
|
|
446
446
|
monkeypatch.setattr(grpc_acc, "rpc_client", rpc_client)
|
|
447
|
-
account = grpc_acc.RemoteRFAccount("
|
|
447
|
+
account = grpc_acc.RemoteRFAccount("jdoe", "secret")
|
|
448
448
|
# A deployment-native account is not an HTTPS home: no Global in the path.
|
|
449
449
|
assert not account.is_https_home
|
|
450
450
|
|
|
@@ -466,7 +466,7 @@ def test_every_command_after_login_goes_native_to_the_home(reachable, monkeypatc
|
|
|
466
466
|
assert token == "reservation-token"
|
|
467
467
|
# Credentials go to the HOME itself, never through any broker.
|
|
468
468
|
for _, args in sent:
|
|
469
|
-
assert args["un"].string_value == "
|
|
469
|
+
assert args["un"].string_value == "jdoe"
|
|
470
470
|
|
|
471
471
|
# And the transport those calls ride is this HOME's own direct channel.
|
|
472
472
|
monkeypatch.setattr("grpc.secure_channel", lambda *a, **k: mock.Mock())
|
|
@@ -626,7 +626,7 @@ def test_reserve_shows_the_token_even_when_the_driver_fetch_fails(monkeypatch, c
|
|
|
626
626
|
|
|
627
627
|
monkeypatch.setattr(grpc_acc, "rpc_client", rpc_client)
|
|
628
628
|
monkeypatch.setattr("remoterf.drivers.dynamic_device.install_driver", install_driver)
|
|
629
|
-
account = grpc_acc.RemoteRFAccount("
|
|
629
|
+
account = grpc_acc.RemoteRFAccount("jdoe", "secret")
|
|
630
630
|
now = datetime.datetime.now()
|
|
631
631
|
|
|
632
632
|
assert account.reserve_device(0, now, now + datetime.timedelta(hours=1)) == "reservation-token"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf-2.2.4 → remoterf-2.2.5}/src/remoterf/common/grpc/deployment_capabilities_pb2_grpc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|