Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from marionette_driver import errors
from marionette_harness import MarionetteTestCase
class TestProxyCapabilities(MarionetteTestCase):
def setUp(self):
super(TestProxyCapabilities, self).setUp()
self.marionette.delete_session()
def tearDown(self):
if not self.marionette.session:
self.marionette.start_session()
with self.marionette.using_context("chrome"):
self.marionette.execute_script(
"""
const { Preferences } = ChromeUtils.importESModule(
"resource://gre/modules/Preferences.sys.mjs"
);
Preferences.resetBranch("network.proxy");
"""
)
super(TestProxyCapabilities, self).tearDown()
def test_proxy_object_in_returned_capabilities(self):
capabilities = {"proxy": {"proxyType": "system"}}
self.marionette.start_session(capabilities)
self.assertEqual(
self.marionette.session_capabilities["proxy"], capabilities["proxy"]
)
def test_proxy_type_autodetect(self):
capabilities = {"proxy": {"proxyType": "autodetect"}}
self.marionette.start_session(capabilities)
self.assertEqual(
self.marionette.session_capabilities["proxy"], capabilities["proxy"]
)
def test_proxy_type_direct(self):
capabilities = {"proxy": {"proxyType": "direct"}}
self.marionette.start_session(capabilities)
self.assertEqual(
self.marionette.session_capabilities["proxy"], capabilities["proxy"]
)
def test_proxy_type_manual(self):
proxy_hostname = "marionette.test"
capabilities = {
"proxy": {
"proxyType": "manual",
"httpProxy": "{}:80".format(proxy_hostname),
"sslProxy": "{}:443".format(proxy_hostname),
"socksProxy": proxy_hostname,
"socksVersion": 4,
}
}
self.marionette.start_session(capabilities)
self.assertEqual(
self.marionette.session_capabilities["proxy"], capabilities["proxy"]
)
def test_proxy_type_manual_socks_requires_version(self):
proxy_port = 4444
proxy_hostname = "marionette.test"
proxy_host = "{}:{}".format(proxy_hostname, proxy_port)
capabilities = {
"proxy": {
"proxyType": "manual",
"socksProxy": proxy_host,
}
}
with self.assertRaises(errors.SessionNotCreatedException):
self.marionette.start_session(capabilities)
def test_proxy_type_manual_no_proxy_on(self):
capabilities = {
"proxy": {
"proxyType": "manual",
"noProxy": ["foo", "bar"],
}
}
self.marionette.start_session(capabilities)
self.assertEqual(
self.marionette.session_capabilities["proxy"], capabilities["proxy"]
)
def test_proxy_type_manual_invalid_no_proxy_on(self):
capabilities = {
"proxy": {
"proxyType": "manual",
"noProxy": "foo, bar",
}
}
with self.assertRaises(errors.SessionNotCreatedException):
self.marionette.start_session(capabilities)
def test_proxy_type_pac(self):
capabilities = {"proxy": {"proxyType": "pac", "proxyAutoconfigUrl": pac_url}}
self.marionette.start_session(capabilities)
self.assertEqual(
self.marionette.session_capabilities["proxy"], capabilities["proxy"]
)
def test_proxy_type_system(self):
capabilities = {"proxy": {"proxyType": "system"}}
self.marionette.start_session(capabilities)
self.assertEqual(
self.marionette.session_capabilities["proxy"], capabilities["proxy"]
)
def test_invalid_proxy_object(self):
capabilities = {"proxy": "I really should be a dictionary"}
with self.assertRaises(errors.SessionNotCreatedException):
self.marionette.start_session(capabilities)
def test_missing_proxy_type(self):
with self.assertRaises(errors.SessionNotCreatedException):
self.marionette.start_session({"proxy": {"proxyAutoconfigUrl": "foobar"}})
def test_invalid_proxy_type(self):
capabilities = {"proxy": {"proxyType": "NOPROXY"}}
with self.assertRaises(errors.SessionNotCreatedException):
self.marionette.start_session(capabilities)
def test_invalid_autoconfig_url_for_pac(self):
with self.assertRaises(errors.SessionNotCreatedException):
self.marionette.start_session({"proxy": {"proxyType": "pac"}})
with self.assertRaises(errors.SessionNotCreatedException):
self.marionette.start_session(
{"proxy": {"proxyType": "pac", "proxyAutoconfigUrl": None}}
)
def test_missing_socks_version_for_manual(self):
capabilities = {
"proxy": {"proxyType": "manual", "socksProxy": "marionette.test"}
}
with self.assertRaises(errors.SessionNotCreatedException):
self.marionette.start_session(capabilities)