Blame test/verify/check-source

Packit Service eebd6f
#!/usr/bin/python3
Packit Service eebd6f
Packit Service eebd6f
# checkpoint:
Packit Service eebd6f
# 1. check default source
Packit Service eebd6f
# 2. add new source
Packit Service eebd6f
Packit Service eebd6f
import composerlib
Packit Service eebd6f
import testlib
Packit Service eebd6f
Packit Service eebd6f
Packit Service eebd6f
@testlib.nondestructive
Packit Service eebd6f
class TestSource(composerlib.ComposerCase):
Packit Service eebd6f
Packit Service eebd6f
    def testBasic(self):
Packit Service eebd6f
        b = self.browser
Packit Service eebd6f
        m = self.machine
Packit Service eebd6f
Packit Service eebd6f
        # new repo info
Packit Service eebd6f
        repo_url = "https://download.copr.fedorainfracloud.org/results" \
Packit Service eebd6f
            "/xiaofwan/sway-copr/fedora-31-x86_64"
Packit Service eebd6f
        repo_name = "sway-copr"
Packit Service eebd6f
Packit Service 0c2606
        self.login_and_go("/composer", superuser=True)
Packit Service eebd6f
        b.wait_present("#main")
Packit Service eebd6f
Packit Service eebd6f
        # open manage sources dialog
Packit Service eebd6f
        drop_down_sel = ".toolbar-pf-action-right #dropdownKebab"
Packit Service eebd6f
        b.click(drop_down_sel)
Packit Service eebd6f
        b.wait_attr(drop_down_sel, "aria-expanded", "true")
Packit Service eebd6f
        b.click("a:contains('Manage Sources')")
Packit Service eebd6f
        b.wait_attr(drop_down_sel, "aria-expanded", "false")
Packit Service eebd6f
        b.wait_present("#cmpsr-modal-manage-sources")
Packit Service eebd6f
Packit Service eebd6f
        # check default loaded sources
Packit Service eebd6f
        sources = m.execute("composer-cli sources list").split()
Packit Service eebd6f
        for source in sources:
Packit Service eebd6f
            b.wait_present("div[data-source={}]".format(source))
Packit Service eebd6f
Packit Service eebd6f
        # add new source
Packit Service eebd6f
        b.click("input[value='Add Source']")
Packit Service eebd6f
Packit Service eebd6f
        # can't add srouce if type is empty
Packit Service eebd6f
        b.set_input_text("#textInput1-modal-source", repo_name)
Packit Service eebd6f
        b.set_input_text("#textInput2-modal-source", repo_url)
Packit Service eebd6f
        b.wait_attr("button:contains('Add Source')", "disabled", "")
Packit Service eebd6f
        b.click("button:contains('Cancel')")
Packit Service eebd6f
        # new source
Packit Service eebd6f
        b.click("input[value='Add Source']")
Packit Service eebd6f
        b.set_input_text("#textInput1-modal-source", repo_name)
Packit Service eebd6f
        b.set_input_text("#textInput2-modal-source", repo_url)
Packit Service eebd6f
        # group actions for select from dropdown menu
Packit Service eebd6f
        dropdown_menu_sel = "#textInput3-modal-source"
Packit Service eebd6f
        b.wait_visible(dropdown_menu_sel)
Packit Service eebd6f
        test_selector = "{} option[value='yum-baseurl']".format(dropdown_menu_sel)
Packit Service eebd6f
        b.wait_present(test_selector)
Packit Service eebd6f
        value_id = b.attr(test_selector, "value")
Packit Service eebd6f
        b.set_val(dropdown_menu_sel, value_id)
Packit Service eebd6f
        b.wait_val(dropdown_menu_sel, value_id)
Packit Service eebd6f
        # groups action done
Packit Service eebd6f
        b.click("button:contains('Add Source')")
Packit Service eebd6f
Packit Service eebd6f
        # HACK: workaround issue https://github.com/osbuild/cockpit-composer/issues/989
Packit Service eebd6f
        # open manage source again to continue running test
Packit Service eebd6f
        if b.cdp.browser == "firefox":
Packit Service eebd6f
            # open manage sources dialog
Packit Service 0c2606
            b.wait_not_present("#cmpsr-modal-manage-sources")
Packit Service eebd6f
            b.click(drop_down_sel)
Packit Service eebd6f
            b.wait_attr(drop_down_sel, "aria-expanded", "true")
Packit Service eebd6f
            b.click("a:contains('Manage Sources')")
Packit Service eebd6f
            b.wait_attr(drop_down_sel, "aria-expanded", "false")
Packit Service eebd6f
            b.wait_present("#cmpsr-modal-manage-sources")
Packit Service eebd6f
Packit Service eebd6f
        # endit new source to enable check SSL certificate and GPG key
Packit Service eebd6f
        b.click("button[aria-label='Edit Source {}']".format(repo_name))
Packit Service eebd6f
        # SSL certificate
Packit Service eebd6f
        b.click("#checkboxInput4-modal-source")
Packit Service eebd6f
        # GPG key
Packit Service eebd6f
        b.click("#checkboxInput5-modal-source")
Packit Service eebd6f
        b.click("button:contains('Update Source')")
Packit Service eebd6f
Packit Service eebd6f
        # package from new added repo is here already
Packit Service eebd6f
        b.click("button:contains('Close')")
Packit Service eebd6f
        b.click("li[data-blueprint=openssh-server] a:contains('Edit Packages')")
Packit Service eebd6f
        # wait for all available compontents visible
Packit Service eebd6f
        with b.wait_timeout(300):
Packit Service eebd6f
            b.wait_present("ul[data-list=inputs]")
Packit Service eebd6f
        # search for kanshi which exists in added repo only
Packit Service eebd6f
        b.set_input_text("#cmpsr-blueprint-input-filter", "kanshi")
Packit Service eebd6f
        b.key_press("\r")
Packit Service eebd6f
        with b.wait_timeout(120):
Packit Service eebd6f
            b.wait_text("#kanshi-input", "kanshi")
Packit Service eebd6f
        # new added reop works, go back
Packit Service eebd6f
        # click back to blueprint link
Packit Service eebd6f
        b.click("a:contains('Back to Blueprints')")
Packit Service eebd6f
        # go to manage source
Packit Service eebd6f
        b.click(drop_down_sel)
Packit Service eebd6f
        b.wait_attr(drop_down_sel, "aria-expanded", "true")
Packit Service eebd6f
        b.click("a:contains('Manage Sources')")
Packit Service eebd6f
        b.wait_attr(drop_down_sel, "aria-expanded", "false")
Packit Service eebd6f
        b.wait_present("#cmpsr-modal-manage-sources")
Packit Service eebd6f
Packit Service eebd6f
        # duplicated source can't be added
Packit Service eebd6f
        b.click("input[value='Add Source']")
Packit Service eebd6f
        b.set_input_text("#textInput2-modal-source", repo_url)
Packit Service eebd6f
        b.wait_text("#textInput2-modal-source-help", "This source path already exists.")
Packit Service eebd6f
        b.click("button:contains('Cancel')")
Packit Service eebd6f
Packit Service eebd6f
        # delete added source
Packit Service eebd6f
        delete_drop_down_sel = "button[aria-label='Source Actions {}']".format(repo_name)
Packit Service eebd6f
        b.click(delete_drop_down_sel)
Packit Service eebd6f
        b.wait_attr(delete_drop_down_sel, "aria-expanded", "true")
Packit Service eebd6f
        b.click("a:contains('Remove Source')")
Packit Service eebd6f
        b.wait_not_present("div[data-source={}]".format(repo_name))
Packit Service eebd6f
Packit Service eebd6f
        # close manage source dialog
Packit Service eebd6f
        b.click("#cmpsr-modal-manage-sources .close")
Packit Service eebd6f
        b.wait_not_present("#cmpsr-modal-manage-sources")
Packit Service eebd6f
Packit Service eebd6f
        # collect code coverage result
Packit Service eebd6f
        self.check_coverage()
Packit Service eebd6f
Packit Service eebd6f
Packit Service eebd6f
if __name__ == '__main__':
Packit Service eebd6f
    testlib.test_main()