예제 #1
0
    def test_all_repos_private(self, session_browser):
        """Test repo accessability when all repos are private."""
        _create_repo(session_browser,
                     'Test-repo',
                     'private',
                     ok_if_exists=True)
        _set_all_repos_private(session_browser)
        if not functional.user_exists(session_browser, 'gitweb_user'):
            functional.create_user(session_browser,
                                   'gitweb_user',
                                   groups=['git-access'])
        if not functional.user_exists(session_browser, 'nogroupuser'):
            functional.create_user(session_browser, 'nogroupuser', groups=[])

        functional.login_with_account(session_browser, functional.base_url,
                                      'gitweb_user')
        assert functional.is_available(session_browser, 'gitweb')
        assert len(functional.find_on_front_page(session_browser,
                                                 'gitweb')) == 1

        functional.login_with_account(session_browser, functional.base_url,
                                      'nogroupuser')
        assert not functional.is_available(session_browser, 'gitweb')
        assert len(functional.find_on_front_page(session_browser,
                                                 'gitweb')) == 0

        functional.logout(session_browser)
        functional.access_url(session_browser, 'gitweb')
        assert functional.is_login_prompt(session_browser)
        assert len(functional.find_on_front_page(session_browser,
                                                 'gitweb')) == 0
    def service_is_available():
        if browser.is_element_present_by_xpath(
                '//h1[text()="Service Unavailable"]'):
            functional.access_url(browser, 'deluge')
            return False

        return True
예제 #3
0
 def test_notifications(self, session_browser):
     """Test that authentication and usage reporting notifications are not
     shown."""
     functional.app_enable(session_browser, self.app_name)
     functional.access_url(session_browser, self.app_name)
     _assert_usage_report_notification_not_shown(session_browser)
     _assert_authentication_notification_not_shown(session_browser)
예제 #4
0
def test_app_access(session_browser):
    """Test that only logged-in users can access Syncthing web interface."""
    functional.logout(session_browser)
    functional.access_url(session_browser, 'syncthing')
    assert functional.is_login_prompt(session_browser)

    functional.login(session_browser)
    functional.access_url(session_browser, 'syncthing')
    assert functional.is_available(session_browser, 'syncthing')
예제 #5
0
    def test_add_bookmark(self, session_browser):
        """Test adding a bookmark."""
        self._shaarli_login(session_browser)
        functional.access_url(session_browser, 'shaarli/admin/add-shaare')

        addlink_form = session_browser.find_by_id('addlink-form')
        addlink_form.find_by_id('shaare').fill('https://freedombox.org/')
        addlink_form.find_by_css('input[type=submit]').click()

        time.sleep(2)
        session_browser.find_by_id('button-save-edit').click()

        links = session_browser.links.find_by_href('https://freedombox.org/')
        assert len(links) > 0
예제 #6
0
    def _shaarli_is_setup(self, session_browser):
        """Finish shaarli installation by creating user."""
        functional.access_url(session_browser, self.app_name)
        if not session_browser.url.endswith('/shaarli/install'):
            # Setup has already been completed.
            return

        username_field = session_browser.find_by_id('username')
        username_field.fill(functional.config['DEFAULT']['username'])

        password_field = session_browser.find_by_id('password')
        password_field.fill(functional.config['DEFAULT']['password'])

        functional.submit(session_browser)
예제 #7
0
    def _shaarli_login(self, session_browser):
        """Login to shaarli."""
        functional.access_url(session_browser, 'shaarli/login')

        login_form = session_browser.find_by_id('login-form')
        if not login_form:
            return

        login_field = login_form.find_by_name('login')
        login_field.fill(functional.config['DEFAULT']['username'])

        password_field = login_form.find_by_name('password')
        password_field.fill(functional.config['DEFAULT']['password'])

        login_form.find_by_css('input[type=submit]').click()
예제 #8
0
def _load_main_interface(browser):
    """Close the dialog boxes that many popup after visiting the URL."""
    functional.access_url(browser, 'syncthing')

    def service_is_available():
        if browser.is_element_present_by_xpath(
                '//h1[text()="Service Unavailable"]'):
            functional.access_url(browser, 'syncthing')
            return False

        return True

    # After a backup restore, service may not be available immediately
    functional.eventually(service_is_available)

    # Wait for javascript loading process to complete
    functional.eventually(lambda: browser.evaluate_script(
        'angular.element("[ng-controller=SyncthingController]").scope()'
        '.thisDevice().name'))

    # Give browser additional time to setup site
    time.sleep(1)
예제 #9
0
def _load_main_interface(browser):
    """Close the dialog boxes that many popup after visiting the URL."""
    functional.access_url(browser, 'syncthing')

    def service_is_available():
        if browser.is_element_present_by_xpath(
                '//h1[text()="Service Unavailable"]'):
            functional.access_url(browser, 'syncthing')
            return False

        return True

    # After a backup restore, service may not be available immediately
    functional.eventually(service_is_available)

    # Wait for javascript loading process to complete
    browser.execute_script('''
        document.is_ui_online = false;
        var old_console_log = console.log;
        console.log = function(message) {
            old_console_log.apply(null, arguments);
            if (message == 'UIOnline') {
                document.is_ui_online = true;
                console.log = old_console_log;
            }
        };
    ''')
    functional.eventually(
        lambda: browser.evaluate_script('document.is_ui_online'), timeout=5)

    # Dismiss the Usage Reporting consent dialog
    functional.eventually(browser.find_by_id, ['ur'])
    usage_reporting = browser.find_by_id('ur').first
    functional.eventually(lambda: usage_reporting.visible, timeout=2)
    if usage_reporting.visible:
        yes_xpath = './/button[contains(@ng-click, "declineUR")]'
        usage_reporting.find_by_xpath(yes_xpath).first.click()
        functional.eventually(lambda: not usage_reporting.visible)
예제 #10
0
def access_application(session_browser, app_name):
    functional.access_url(session_browser, app_name)