示例#1
0
    def __init__(self, driver, base_url, file_type, file_content, file_path):
        """Imports the file. Currently the only file_type supported is 'safenet'.
           Either file_content (string) or file_path (string) has to be present.
           If file_content is not None and there is no path then file_content
           is written to a temporary file that is used for the import.
        """
        self.driver = driver
        self.base_url = base_url
        self.file_type = file_type
        self.file_content = file_content
        self.file_path = file_path

        if file_content is not None and file_content != "":
            tf = tempfile.NamedTemporaryFile(delete=False, suffix=".xml")
            tf.write(file_content)
            tf.close()
            self.file_path = tf.name

        self.driver.get(self.base_url + "/manage")
        import_button = self.driver.find_element_by_xpath(u"//ul[@id='menu']//"
                                       "li[a[text()='Import Token File']]")
        time.sleep(1)
        hover(self.driver, import_button)
        time.sleep(1)
        if self.file_type == "safenet":
            self.driver.find_element_by_id("menu_load_aladdin_xml_tokenfile").click()
        else:
            exit(1)
        self.driver.find_element_by_xpath("(//input[@name='file'])[7]").send_keys(self.file_path)
        self.driver.find_element_by_id("button_aladdin_load").click()
示例#2
0
    def test_connection(self):
        """Test the connection with the corresponding button in the UI.
        Return the number of found users.
        """
        self.driver.get(self.base_url + "/manage/")
        time.sleep(1)
        hover(self.driver, self.driver.find_element_by_css_selector('#menu > li'))
        time.sleep(1)
        self.driver.find_element_by_id("menu_edit_resolvers").click()

        resolvers = self.driver.find_elements_by_css_selector("#resolvers_list > ol > li")

        for resolver in resolvers:
            if resolver.text == self.name_for_list:
                resolver.click()

        self.driver.find_element_by_id("button_resolver_edit").click()
        time.sleep(1)
        self.driver.find_element_by_id(self.testbutton_id).click()

        time.sleep(2)
        alert_box = self.driver.find_element_by_id("alert_box_text")
        alert_box_text = alert_box.text
        self.driver.find_element_by_xpath("//button[@type='button' and ancestor::div[@aria-describedby='alert_box']]").click()

        p = re.compile(".*?config seems to be OK! Number of users found: (\d+)")
        m = p.search(alert_box_text)
        if m is None:
            raise Exception("text_connection for " + self.name + " failed: " + alert_box_text)
        return int(m.group(1))
示例#3
0
    def __init__(self, name, driver, base_url):
        """Initialize values and open the menu in the UI"""
        self.name = name
        self.driver = driver
        self.base_url = base_url
        self.name_for_list = ""
        self.testbutton_id = ""

        #Open the LinOTP manage interface and the UserIdResolver menu
        driver.get(self.base_url + "/manage/")
        time.sleep(1)
        hover(self.driver, self.driver.find_element_by_css_selector('#menu > li'))
        time.sleep(1)
        driver.find_element_by_id("menu_edit_resolvers").click()
        driver.find_element_by_id("button_resolver_new").click()
示例#4
0
文件: realm.py 项目: nvdnkpr/LinOTP
 def create(self, driver, base_url):
     """Opens the LinOTP manage interface and the UserIdResolver menu"""
     driver.get(base_url + "/manage/")
     hover(driver, driver.find_element_by_css_selector("#menu > li"))
     driver.find_element_by_id("menu_edit_realms").click()
     driver.find_element_by_id("button_realms_new").click()
     driver.find_element_by_id("realm_name").clear()
     driver.find_element_by_id("realm_name").send_keys(self.name)
     elements = driver.find_elements_by_css_selector("#resolvers_in_realms_select > li")
     resolver_names = [resolver.name_for_list for resolver in self.resolvers]
     ActionChains(driver).key_down(Keys.CONTROL).perform()
     for element in elements:
         if element.text in resolver_names:
             element.click()
     ActionChains(driver).key_up(Keys.CONTROL).perform()
     driver.find_element_by_id("button_editrealms_save").click()
     driver.find_element_by_id("button_realms_close").click()