Source code for cfme.base.ssui

from . import Server
from utils.appliance import ViaSSUI
from utils.appliance.implementations.ssui import navigator, SSUINavigateStep, navigate_to

from cfme.base.credential import Credential
from cfme.configure.access_control import User
from widgetastic_patternfly import Input, Button, FlashMessages
from utils import conf
from utils.browser import ensure_browser_open, quit
from utils.log import logger

from widgetastic.widget import View


[docs]class LoginPage(View): flash = FlashMessages('div#flash_text_div') username = Input(id='inputUsername') password = Input(id='inputPassword') login = Button('Log In')
@Server.address.external_implementation_for(ViaSSUI)
[docs]def address(self): logger.info("USING SSUI ADDRESS") return 'https://{}/self_service/'.format(self.appliance.address)
@Server.login.external_implementation_for(ViaSSUI)
[docs]def login(self, user=None, **kwargs): if not user: username = conf.credentials['default']['username'] password = conf.credentials['default']['password'] cred = Credential(principal=username, secret=password) user = User(credential=cred) login_view = navigate_to(self.appliance.server, 'LoginScreen') login_view.fill({ 'username': user.credential.principal, 'password': user.credential.secret, }) login_view.login.click() login_view.flash.assert_no_error()
@navigator.register(Server)
[docs]class LoggedIn(SSUINavigateStep):
[docs] def step(self): from utils.browser import browser browser() with self.obj.appliance.context.use(ViaSSUI): self.obj.login()
@navigator.register(Server)
[docs]class LoginScreen(SSUINavigateStep): VIEW = LoginPage
[docs] def prerequisite(self): from utils.browser import ensure_browser_open ensure_browser_open(self.obj.appliance.server.address())
[docs] def step(self): # Can be either blank or logged in del self.view # In order to unbind the browser quit() ensure_browser_open(self.obj.appliance.server.address()) if not self.view.is_displayed: raise Exception('Could not open the login screen')