Exemplo n.º 1
0
def config():
    config_parser = ExtendedConfigParser()
    config_parser.add_section('Server')
    config_parser.add_section('Driver')
    return config_parser
Exemplo n.º 2
0
def config():
    config_parser = ExtendedConfigParser()
    config_parser.add_section('Server')
    config_parser.add_section('Driver')
    return config_parser
Exemplo n.º 3
0
class ConfigDriverTests(unittest.TestCase):
    """
    :type config: toolium.config_parser.ExtendedConfigParser or configparser.ConfigParser
    """

    def setUp(self):
        self.config = ExtendedConfigParser()
        self.config.add_section('Server')
        self.config.add_section('Driver')

    def test_create_driver_local_not_configured(self):
        self.config.set('Driver', 'type', 'firefox')
        config_driver = ConfigDriver(self.config)
        config_driver._create_local_driver = lambda: 'local driver mock'
        config_driver._create_remote_driver = lambda: 'remote driver mock'

        driver = config_driver.create_driver()

        assert_equal(driver, 'local driver mock')

    def test_create_driver_local(self):
        self.config.set('Server', 'enabled', 'false')
        self.config.set('Driver', 'type', 'firefox')
        config_driver = ConfigDriver(self.config)
        config_driver._create_local_driver = lambda: 'local driver mock'
        config_driver._create_remote_driver = lambda: 'remote driver mock'

        driver = config_driver.create_driver()

        assert_equal(driver, 'local driver mock')

    def test_create_driver_remote(self):
        self.config.set('Server', 'enabled', 'true')
        self.config.set('Driver', 'type', 'firefox')
        config_driver = ConfigDriver(self.config)
        config_driver._create_local_driver = lambda: 'local driver mock'
        config_driver._create_remote_driver = lambda: 'remote driver mock'

        driver = config_driver.create_driver()

        assert_equal(driver, 'remote driver mock')

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_local_driver_firefox(self, webdriver_mock):
        self.config.set('Driver', 'type', 'firefox')
        config_driver = ConfigDriver(self.config)
        config_driver._create_firefox_profile = lambda: 'firefox profile'

        config_driver._create_local_driver()
        webdriver_mock.Firefox.assert_called_once_with(capabilities=DesiredCapabilities.FIREFOX,
                                                       firefox_profile='firefox profile')

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_local_driver_chrome(self, webdriver_mock):
        self.config.set('Driver', 'type', 'chrome')
        self.config.set('Driver', 'chrome_driver_path', '/tmp/driver')
        config_driver = ConfigDriver(self.config)
        config_driver._create_chrome_options = lambda: 'chrome options'

        config_driver._create_local_driver()
        webdriver_mock.Chrome.assert_called_once_with('/tmp/driver', desired_capabilities=DesiredCapabilities.CHROME,
                                                      chrome_options='chrome options')

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_local_driver_safari(self, webdriver_mock):
        self.config.set('Driver', 'type', 'safari')
        config_driver = ConfigDriver(self.config)

        config_driver._create_local_driver()
        webdriver_mock.Safari.assert_called_once_with(desired_capabilities=DesiredCapabilities.SAFARI)

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_local_driver_opera(self, webdriver_mock):
        self.config.set('Driver', 'type', 'opera')
        self.config.set('Driver', 'opera_driver_path', '/tmp/driver')
        config_driver = ConfigDriver(self.config)

        config_driver._create_local_driver()
        webdriver_mock.Opera.assert_called_once_with(desired_capabilities=DesiredCapabilities.OPERA,
                                                     executable_path='/tmp/driver')

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_local_driver_iexplore(self, webdriver_mock):
        self.config.set('Driver', 'type', 'iexplore')
        self.config.set('Driver', 'explorer_driver_path', '/tmp/driver')
        config_driver = ConfigDriver(self.config)

        config_driver._create_local_driver()
        webdriver_mock.Ie.assert_called_once_with('/tmp/driver', capabilities=DesiredCapabilities.INTERNETEXPLORER)

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_local_driver_edge(self, webdriver_mock):
        self.config.set('Driver', 'type', 'edge')
        self.config.set('Driver', 'edge_driver_path', '/tmp/driver')
        config_driver = ConfigDriver(self.config)

        config_driver._create_local_driver()
        webdriver_mock.Edge.assert_called_once_with('/tmp/driver', capabilities=DesiredCapabilities.EDGE)

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_local_driver_phantomjs(self, webdriver_mock):
        self.config.set('Driver', 'type', 'phantomjs')
        self.config.set('Driver', 'phantomjs_driver_path', '/tmp/driver')
        config_driver = ConfigDriver(self.config)

        config_driver._create_local_driver()
        webdriver_mock.PhantomJS.assert_called_once_with(desired_capabilities=DesiredCapabilities.PHANTOMJS,
                                                         executable_path='/tmp/driver')

    def test_create_local_driver_android(self):
        self.config.set('Driver', 'type', 'android')
        config_driver = ConfigDriver(self.config)
        config_driver._create_remote_driver = lambda: 'remote driver mock'

        driver = config_driver._create_local_driver()
        assert_equal(driver, 'remote driver mock')

    def test_create_local_driver_ios(self):
        self.config.set('Driver', 'type', 'ios')
        config_driver = ConfigDriver(self.config)
        config_driver._create_remote_driver = lambda: 'remote driver mock'

        driver = config_driver._create_local_driver()
        assert_equal(driver, 'remote driver mock')

    def test_create_local_driver_iphone(self):
        self.config.set('Driver', 'type', 'iphone')
        config_driver = ConfigDriver(self.config)
        config_driver._create_remote_driver = lambda: 'remote driver mock'

        driver = config_driver._create_local_driver()
        assert_equal(driver, 'remote driver mock')

    def test_create_local_driver_unknown_driver(self):
        self.config.set('Driver', 'type', 'unknown')
        config_driver = ConfigDriver(self.config)

        with assert_raises(Exception) as cm:
            config_driver._create_local_driver()
        assert_equal('Unknown driver unknown', str(cm.exception))

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_local_driver_capabilities(self, webdriver_mock):
        self.config.set('Driver', 'type', 'firefox')
        self.config.add_section('Capabilities')
        self.config.set('Capabilities', 'version', '45')
        config_driver = ConfigDriver(self.config)
        config_driver._create_firefox_profile = lambda: 'firefox profile'

        config_driver._create_local_driver()
        capabilities = DesiredCapabilities.FIREFOX
        capabilities['version'] = '45'
        webdriver_mock.Firefox.assert_called_once_with(capabilities=capabilities,
                                                       firefox_profile='firefox profile')

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_remote_driver_firefox(self, webdriver_mock):
        self.config.set('Server', 'host', '10.20.30.40')
        self.config.set('Server', 'port', '5555')
        self.config.set('Driver', 'type', 'firefox')
        config_driver = ConfigDriver(self.config)

        # Firefox profile mock
        class ProfileMock(object):
            encoded = 'encoded profile'

        config_driver._create_firefox_profile = mock.MagicMock(return_value=ProfileMock())

        config_driver._create_remote_driver()
        capabilities = DesiredCapabilities.FIREFOX
        capabilities['firefox_profile'] = 'encoded profile'
        webdriver_mock.Remote.assert_called_once_with(command_executor='http://10.20.30.40:5555/wd/hub',
                                                      desired_capabilities=capabilities)

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_remote_driver_chrome(self, webdriver_mock):
        self.config.set('Server', 'host', '10.20.30.40')
        self.config.set('Server', 'port', '5555')
        self.config.set('Driver', 'type', 'chrome')
        config_driver = ConfigDriver(self.config)

        # Chrome options mock
        chrome_options = mock.MagicMock()
        chrome_options.to_capabilities.return_value = {'chromeOptions': 'chrome options'}
        config_driver._create_chrome_options = mock.MagicMock(return_value=chrome_options)

        config_driver._create_remote_driver()
        capabilities = DesiredCapabilities.CHROME
        capabilities['chromeOptions'] = 'chrome options'
        webdriver_mock.Remote.assert_called_once_with(command_executor='http://10.20.30.40:5555/wd/hub',
                                                      desired_capabilities=capabilities)

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_remote_driver_safari(self, webdriver_mock):
        self.config.set('Server', 'host', '10.20.30.40')
        self.config.set('Server', 'port', '5555')
        self.config.set('Driver', 'type', 'safari')
        config_driver = ConfigDriver(self.config)

        config_driver._create_remote_driver()
        capabilities = DesiredCapabilities.SAFARI
        webdriver_mock.Remote.assert_called_once_with(command_executor='http://10.20.30.40:5555/wd/hub',
                                                      desired_capabilities=capabilities)

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_remote_driver_opera(self, webdriver_mock):
        self.config.set('Server', 'host', '10.20.30.40')
        self.config.set('Server', 'port', '5555')
        self.config.set('Driver', 'type', 'opera')
        config_driver = ConfigDriver(self.config)

        config_driver._create_remote_driver()
        capabilities = DesiredCapabilities.OPERA
        capabilities['opera.autostart'] = True
        capabilities['opera.arguments'] = '-fullscreen'
        webdriver_mock.Remote.assert_called_once_with(command_executor='http://10.20.30.40:5555/wd/hub',
                                                      desired_capabilities=capabilities)

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_remote_driver_iexplore(self, webdriver_mock):
        self.config.set('Server', 'host', '10.20.30.40')
        self.config.set('Server', 'port', '5555')
        self.config.set('Driver', 'type', 'iexplore')
        config_driver = ConfigDriver(self.config)

        config_driver._create_remote_driver()
        capabilities = DesiredCapabilities.INTERNETEXPLORER
        webdriver_mock.Remote.assert_called_once_with(command_executor='http://10.20.30.40:5555/wd/hub',
                                                      desired_capabilities=capabilities)

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_remote_driver_edge(self, webdriver_mock):
        self.config.set('Server', 'host', '10.20.30.40')
        self.config.set('Server', 'port', '5555')
        self.config.set('Driver', 'type', 'edge')
        config_driver = ConfigDriver(self.config)

        config_driver._create_remote_driver()
        capabilities = DesiredCapabilities.EDGE
        webdriver_mock.Remote.assert_called_once_with(command_executor='http://10.20.30.40:5555/wd/hub',
                                                      desired_capabilities=capabilities)

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_remote_driver_phantomjs(self, webdriver_mock):
        self.config.set('Server', 'host', '10.20.30.40')
        self.config.set('Server', 'port', '5555')
        self.config.set('Driver', 'type', 'phantomjs')
        config_driver = ConfigDriver(self.config)

        config_driver._create_remote_driver()
        capabilities = DesiredCapabilities.PHANTOMJS
        webdriver_mock.Remote.assert_called_once_with(command_executor='http://10.20.30.40:5555/wd/hub',
                                                      desired_capabilities=capabilities)

    @mock.patch('toolium.config_driver.appiumdriver')
    def test_create_remote_driver_android(self, appiumdriver_mock):
        self.config.set('Server', 'host', '10.20.30.40')
        self.config.set('Server', 'port', '5555')
        self.config.set('Driver', 'type', 'android')
        self.config.add_section('AppiumCapabilities')
        self.config.set('AppiumCapabilities', 'automationName', 'Appium')
        self.config.set('AppiumCapabilities', 'platformName', 'Android')
        config_driver = ConfigDriver(self.config)

        config_driver._create_remote_driver()
        capabilities = {'automationName': 'Appium', 'platformName': 'Android'}
        appiumdriver_mock.Remote.assert_called_once_with(command_executor='http://10.20.30.40:5555/wd/hub',
                                                         desired_capabilities=capabilities)

    @mock.patch('toolium.config_driver.appiumdriver')
    def test_create_remote_driver_ios(self, appiumdriver_mock):
        self.config.set('Server', 'host', '10.20.30.40')
        self.config.set('Server', 'port', '5555')
        self.config.set('Driver', 'type', 'ios')
        self.config.add_section('AppiumCapabilities')
        self.config.set('AppiumCapabilities', 'automationName', 'Appium')
        self.config.set('AppiumCapabilities', 'platformName', 'iOS')
        config_driver = ConfigDriver(self.config)

        config_driver._create_remote_driver()
        capabilities = {'automationName': 'Appium', 'platformName': 'iOS'}
        appiumdriver_mock.Remote.assert_called_once_with(command_executor='http://10.20.30.40:5555/wd/hub',
                                                         desired_capabilities=capabilities)

    @mock.patch('toolium.config_driver.appiumdriver')
    def test_create_remote_driver_iphone(self, appiumdriver_mock):
        self.config.set('Server', 'host', '10.20.30.40')
        self.config.set('Server', 'port', '5555')
        self.config.set('Driver', 'type', 'iphone')
        self.config.add_section('AppiumCapabilities')
        self.config.set('AppiumCapabilities', 'automationName', 'Appium')
        self.config.set('AppiumCapabilities', 'platformName', 'iOS')
        config_driver = ConfigDriver(self.config)

        config_driver._create_remote_driver()
        capabilities = {'automationName': 'Appium', 'platformName': 'iOS'}
        appiumdriver_mock.Remote.assert_called_once_with(command_executor='http://10.20.30.40:5555/wd/hub',
                                                         desired_capabilities=capabilities)

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_remote_driver_version_platform(self, webdriver_mock):
        self.config.set('Server', 'host', '10.20.30.40')
        self.config.set('Server', 'port', '5555')
        self.config.set('Driver', 'type', 'iexplore-11-on-WIN10')
        config_driver = ConfigDriver(self.config)

        config_driver._create_remote_driver()
        capabilities = DesiredCapabilities.INTERNETEXPLORER
        capabilities['version'] = '11'
        capabilities['platform'] = 'WIN10'
        webdriver_mock.Remote.assert_called_once_with(command_executor='http://10.20.30.40:5555/wd/hub',
                                                      desired_capabilities=capabilities)

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_remote_driver_version(self, webdriver_mock):
        self.config.set('Server', 'host', '10.20.30.40')
        self.config.set('Server', 'port', '5555')
        self.config.set('Driver', 'type', 'iexplore-11')
        config_driver = ConfigDriver(self.config)

        config_driver._create_remote_driver()
        capabilities = DesiredCapabilities.INTERNETEXPLORER
        capabilities['version'] = '11'
        webdriver_mock.Remote.assert_called_once_with(command_executor='http://10.20.30.40:5555/wd/hub',
                                                      desired_capabilities=capabilities)

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_remote_driver_capabilities(self, webdriver_mock):
        self.config.set('Server', 'host', '10.20.30.40')
        self.config.set('Server', 'port', '5555')
        self.config.set('Driver', 'type', 'iexplore-11')
        self.config.add_section('Capabilities')
        self.config.set('Capabilities', 'version', '11')
        config_driver = ConfigDriver(self.config)

        config_driver._create_remote_driver()
        capabilities = DesiredCapabilities.INTERNETEXPLORER
        capabilities['version'] = '11'
        webdriver_mock.Remote.assert_called_once_with(command_executor='http://10.20.30.40:5555/wd/hub',
                                                      desired_capabilities=capabilities)

    def test_convert_property_type_true(self):
        config_driver = ConfigDriver(self.config)
        value = 'True'
        assert_equal(config_driver._convert_property_type(value), True)

    def test_convert_property_type_false(self):
        config_driver = ConfigDriver(self.config)
        value = 'False'
        assert_equal(config_driver._convert_property_type(value), False)

    def test_convert_property_type_dict(self):
        config_driver = ConfigDriver(self.config)
        value = "{'a': 5}"
        assert_equal(config_driver._convert_property_type(value), {'a': 5})

    def test_convert_property_type_int(self):
        config_driver = ConfigDriver(self.config)
        value = '5'
        assert_equal(config_driver._convert_property_type(value), 5)

    def test_convert_property_type_str(self):
        config_driver = ConfigDriver(self.config)
        value = 'string'
        assert_equal(config_driver._convert_property_type(value), value)

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_firefox_profile(self, webdriver_mock):
        self.config.add_section('Firefox')
        self.config.set('Firefox', 'profile', '/tmp')
        self.config.add_section('FirefoxPreferences')
        self.config.set('FirefoxPreferences', 'browser.download.folderList', '2')
        self.config.add_section('FirefoxExtensions')
        self.config.set('FirefoxExtensions', 'firebug', 'resources/firebug-3.0.0-beta.3.xpi')
        config_driver = ConfigDriver(self.config)

        config_driver._create_firefox_profile()
        webdriver_mock.FirefoxProfile.assert_called_once_with(profile_directory='/tmp')
        webdriver_mock.FirefoxProfile().set_preference.assert_called_once_with('browser.download.folderList', 2)
        webdriver_mock.FirefoxProfile().update_preferences.assert_called_once_with()
        webdriver_mock.FirefoxProfile().add_extension.assert_called_once_with('resources/firebug-3.0.0-beta.3.xpi')

    @mock.patch('toolium.config_driver.webdriver')
    def test_create_chrome_options(self, webdriver_mock):
        self.config.add_section('ChromePreferences')
        self.config.set('ChromePreferences', 'download.default_directory', '/tmp')
        self.config.add_section('ChromeMobileEmulation')
        self.config.set('ChromeMobileEmulation', 'deviceName', 'Google Nexus 5')
        self.config.add_section('ChromeArguments')
        self.config.set('ChromeArguments', 'lang', 'es')
        config_driver = ConfigDriver(self.config)

        config_driver._create_chrome_options()
        webdriver_mock.ChromeOptions.assert_called_once_with()
        webdriver_mock.ChromeOptions().add_experimental_option.assert_has_calls(
            [mock.call('prefs', {'download.default_directory': '/tmp'}),
             mock.call('mobileEmulation', {'deviceName': 'Google Nexus 5'})])
        webdriver_mock.ChromeOptions().add_argument.assert_called_once_with('lang=es')