Пример #1
0
    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"}
Пример #2
0
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"}
Пример #3
0
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."
Пример #4
0
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)
Пример #5
0
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()
Пример #6
0
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()
Пример #7
0
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}
Пример #8
0
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)
Пример #9
0
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
Пример #10
0
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"]