async def test_password_input(self, ovshell: testing.OpenVarioShellStub) -> None: urwid_mock = UrwidMock() fields = {"Passphrase": {"Type": "psk", "Requirement": "mandatory"}} act = ConnmanInputActivity(ovshell.screen, self.service, fields) ovshell.screen.push_activity(act) wdg = act.create() rendered = urwid_mock.render(wdg) assert "Sample Service" in rendered assert "Passphrase" in rendered assert "Confirm" in rendered # Enter a password urwid_mock.keypress(wdg, ["5", "e", "c", "r", "e", "t"]) urwid_mock.keypress(wdg, ["down", "enter"]) res = await act.done assert res == {"Passphrase": "5ecret"}
def test_PackageSelectionWidget_select_some( ovshell: testing.OpenVarioShellStub, ) -> None: # GIVEN urwid_mock = UrwidMock() packages = [ UpgradablePackage("package-one", "1", "1.1"), UpgradablePackage("package-two", "2.4", "4.3"), ] wdg = PackageSelectionWidget(packages, ovshell.screen) # WHEN # select and deselect package-one, then select package-two urwid_mock.keypress(wdg, ["down", "enter", "enter", "down", "enter"]) # THEN view = urwid_mock.render(wdg) assert "[ ] package-one" in view assert "[X] package-two" in view assert wdg.selected == {"package-two"}
async def test_PackageSelectionWidget_nothing_selected( ovshell: testing.OpenVarioShellStub, ) -> None: # GIVEN urwid_mock = UrwidMock() packages = [ UpgradablePackage("package-one", "1", "1.1"), UpgradablePackage("package-two", "2.4", "4.3"), ] wdg = PackageSelectionWidget(packages, ovshell.screen) assert "Upgrade" in urwid_mock.render(wdg) # WHEN # Press "Upgrade" button without selecting anything urwid_mock.keypress(wdg, ["right", "enter"]) # THEN dialog = ovshell.screen.stub_dialog() assert dialog is not None assert dialog.title == "Nothing to upgrade" assert dialog.content.text == "Please select one or more packages to upgrade."
async def test_activity_download_error( activity_testbed: LogDownloaderActivityTestbed, ) -> None: # GIVEN urwid_mock = UrwidMock() activity_testbed.downloader.stub_files = [ FileInfo("two.igc", ".igc", size=20000, mtime=0, downloaded=False) ] w = activity_testbed.activity.create() activity_testbed.activity.activate() activity_testbed.mountwatcher.stub_mount() activity_testbed.downloader.failing = True # WHEN urwid_mock.keypress(w, ["down", "enter"]) # THEN await asyncio.sleep(0) assert "0 %" in urwid_mock.render(w) await asyncio.sleep(0) assert "50 %" in urwid_mock.render(w) await asyncio.sleep(0) assert "Failed" in urwid_mock.render(w)
def test_mainmenu_exit(ovshell: testing.OpenVarioShellStub) -> None: # GIVEN urwid_mock = UrwidMock() act = MainMenuActivity(ovshell) w = act.create() # WHEN urwid_mock.keypress(w, ["esc"]) # THEN quitdialog = ovshell.screen.stub_dialog() assert quitdialog is not None assert quitdialog.title == "Shut Down?" # Perform the shut down closed = quitdialog.stub_press_button("Shut Down") assert not closed finalact = ovshell.screen.stub_top_activity() assert finalact is not None rendered = urwid_mock.render(finalact.create()) assert "Openvario shutting down..." in rendered assert "OS: Shut down" in ovshell.get_stub_log()
async def test_mainmenu_autostart_cancel(ovshell: testing.OpenVarioShellStub, nosleep: None) -> None: # GIVEN urwid_mock = UrwidMock() app = MockApp() ovshell.settings.set("ovshell.autostart_timeout", 3) ovshell.apps.stub_add_app("mockapp", app, MockExtension()) act = MainMenuActivity(ovshell, "mockapp") w = act.create() act.activate() await asyncio.sleep(0) assert "Press any button to cancel" in urwid_mock.render(w) # WHEN urwid_mock.keypress(w, ["esc"]) await asyncio.sleep(0) # THEN rendered = urwid_mock.render(w) assert "Press any button to cancel" not in rendered assert act.autostart_countdown_task is not None assert act.autostart_countdown_task.cancelled()
async def test_activity_change_settings( activity_testbed: LogDownloaderActivityTestbed, ) -> None: # GIVEN urwid_mock = UrwidMock() # Set initial settings activity_testbed.ovshell.settings.set("fileman.download_logs.filter", { "new": True, "igc": True, "nmea": True }) w = activity_testbed.activity.create() activity_testbed.activity.activate() activity_testbed.mountwatcher.stub_mount() await asyncio.sleep(0) # WHEN # Turn off all settings urwid_mock.keypress(w, ["enter", "right", "enter", "right", "enter"]) # THEN filt = activity_testbed.ovshell.settings.get( "fileman.download_logs.filter", dict) assert filt == {"new": False, "igc": False, "nmea": False}
def test_push_dialog() -> None: # GIVEN urwid_mock = UrwidMock() mainloop = mock.Mock(name="MainLoop") mainloop.screen._palette = {} screen = ScreenManagerImpl(mainloop) act1 = ActivityStub("Main Activity") screen.push_activity(act1) # WHEN dialog = screen.push_dialog("Dialog Title", urwid.Text("Dialog content")) dialog.add_button("Nevermind", lambda: False) dialog.add_button("Close", lambda: True) # THEN view = urwid_mock.render(mainloop.widget) assert "Dialog Title" in view assert "Dialog content" in view assert "Close" in view assert "Nevermind" in view # WHEN # Click the default button (Nevermind) urwid_mock.keypress(mainloop.widget, ["enter"]) # THEN # Dialog did not close assert "Dialog Title" in urwid_mock.render(mainloop.widget) # WHEN # Click the "close" button urwid_mock.keypress(mainloop.widget, ["right", "enter"]) # THEN # Dialog closed assert "Dialog Title" not in urwid_mock.render(mainloop.widget)
async def test_full_upgrade(ovshell: testing.OpenVarioShellStub) -> None: urwid_mock = UrwidMock() opkgstub = OpkgToolsStub( [ UpgradablePackage("package-one", "1", "1.1"), UpgradablePackage("package-two", "2.4", "4.3"), ] ) act = CheckForUpdatesActivity(ovshell, opkgstub) ovshell.screen.push_activity(act) wdg = act.create() view = await _until(wdg, lambda v: "upgradable packages found" in v) assert "2 upgradable packages found" in view assert "Continue" in view urwid_mock.keypress(wdg, ["enter"]) view = urwid_mock.render(wdg) assert "[ ] package-one 1 1.1" in view assert "[ ] package-two 2.4 4.3" in view # Press select all urwid_mock.keypress(wdg, ["enter"]) view = urwid_mock.render(wdg) assert "[X] package-one" in view assert "[X] package-two" in view # Press "Upgrade" urwid_mock.keypress(wdg, ["right", "enter"]) view = urwid_mock.render(wdg) assert "Upgrading packages..." in view view = await _until(wdg, lambda v: "Upgrade completed!" in v) assert "Exit" in view # Press Exit urwid_mock.keypress(wdg, ["enter"]) assert ovshell.screen.stub_top_activity() is None
class TestConnmanManagerActivity: ovshell: testing.OpenVarioShellStub manager: ConnmanManagerStub activity: ConnmanManagerActivity @pytest.fixture(autouse=True) def setup_activity(self, ovshell: testing.OpenVarioShellStub) -> None: self.ovshell = ovshell self.manager = ConnmanManagerStub() self.activity = ConnmanManagerActivity(ovshell, self.manager) self.urwid = UrwidMock() self.wifi_tech = ConnmanTechnology( path="/tech-path", name="WiFi", type="wifi", connected=False, powered=False, ) self.svc = ConnmanService( path="/svc-path", auto_connect=False, favorite=False, name="Service One", security=["wps"], state=ConnmanServiceState.IDLE, strength=32, type="wifi", ) async def test_initial_view(self) -> None: # GIVEN wdg = self.activity.create() self.activity.activate() await asyncio.sleep(0) # WHEN rendered = self.urwid.render(wdg) # THEN assert "Network connections" in rendered assert "Signal" in rendered assert "Service" in rendered assert "State" in rendered async def test_techs_displayed(self) -> None: # GIVEN wdg = self.activity.create() self.activity.activate() self.manager.stub_add_technology(self.wifi_tech) await asyncio.sleep(0) # WHEN rendered = self.urwid.render(wdg) # THEN assert "Technologies" in rendered assert "WiFi" in rendered assert "Scan" in rendered async def test_tech_power_on(self) -> None: # GIVEN wdg = self.activity.create() self.activity.activate() self.manager.stub_add_technology(self.wifi_tech) await asyncio.sleep(0) # WHEN # Press the scan button self.urwid.keypress(wdg, ["up", "up", "enter"]) await asyncio.sleep(0) # THEN rendered = self.urwid.render(wdg) assert "[X] WiFi" in rendered assert self.manager.stub_get_log() == ["Power /tech-path on"] async def test_scan(self) -> None: # GIVEN wdg = self.activity.create() self.activity.activate() self.manager.stub_add_technology(self.wifi_tech) await asyncio.sleep(0) rendered = self.urwid.render(wdg) # WHEN # Press the scan button self.urwid.keypress(wdg, ["up", "enter"]) await asyncio.sleep(0) # THEN rendered = self.urwid.render(wdg) assert self.manager.stub_get_log() == ["Scanning..."] self.manager.stub_scan_completed() await asyncio.sleep(0) assert self.manager.stub_get_log() == [ "Scanning...", "Scanning completed" ] async def test_show_services(self) -> None: # GIVEN wdg = self.activity.create() self.activity.activate() # WHEN self.manager.stub_add_service(self.svc) await asyncio.sleep(0) # THEN rendered = self.urwid.render(wdg) # Signal is displayed assert " ■■" in rendered assert "Service One" in rendered assert "idle" in rendered async def test_service_connect_regular(self) -> None: # GIVEN wdg = self.activity.create() self.activity.activate() assert not self.svc.favorite assert self.svc.state == ConnmanServiceState.IDLE self.manager.stub_add_service(self.svc) await asyncio.sleep(0) # WHEN self.urwid.keypress(wdg, ["enter"]) await asyncio.sleep(0) assert self.manager.stub_get_log() == ["Connect to /svc-path"] async def test_service_connect_favorite(self) -> None: # GIVEN wdg = self.activity.create() self.activity.activate() self.svc.favorite = True self.manager.stub_add_service(self.svc) await asyncio.sleep(0) # WHEN self.urwid.keypress(wdg, ["enter"]) await asyncio.sleep(0) # WHEN dialog = self.ovshell.screen.stub_dialog() assert dialog is not None assert {"Connect", "Forget"} == dialog.buttons.keys() dialog.stub_press_button("Connect") await asyncio.sleep(0) assert self.manager.stub_get_log() == ["Connect to /svc-path"] async def test_service_disconnect(self) -> None: # GIVEN wdg = self.activity.create() self.activity.activate() self.svc.favorite = True self.svc.state = ConnmanServiceState.ONLINE self.manager.stub_add_service(self.svc) await asyncio.sleep(0) # WHEN self.urwid.keypress(wdg, ["enter"]) await asyncio.sleep(0) # WHEN dialog = self.ovshell.screen.stub_dialog() assert dialog is not None assert {"Disconnect", "Forget"} == dialog.buttons.keys() dialog.stub_press_button("Disconnect") await asyncio.sleep(0) assert self.manager.stub_get_log() == ["Disconnect /svc-path"] async def test_service_forget(self) -> None: # GIVEN wdg = self.activity.create() self.activity.activate() self.svc.favorite = True self.svc.state = ConnmanServiceState.ONLINE self.manager.stub_add_service(self.svc) await asyncio.sleep(0) # WHEN self.urwid.keypress(wdg, ["enter"]) await asyncio.sleep(0) # WHEN dialog = self.ovshell.screen.stub_dialog() assert dialog is not None assert {"Disconnect", "Forget"} == dialog.buttons.keys() dialog.stub_press_button("Forget") await asyncio.sleep(0) assert self.manager.stub_get_log() == ["Remove /svc-path"] async def test_teardown_on_exit(self) -> None: # WHEN self.activity.destroy() # THEN assert self.manager.stub_get_log() == ["Teardown"]