示例#1
0
def test_should_preload_info(qtbot):
    with requests_mock.Mocker() as m:
        url = 'http://localhost:8080/cc.xml'
        m.get(url, text=fake_content())
        conf = ConfigBuilder().server(url, {
            "excludes/%s" % url: ['cleanup-artifacts-B'],
            "timezone/%s" % url: 'US/Eastern',
        }).build()

        dialog = ServerConfigurationDialog(url, conf)
        dialog.show()
        qtbot.addWidget(dialog)
        qtbot.mouseClick(dialog.ui.loadUrlButton, QtCore.Qt.LeftButton)

        qtbot.waitUntil(lambda: dialog.ui.projectsList.model() is not None)
        model = dialog.ui.projectsList.model()

        assert model.item(0, 0).hasChildren()
        assert model.item(0, 0).child(0, 0).isCheckable()
        assert model.item(0, 0).child(0, 0).text() == "cleanup-artifacts-B"
        assert model.item(0, 0).child(0, 0).data(Qt.CheckStateRole) == Qt.Unchecked

        def timezone():
            assert dialog.ui.timezoneList.count() > 100
            assert dialog.ui.timezoneList.currentText() == 'US/Eastern'

        qtbot.waitUntil(timezone)
示例#2
0
def test_should_preload_info(qtbot):
    file_path = os.path.realpath(
        os.path.dirname(os.path.abspath(__file__)) +
        "../../../data/cctray.xml")
    url = "file://" + file_path
    conf = ConfigBuilder().server(
        url, {
            "excludes/%s" % url: ['cleanup-artifacts-B'],
            "timezone/%s" % url: 'US/Eastern',
        }).build()

    dialog = ServerConfigurationDialog(url, conf)
    dialog.show()
    qtbot.addWidget(dialog)
    qtbot.mouseClick(dialog.ui.loadUrlButton, QtCore.Qt.LeftButton)

    qtbot.waitUntil(lambda: dialog.ui.projectsList.model() is not None)
    model = dialog.ui.projectsList.model()

    assert model.item(0, 0).hasChildren()
    assert model.item(0, 0).child(0, 0).isCheckable()
    assert model.item(0, 0).child(0, 0).text() == "cleanup-artifacts-B"
    assert model.item(0, 0).child(0, 0).data(Qt.CheckStateRole) == Qt.Unchecked

    def timezone():
        assert dialog.ui.timezoneList.count() > 100
        assert dialog.ui.timezoneList.currentText() == 'US/Eastern'

    qtbot.waitUntil(timezone)
示例#3
0
def test_should_fail_for_bad_url(qtbot, mocker):
    url = "file:///badpath"
    conf = ConfigBuilder().server(url).build()
    dialog = ServerConfigurationDialog(url, conf)
    dialog.show()
    qtbot.addWidget(dialog)
    m = mocker.patch.object(QMessageBox, 'critical',
                            return_value=QMessageBox.No)

    qtbot.mouseClick(dialog.ui.loadUrlButton, QtCore.Qt.LeftButton)

    def alert_shown():
        m.assert_called_once_with(dialog, ANY, ANY)

    qtbot.wait_until(alert_shown)
示例#4
0
 def configure_projects(self):
     url = self.ui.cctrayPathList.selectionModel().currentIndex().data()
     if not url:
         return
     server_config = ServerConfigurationDialog(url, self.conf, self).open()
     if server_config is not None:
         self.conf.save_server_config(server_config)
示例#5
0
 def add_server(self):
     server_config = ServerConfigurationDialog(self.addServerTemplateText, self.conf, self).open()
     if server_config is not None:
         self.conf.save_server_config(server_config)
         urls = self.ui.cctrayPathList.model().stringList()
         urls.append(server_config.url)
         self.ui.cctrayPathList.setModel(QStringListModel(urls))
示例#6
0
def test_should_exclude_projects(qtbot):
    with requests_mock.Mocker() as m:
        url = 'http://localhost:8080/cc.xml'
        m.get(url, text=fake_content())
        conf = ConfigBuilder().server(url).build()
        dialog = ServerConfigurationDialog(url, conf)
        dialog.show()
        qtbot.addWidget(dialog)
        qtbot.mouseClick(dialog.ui.loadUrlButton, QtCore.Qt.LeftButton)

        qtbot.waitUntil(lambda: dialog.ui.projectsList.model() is not None)
        model = dialog.ui.projectsList.model()

        model.item(0, 0).child(0, 0).setCheckState(QtCore.Qt.Unchecked)

        server_config = dialog.get_server_config()
        assert [str(s) for s in server_config.excluded_projects] == ['cleanup-artifacts-B']
示例#7
0
def test_should_show_configured_urls(qtbot):
    with requests_mock.Mocker() as m:
        url = 'http://localhost:8080/cc.xml'
        m.get(url, text=fake_content())
        conf = ConfigBuilder().server(url).build()
        dialog = ServerConfigurationDialog(url, conf)
        dialog.show()
        qtbot.addWidget(dialog)
        qtbot.mouseClick(dialog.ui.loadUrlButton, QtCore.Qt.LeftButton)

        qtbot.waitUntil(lambda: dialog.ui.projectsList.model() is not None)
        model = dialog.ui.projectsList.model()
        assert model.item(0, 0).hasChildren()
        assert model.item(0, 0).child(0, 0).isCheckable()
        assert model.item(0, 0).child(0, 0).data(Qt.CheckStateRole) == Qt.Checked
        assert model.item(0, 0).child(0, 0).text() == "cleanup-artifacts-B"

        assert dialog.ui.timezoneList.currentText() == 'None'
示例#8
0
def test_should_disable_authentication_if_keystore_is_unavailable(qtbot, mocker):
    m = mocker.patch.object(Keystore, 'isAvailable',
                            return_value=False)
    with requests_mock.Mocker() as r:
        url = 'http://localhost:8080/cc.xml'
        r.get(url, text=fake_content())

        conf = ConfigBuilder().server(url).build()
        dialog = ServerConfigurationDialog(url, conf)
        dialog.show()
        qtbot.addWidget(dialog)

        def alert_shown():
            assert not dialog.ui.username.isEnabled()
            assert not dialog.ui.password.isEnabled()
            assert dialog.ui.authenticationSettings.title() == 'Authentication (keyring dependency missing)'

        qtbot.wait_until(alert_shown)
示例#9
0
def test_should_exclude_projects(qtbot):
    file_path = os.path.realpath(
        os.path.dirname(os.path.abspath(__file__)) +
        "../../../data/cctray.xml")
    url = "file://" + file_path
    conf = ConfigBuilder().server(url).build()
    dialog = ServerConfigurationDialog(url, conf)
    dialog.show()
    qtbot.addWidget(dialog)
    qtbot.mouseClick(dialog.ui.loadUrlButton, QtCore.Qt.LeftButton)

    qtbot.waitUntil(lambda: dialog.ui.projectsList.model() is not None)
    model = dialog.ui.projectsList.model()

    model.item(0, 0).child(0, 0).setCheckState(QtCore.Qt.Unchecked)

    server_config = dialog.get_server_config()
    assert [str(s) for s in server_config.excluded_projects
            ] == ['cleanup-artifacts-B']
示例#10
0
def test_should_show_configured_urls(qtbot):
    file_path = os.path.realpath(
        os.path.dirname(os.path.abspath(__file__)) +
        "../../../data/cctray.xml")
    url = "file://" + file_path
    conf = ConfigBuilder().server(url).build()
    dialog = ServerConfigurationDialog(url, conf)
    dialog.show()
    qtbot.addWidget(dialog)
    qtbot.mouseClick(dialog.ui.loadUrlButton, QtCore.Qt.LeftButton)

    qtbot.waitUntil(lambda: dialog.ui.projectsList.model() is not None)
    model = dialog.ui.projectsList.model()
    assert model.item(0, 0).hasChildren()
    assert model.item(0, 0).child(0, 0).isCheckable()
    assert model.item(0, 0).child(0, 0).data(Qt.CheckStateRole) == Qt.Checked
    assert model.item(0, 0).child(0, 0).text() == "cleanup-artifacts-B"

    assert dialog.ui.timezoneList.currentText() == 'None'
示例#11
0
def test_should_disable_authentication_if_keystore_is_unavailable(
        qtbot, mocker):
    file_path = os.path.realpath(
        os.path.dirname(os.path.abspath(__file__)) +
        "../../../data/cctray.xml")
    m = mocker.patch.object(Keystore, 'isAvailable', return_value=False)

    url = "file://" + file_path
    conf = ConfigBuilder().server(url).build()
    dialog = ServerConfigurationDialog(url, conf)
    dialog.show()
    qtbot.addWidget(dialog)

    def alert_shown():
        assert not dialog.ui.username.isEnabled()
        assert not dialog.ui.password.isEnabled()
        assert dialog.ui.authenticationSettings.title(
        ) == 'Authentication (keyring dependency missing)'

    qtbot.wait_until(alert_shown)
示例#12
0
def test_should_save_restore_config(qtbot):
    with requests_mock.Mocker() as m:
        url = 'http://localhost:8080/cc.xml'
        m.get(url, text=fake_content())
        conf = ConfigBuilder().server(url).build()
        dialog = ServerConfigurationDialog(url, conf)
        dialog.show()
        qtbot.addWidget(dialog)
        qtbot.mouseClick(dialog.ui.loadUrlButton, QtCore.Qt.LeftButton)

        qtbot.waitUntil(lambda: dialog.ui.projectsList.model() is not None)
        server_config = dialog.get_server_config()

        conf.save_server_config(server_config)
        dialog = ServerConfigurationDialog(url, conf)
        dialog.show()
        qtbot.addWidget(dialog)