123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- # -*- coding: utf-8 -*-
- from selenium import webdriver
- from selenium.webdriver.common.by import By
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.support.ui import Select
- from selenium.common.exceptions import NoSuchElementException
- from selenium.common.exceptions import NoAlertPresentException
- import unittest, time, re
- import os
- class GINLanding(unittest.TestCase):
- @classmethod
- def setUpClass(cls):
- ginurl = os.environ["GINURL"]
- cls.driver = webdriver.Chrome("bin/chromedriver")
- cls.driver.implicitly_wait(3)
- cls.base_url = ginurl
- cls.verificationErrors = []
- cls.accept_next_alert = True
-
- @classmethod
- def tearDownClass(cls):
- #cls.driver.quit()
- return
-
- def setUp(self):
- return
- def test00_install(self):
- driver = self.driver
- driver.get(self.base_url + "/install")
- driver.find_element_by_css_selector("div.ui.selection.database.type.dropdown").click()
- # some wait is needed
- time.sleep(1)
- driver.find_element_by_xpath("//div[4]").click()
- driver.find_element_by_id("db_path").clear()
- driver.find_element_by_id("db_path").send_keys("/data/gogs.db")
- driver.find_element_by_xpath("//div[@id='sqlite_settings']/div").click()
- driver.find_element_by_id("app_name").click()
- driver.find_element_by_id("app_name").clear()
- driver.find_element_by_id("app_name").send_keys("GINTEST")
- driver.find_element_by_id("app_url").click()
- driver.find_element_by_id("app_url").clear()
- driver.find_element_by_id("app_url").send_keys(self.base_url + "")
- driver.find_element_by_css_selector("button.ui.primary.button").click()
- self.assertEqual("Sign In", driver.find_element_by_css_selector("h3.ui.top.attached.header").text)
- def test01_g_i_n_landing(self):
- driver = self.driver
- driver.get(self.base_url + "")
- driver.find_element_by_link_text("Home").click()
- self.assertEqual("Modern Research Data Management for Neuroscience", driver.find_element_by_css_selector("h2").text)
- self.assertEqual("...inspired by github, flavoured for science", driver.find_element_by_css_selector("div.ginsubtitle").text)
- self.assertEqual("FAQ", driver.find_element_by_link_text("FAQ").text)
- self.assertEqual("Register", driver.find_element_by_link_text("Register").text)
- self.assertEqual("Sign In", driver.find_element_by_link_text("Sign In").text)
- self.assertEqual("GINTEST", driver.title)
-
- def test02_register(self):
- driver = self.driver
- driver.get(self.base_url + "")
- driver.find_element_by_link_text("Register").click()
- self.assertEqual("Sign Up", driver.find_element_by_css_selector("h3.ui.top.attached.header").text)
- self.assertEqual("Please note!\nFor Registration we require only username, password and email. Please use an institutional email to register. Otherwise you will only be able to use a subset of gins functionality and your maximum repository size will be dramatically reduced", driver.find_element_by_css_selector("div.ui.piled.yellow.segment").text)
- self.assertEqual("", driver.find_element_by_css_selector("button.ui.green.button").get_attribute("value"))
- driver.find_element_by_id("user_name").click()
- driver.find_element_by_id("user_name").clear()
- driver.find_element_by_id("user_name").send_keys("testuser")
- driver.find_element_by_id("email").clear()
- driver.find_element_by_id("email").send_keys("test@test.test")
- driver.find_element_by_id("password").clear()
- driver.find_element_by_id("password").send_keys("test")
- driver.find_element_by_id("retype").clear()
- driver.find_element_by_id("retype").send_keys("test")
- driver.find_element_by_id("full_name").clear()
- driver.find_element_by_id("full_name").send_keys("test")
- driver.find_element_by_id("affiliation").clear()
- driver.find_element_by_id("affiliation").send_keys("tester")
- driver.find_element_by_css_selector("button.ui.green.button").click()
- self.assertEqual("Sign In", driver.find_element_by_css_selector("h3.ui.top.attached.header").text)
- def test03_login(self):
- driver = self.driver
- self.login()
- self.assertEqual("test - Dashboard - GINTEST", driver.title)
- def test04_createrepo(self):
- driver = self.driver
- driver.get(self.base_url + "")
- #driver.find_element_by_css_selector("div.full.height").click()
- driver.find_element_by_css_selector("i.octicon.octicon-triangle-down").click()
- #driver.find_element_by_css_selector("div.ui.dropdown.head.link.jump.item.poping.up.visible").click()
- self.assertEqual("New Repository", driver.find_element_by_link_text("New Repository").text)
- driver.find_element_by_link_text("New Repository").click()
- self.assertEqual("New Repository - GINTEST", driver.title)
- driver.find_element_by_id("repo_name").click()
- driver.find_element_by_id("repo_name").clear()
- driver.find_element_by_id("repo_name").send_keys("testrepo1")
- driver.find_element_by_id("description").clear()
- driver.find_element_by_id("description").send_keys("this is the first test repository")
- driver.find_element_by_css_selector("button.ui.green.button").click()
- self.assertEqual("testuser/testrepo1: this is the first test repository - GINTEST", driver.title)
- self.assertEqual("LICENSE", driver.find_element_by_link_text("LICENSE").text)
- self.assertEqual("README.md", driver.find_element_by_link_text("README.md").text)
- def is_element_present(self, how, what):
- try: self.driver.find_element(by=how, value=what)
- except NoSuchElementException as e: return False
- return True
-
- def is_alert_present(self):
- try: self.driver.switch_to_alert()
- except NoAlertPresentException as e: return False
- return True
-
- def close_alert_and_get_its_text(self):
- try:
- alert = self.driver.switch_to_alert()
- alert_text = alert.text
- if self.accept_next_alert:
- alert.accept()
- else:
- alert.dismiss()
- return alert_text
- finally: self.accept_next_alert = True
-
- def tearDown(self):
- return
- def logout(self):
- """
- Helper to log out of current session
- """
- driver = self.driver
- driver.get(self.base_url + "/user/logout")
-
- def login(self):
- """
- Helper to login Testuser
- """
- driver = self.driver
- driver.get(self.base_url + "/user/login")
- self.assertEqual("Sign In", driver.find_element_by_css_selector("h3.ui.top.attached.header").text)
- self.assertEqual("Sign In", driver.find_element_by_css_selector("button.ui.green.button").text)
- driver.find_element_by_id("user_name").click()
- driver.find_element_by_id("user_name").clear()
- driver.find_element_by_id("user_name").send_keys("testuser")
- driver.find_element_by_id("password").clear()
- driver.find_element_by_id("password").send_keys("test")
- driver.find_element_by_css_selector("button.ui.green.button").click()
- if __name__ == "__main__":
- unittest.main()
|