#!/usr/bin/env python """ test_horizonlogin.py This is a basic test of Horizon functionality. We verify that: 1) Horizon is running, and we can hit the landing page. 2) We can login successfully. This is based on code generated by the Selinum Web IDE. """ import os import socket import unittest import xvfbwrapper from selenium import webdriver from selenium.webdriver.common.by import By HORIZON_IP = os.environ.get("HORIZON_IP", "10.20.20.1") class TestHorizonlogin(unittest.TestCase): def setUp(self): self.display = xvfbwrapper.Xvfb(width=1280, height=720) self.display.start() self.driver = webdriver.PhantomJS() def tearDown(self): self.driver.quit() self.display.stop() def test_horizonlogin(self): self.driver.get("http://{horizon_ip}/".format(horizon_ip=HORIZON_IP)) # Login to horizon! self.driver.find_element(By.ID, "id_username").click() self.driver.find_element(By.ID, "id_username").send_keys("admin") self.driver.find_element(By.ID, "id_password").send_keys("keystone") self.driver.find_element(By.CSS_SELECTOR, "#loginBtn > span").click() # Verify that we can click something on the dashboard -- e.g., # we're still not sitting at the login screen. self.driver.find_element(By.LINK_TEXT, "Images").click() if __name__ == '__main__': # Run our tests, ignorning deprecation warnings and warnings about # unclosed sockets. (TODO: setup a selenium server so that we can # move from PhantomJS, which is deprecated, to to Selenium headless.) unittest.main(warnings='ignore')