Last active
December 17, 2015 04:59
-
-
Save octaflop/5554880 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import unittest | |
| from selenium import webdriver | |
| # from selenium.common.exceptions import NoSuchElementException | |
| from selenium.webdriver.common.keys import Keys | |
| import time | |
| import os | |
| import re | |
| import uuid | |
| class RegisterUser(unittest.TestCase): | |
| """ | |
| A basic user registration pattern. | |
| TODO: finish | |
| Includes an example of grabbing off of the /tmp/ for validation email. | |
| TODO: Perhaps let this inherit from LoginLogout | |
| """ | |
| def setUp(self): | |
| random_email = "%s" % uuid.uuid1() | |
| self.test_user = { | |
| "first_name": "Register Test", | |
| "last_name": "Selenium", | |
| "email": "fake_%[email protected]" % random_email[:7], | |
| "password": "password" | |
| } | |
| self.chrome_browser = webdriver.Chrome() | |
| self.ff_browser = webdriver.Firefox() | |
| # self.pjs_browser = webdriver.PhantomJS() | |
| self.URL = "http://localhost:8000" | |
| def _find_last_email(self): | |
| os.chdir("/tmp/zaneprep-messages") | |
| files = os.listdir(".") | |
| files.sort(key=os.path.getmtime, reverse=True) | |
| return files[0] | |
| def _extract_link_and_make_http(self, filename): | |
| with open(filename) as f: | |
| found = re.search("(?P<url>https?://[^\s]+)", f.read()).group('url') | |
| return 'http://' + found[8:] | |
| def _register(self, browser): | |
| browser.get(self.URL) | |
| # Pop-up the Log In box | |
| elem_login = browser.find_element_by_link_text("Log In") | |
| elem_login.click() | |
| time.sleep(2) | |
| elem_reg_email = browser.find_element_by_id("id_email") | |
| elem_reg_fname = browser.find_element_by_id("id_first_name") | |
| elem_reg_lname = browser.find_element_by_id("id_last_name") | |
| elem_reg_password1 = browser.find_element_by_id("id_password1") | |
| elem_reg_password2 = browser.find_element_by_id("id_password2") | |
| elem_reg_agree = browser.find_element_by_name("tos_agree") | |
| elem_reg_submit = browser.find_element_by_id("create-account") | |
| elem_reg_email.send_keys(self.test_user['email']) | |
| elem_reg_fname.send_keys(self.test_user['first_name']) | |
| elem_reg_lname.send_keys(self.test_user['last_name']) | |
| elem_reg_password1.send_keys(self.test_user['password']) | |
| elem_reg_password2.send_keys(self.test_user['password']) | |
| elem_reg_agree.click() | |
| elem_reg_submit.click() | |
| time.sleep(2) | |
| # Now we need to parse the /tmp/zaneprep-messages folder for the latest email | |
| # and change the activation link to something non-SSL | |
| self.activation_url = self._extract_link_and_make_http(self._find_last_email()) | |
| browser.get(self.activation_url) | |
| # Now we use this link to login | |
| elem_email = browser.find_element_by_name("email") | |
| elem_password = browser.find_element_by_name("password") | |
| elem_email.send_keys(self.test_user["email"]) | |
| elem_password.send_keys(self.test_user["password"]) | |
| elem_password.send_keys(Keys.RETURN) # Login | |
| time.sleep(2) | |
| self.assertIn("Home / Wooters / Zane Prep", browser.title) | |
| # Probably need a more explicit ID here | |
| elem_userdropdown = browser.find_element_by_class_name("dropdown-toggle") | |
| elem_userdropdown.click() | |
| time.sleep(3) # So the dropdown is distinctly seen | |
| elem_logout = browser.find_element_by_link_text("Logout") | |
| elem_logout.click() | |
| def test_chrome_user_register(self): | |
| self._register(self.chrome_browser) | |
| def test_ff_user_login(self): | |
| self._register(self.ff_browser) | |
| # def test_pjs_user_login(self): | |
| # self._register(self.pjs_browser) | |
| def tearDown(self): | |
| self.chrome_browser.close() | |
| self.ff_browser.close() | |
| # self.pjs_browser.close() | |
| if __name__ == "__main__": | |
| unittest.main() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # coding: utf-8 | |
| import unittest | |
| from selenium import webdriver | |
| # from selenium.common.exceptions import NoSuchElementException | |
| from selenium.webdriver.common.keys import Keys | |
| import time | |
| import os | |
| import re | |
| import uuid | |
| class RegisterUser(unittest.TestCase): | |
| """ | |
| A basic user registration pattern. | |
| TODO: finish | |
| Includes an example of grabbing off of the /tmp/ for validation email. | |
| TODO: Perhaps let this inherit from LoginLogout | |
| """ | |
| def setUp(self): | |
| random_email = "%s" % uuid.uuid1() | |
| self.test_user = { | |
| "first_name": "Register Test", | |
| "last_name": "Selenium", | |
| "email": "fake_%[email protected]" % random_email[:7], | |
| "password": "password" | |
| } | |
| self.pjs_browser = webdriver.PhantomJS() | |
| self.URL = "http://localhost:8000" | |
| def _find_last_email(self): | |
| os.chdir("/tmp/zaneprep-messages") | |
| files = os.listdir(".") | |
| files.sort(key=os.path.getmtime, reverse=True) | |
| return files[0] | |
| def _extract_link_and_make_http(self, filename): | |
| with open(filename) as f: | |
| found = re.search("(?P<url>https?://[^\s]+)", f.read()).group('url') | |
| return 'http://' + found[8:] | |
| def _register(self, browser): | |
| browser.get(self.URL) | |
| # Pop-up the Log In box | |
| elem_login = browser.find_element_by_link_text("Log In") | |
| elem_login.click() | |
| time.sleep(2) | |
| elem_reg_email = browser.find_element_by_id("id_email") | |
| elem_reg_fname = browser.find_element_by_id("id_first_name") | |
| elem_reg_lname = browser.find_element_by_id("id_last_name") | |
| elem_reg_password1 = browser.find_element_by_id("id_password1") | |
| elem_reg_password2 = browser.find_element_by_id("id_password2") | |
| elem_reg_agree = browser.find_element_by_name("tos_agree") | |
| elem_reg_submit = browser.find_element_by_id("create-account") | |
| elem_reg_email.send_keys(self.test_user['email']) | |
| elem_reg_fname.send_keys(self.test_user['first_name']) | |
| elem_reg_lname.send_keys(self.test_user['last_name']) | |
| elem_reg_password1.send_keys(self.test_user['password']) | |
| elem_reg_password2.send_keys(self.test_user['password']) | |
| elem_reg_agree.click() | |
| elem_reg_submit.click() | |
| time.sleep(2) | |
| # Now we need to parse the /tmp/zaneprep-messages folder for the latest email | |
| # and change the activation link to something non-SSL | |
| self.activation_url = self._extract_link_and_make_http(self._find_last_email()) | |
| browser.get(self.activation_url) | |
| # Now we use this link to login | |
| elem_email = browser.find_element_by_name("email") | |
| elem_password = browser.find_element_by_name("password") | |
| elem_email.send_keys(self.test_user["email"]) | |
| elem_password.send_keys(self.test_user["password"]) | |
| elem_password.send_keys(Keys.RETURN) # Login | |
| time.sleep(2) | |
| self.assertIn("Home / Wooters / Zane Prep", browser.title) | |
| # Probably need a more explicit ID here | |
| elem_userdropdown = browser.find_element_by_class_name("dropdown-toggle") | |
| elem_userdropdown.click() | |
| time.sleep(3) # So the dropdown is distinctly seen | |
| elem_logout = browser.find_element_by_link_text("Logout") | |
| elem_logout.click() | |
| def test_pjs_user_login(self): | |
| self._register(self.pjs_browser) | |
| def tearDown(self): | |
| self.pjs_browser.close() | |
| if __name__ == "__main__": | |
| unittest.main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment