ginIntTest.py 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. # -*- coding: utf-8 -*-
  2. from selenium import webdriver
  3. from selenium.webdriver.common.by import By
  4. from selenium.webdriver.common.keys import Keys
  5. from selenium.webdriver.support.ui import Select
  6. from selenium.common.exceptions import NoSuchElementException
  7. from selenium.common.exceptions import NoAlertPresentException
  8. import unittest, time, re
  9. import os
  10. class GINLanding(unittest.TestCase):
  11. @classmethod
  12. def setUpClass(cls):
  13. ginurl = os.environ["GINURL"]
  14. cls.driver = webdriver.Chrome("bin/chromedriver")
  15. cls.driver.implicitly_wait(3)
  16. cls.base_url = ginurl
  17. cls.verificationErrors = []
  18. cls.accept_next_alert = True
  19. @classmethod
  20. def tearDownClass(cls):
  21. #cls.driver.quit()
  22. return
  23. def setUp(self):
  24. return
  25. def test00_install(self):
  26. driver = self.driver
  27. driver.get(self.base_url + "/install")
  28. driver.find_element_by_css_selector("div.ui.selection.database.type.dropdown").click()
  29. # some wait is needed
  30. time.sleep(1)
  31. driver.find_element_by_xpath("//div[4]").click()
  32. driver.find_element_by_id("db_path").clear()
  33. driver.find_element_by_id("db_path").send_keys("/data/gogs.db")
  34. driver.find_element_by_xpath("//div[@id='sqlite_settings']/div").click()
  35. driver.find_element_by_id("app_name").click()
  36. driver.find_element_by_id("app_name").clear()
  37. driver.find_element_by_id("app_name").send_keys("GINTEST")
  38. driver.find_element_by_id("app_url").click()
  39. driver.find_element_by_id("app_url").clear()
  40. driver.find_element_by_id("app_url").send_keys(self.base_url + "")
  41. driver.find_element_by_css_selector("button.ui.primary.button").click()
  42. self.assertEqual("Sign In", driver.find_element_by_css_selector("h3.ui.top.attached.header").text)
  43. def test01_g_i_n_landing(self):
  44. driver = self.driver
  45. driver.get(self.base_url + "")
  46. driver.find_element_by_link_text("Home").click()
  47. self.assertEqual("Modern Research Data Management for Neuroscience", driver.find_element_by_css_selector("h2").text)
  48. self.assertEqual("...inspired by github, flavoured for science", driver.find_element_by_css_selector("div.ginsubtitle").text)
  49. self.assertEqual("FAQ", driver.find_element_by_link_text("FAQ").text)
  50. self.assertEqual("Register", driver.find_element_by_link_text("Register").text)
  51. self.assertEqual("Sign In", driver.find_element_by_link_text("Sign In").text)
  52. self.assertEqual("GINTEST", driver.title)
  53. def test02_register(self):
  54. driver = self.driver
  55. driver.get(self.base_url + "")
  56. driver.find_element_by_link_text("Register").click()
  57. self.assertEqual("Sign Up", driver.find_element_by_css_selector("h3.ui.top.attached.header").text)
  58. 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)
  59. self.assertEqual("", driver.find_element_by_css_selector("button.ui.green.button").get_attribute("value"))
  60. driver.find_element_by_id("user_name").click()
  61. driver.find_element_by_id("user_name").clear()
  62. driver.find_element_by_id("user_name").send_keys("testuser")
  63. driver.find_element_by_id("email").clear()
  64. driver.find_element_by_id("email").send_keys("test@test.test")
  65. driver.find_element_by_id("password").clear()
  66. driver.find_element_by_id("password").send_keys("test")
  67. driver.find_element_by_id("retype").clear()
  68. driver.find_element_by_id("retype").send_keys("test")
  69. driver.find_element_by_id("full_name").clear()
  70. driver.find_element_by_id("full_name").send_keys("test")
  71. driver.find_element_by_id("affiliation").clear()
  72. driver.find_element_by_id("affiliation").send_keys("tester")
  73. driver.find_element_by_css_selector("button.ui.green.button").click()
  74. self.assertEqual("Sign In", driver.find_element_by_css_selector("h3.ui.top.attached.header").text)
  75. def test03_login(self):
  76. driver = self.driver
  77. self.login()
  78. self.assertEqual("test - Dashboard - GINTEST", driver.title)
  79. def test04_createrepo(self):
  80. driver = self.driver
  81. driver.get(self.base_url + "")
  82. #driver.find_element_by_css_selector("div.full.height").click()
  83. driver.find_element_by_css_selector("i.octicon.octicon-triangle-down").click()
  84. #driver.find_element_by_css_selector("div.ui.dropdown.head.link.jump.item.poping.up.visible").click()
  85. self.assertEqual("New Repository", driver.find_element_by_link_text("New Repository").text)
  86. driver.find_element_by_link_text("New Repository").click()
  87. self.assertEqual("New Repository - GINTEST", driver.title)
  88. driver.find_element_by_id("repo_name").click()
  89. driver.find_element_by_id("repo_name").clear()
  90. driver.find_element_by_id("repo_name").send_keys("testrepo1")
  91. driver.find_element_by_id("description").clear()
  92. driver.find_element_by_id("description").send_keys("this is the first test repository")
  93. driver.find_element_by_css_selector("button.ui.green.button").click()
  94. self.assertEqual("testuser/testrepo1: this is the first test repository - GINTEST", driver.title)
  95. self.assertEqual("LICENSE", driver.find_element_by_link_text("LICENSE").text)
  96. self.assertEqual("README.md", driver.find_element_by_link_text("README.md").text)
  97. def is_element_present(self, how, what):
  98. try: self.driver.find_element(by=how, value=what)
  99. except NoSuchElementException as e: return False
  100. return True
  101. def is_alert_present(self):
  102. try: self.driver.switch_to_alert()
  103. except NoAlertPresentException as e: return False
  104. return True
  105. def close_alert_and_get_its_text(self):
  106. try:
  107. alert = self.driver.switch_to_alert()
  108. alert_text = alert.text
  109. if self.accept_next_alert:
  110. alert.accept()
  111. else:
  112. alert.dismiss()
  113. return alert_text
  114. finally: self.accept_next_alert = True
  115. def tearDown(self):
  116. return
  117. def logout(self):
  118. """
  119. Helper to log out of current session
  120. """
  121. driver = self.driver
  122. driver.get(self.base_url + "/user/logout")
  123. def login(self):
  124. """
  125. Helper to login Testuser
  126. """
  127. driver = self.driver
  128. driver.get(self.base_url + "/user/login")
  129. self.assertEqual("Sign In", driver.find_element_by_css_selector("h3.ui.top.attached.header").text)
  130. self.assertEqual("Sign In", driver.find_element_by_css_selector("button.ui.green.button").text)
  131. driver.find_element_by_id("user_name").click()
  132. driver.find_element_by_id("user_name").clear()
  133. driver.find_element_by_id("user_name").send_keys("testuser")
  134. driver.find_element_by_id("password").clear()
  135. driver.find_element_by_id("password").send_keys("test")
  136. driver.find_element_by_css_selector("button.ui.green.button").click()
  137. if __name__ == "__main__":
  138. unittest.main()