mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-24 09:27:31 +09:00
252 lines
11 KiB
Python
252 lines
11 KiB
Python
# 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.errors import InvalidArgumentException
|
|
|
|
from marionette_harness import MarionetteTestCase
|
|
|
|
|
|
class TestProxy(MarionetteTestCase):
|
|
|
|
def setUp(self):
|
|
super(TestProxy, self).setUp()
|
|
self.marionette.delete_session()
|
|
|
|
def test_that_we_can_set_a_autodetect_proxy(self):
|
|
capabilities = {"requiredCapabilities":
|
|
{
|
|
"proxy":{
|
|
"proxyType": "autodetect",
|
|
}
|
|
}
|
|
}
|
|
self.marionette.start_session(capabilities)
|
|
result = None
|
|
with self.marionette.using_context('chrome'):
|
|
result = self.marionette.execute_script("""return {
|
|
"proxyType" : Services.prefs.getIntPref('network.proxy.type'),
|
|
}
|
|
""")
|
|
|
|
self.assertEqual(result["proxyType"], 4)
|
|
|
|
def test_that_capabilities_returned_have_proxy_details(self):
|
|
capabilities = {"requiredCapabilities":
|
|
{
|
|
"proxy":{
|
|
"proxyType": "autodetect",
|
|
}
|
|
}
|
|
}
|
|
self.marionette.start_session(capabilities)
|
|
result = self.marionette.session_capabilities
|
|
|
|
self.assertEqual(result["proxy"]["proxyType"], "autodetect")
|
|
|
|
def test_that_we_can_set_a_system_proxy(self):
|
|
capabilities = {"requiredCapabilities":
|
|
{
|
|
"proxy":{
|
|
"proxyType": "system",
|
|
}
|
|
}
|
|
}
|
|
self.marionette.start_session(capabilities)
|
|
result = None
|
|
with self.marionette.using_context('chrome'):
|
|
result = self.marionette.execute_script("""return {
|
|
"proxyType" : Services.prefs.getIntPref('network.proxy.type'),
|
|
}
|
|
""")
|
|
|
|
self.assertEqual(result["proxyType"], 5)
|
|
|
|
def test_we_can_set_a_pac_proxy(self):
|
|
url = "http://marionette.test"
|
|
capabilities = {"requiredCapabilities":
|
|
{
|
|
"proxy":{
|
|
"proxyType": "pac",
|
|
"proxyAutoconfigUrl": url,
|
|
}
|
|
}
|
|
}
|
|
self.marionette.start_session(capabilities)
|
|
result = None
|
|
with self.marionette.using_context('chrome'):
|
|
result = self.marionette.execute_script("""return {
|
|
"proxyType" : Services.prefs.getIntPref('network.proxy.type'),
|
|
"proxyAutoconfigUrl" : Services.prefs.getCharPref('network.proxy.autoconfig_url'),
|
|
}
|
|
""")
|
|
|
|
self.assertEqual(result["proxyType"], 2)
|
|
self.assertEqual(result["proxyAutoconfigUrl"], url, 'proxyAutoconfigUrl was not set')
|
|
|
|
def test_that_we_can_set_a_manual_proxy(self):
|
|
port = 4444
|
|
url = "http://marionette.test"
|
|
capabilities = {"requiredCapabilities":
|
|
{
|
|
"proxy":{
|
|
"proxyType": "manual",
|
|
"ftpProxy": url,
|
|
"ftpProxyPort": port,
|
|
"httpProxy": url,
|
|
"httpProxyPort": port,
|
|
"sslProxy": url,
|
|
"sslProxyPort": port,
|
|
}
|
|
}
|
|
}
|
|
self.marionette.start_session(capabilities)
|
|
result = None
|
|
with self.marionette.using_context('chrome'):
|
|
result = self.marionette.execute_script("""return {
|
|
"proxyType" : Services.prefs.getIntPref('network.proxy.type'),
|
|
"httpProxy" : Services.prefs.getCharPref('network.proxy.http'),
|
|
"httpProxyPort": Services.prefs.getIntPref('network.proxy.http_port'),
|
|
"sslProxy": Services.prefs.getCharPref('network.proxy.ssl'),
|
|
"sslProxyPort": Services.prefs.getIntPref('network.proxy.ssl_port'),
|
|
"ftpProxy": Services.prefs.getCharPref('network.proxy.ftp'),
|
|
"ftpProxyPort": Services.prefs.getIntPref('network.proxy.ftp_port'),
|
|
}
|
|
""")
|
|
|
|
self.assertEqual(result["proxyType"], 1)
|
|
self.assertEqual(result["httpProxy"], url, 'httpProxy was not set')
|
|
self.assertEqual(result["httpProxyPort"], port, 'httpProxyPort was not set')
|
|
self.assertEqual(result["sslProxy"], url, 'sslProxy url was not set')
|
|
self.assertEqual(result["sslProxyPort"], port, 'sslProxyPort was not set')
|
|
self.assertEqual(result["ftpProxy"], url, 'ftpProxy was not set')
|
|
self.assertEqual(result["ftpProxyPort"], port, 'ftpProxyPort was not set')
|
|
|
|
def test_we_can_set_a_manual_proxy_with_a_socks_proxy_with_socks_version(self):
|
|
port = 4444
|
|
url = "http://marionette.test"
|
|
capabilities = {"requiredCapabilities":
|
|
{
|
|
"proxy":{
|
|
"proxyType": "manual",
|
|
"socksProxy": url,
|
|
"socksProxyPort": port,
|
|
"socksVersion": 4,
|
|
"socksUsername": "cake",
|
|
"socksPassword": "made with cake"
|
|
}
|
|
}
|
|
}
|
|
self.marionette.start_session(capabilities)
|
|
result = None
|
|
with self.marionette.using_context('chrome'):
|
|
result = self.marionette.execute_script("""return {
|
|
"proxyType" : Services.prefs.getIntPref('network.proxy.type'),
|
|
"socksProxy" : Services.prefs.getCharPref('network.proxy.socks'),
|
|
"socksProxyPort": Services.prefs.getIntPref('network.proxy.socks_port'),
|
|
"socksVersion": Services.prefs.getIntPref('network.proxy.socks_version'),
|
|
}
|
|
""")
|
|
self.assertEqual(result["socksProxy"], url, 'socksProxy was not set')
|
|
self.assertEqual(result["socksProxyPort"], port, 'socksProxyPort was not set')
|
|
self.assertEqual(result["socksVersion"], 4, 'socksVersion was not set to 4')
|
|
|
|
def test_we_can_set_a_manual_proxy_with_a_socks_proxy_with_no_socks_version(self):
|
|
port = 4444
|
|
url = "http://marionette.test"
|
|
capabilities = {"requiredCapabilities":
|
|
{
|
|
"proxy":{
|
|
"proxyType": "manual",
|
|
"socksProxy": url,
|
|
"socksProxyPort": port,
|
|
"socksUsername": "cake",
|
|
"socksPassword": "made with cake"
|
|
}
|
|
}
|
|
}
|
|
self.marionette.start_session(capabilities)
|
|
result = None
|
|
with self.marionette.using_context('chrome'):
|
|
result = self.marionette.execute_script("""return {
|
|
"proxyType" : Services.prefs.getIntPref('network.proxy.type'),
|
|
"socksProxy" : Services.prefs.getCharPref('network.proxy.socks'),
|
|
"socksProxyPort": Services.prefs.getIntPref('network.proxy.socks_port'),
|
|
"socksVersion": Services.prefs.getIntPref('network.proxy.socks_version'),
|
|
|
|
}
|
|
""")
|
|
self.assertEqual(result["socksProxy"], url, 'socksProxy was not set')
|
|
self.assertEqual(result["socksProxyPort"], port, 'socksProxyPort was not set')
|
|
self.assertEqual(result["socksVersion"], 5, 'socksVersion was not set to 5')
|
|
|
|
def test_when_not_all_manual_proxy_details_are_in_capabilities(self):
|
|
port = 4444
|
|
url = "http://marionette.test"
|
|
capabilities = {"requiredCapabilities":
|
|
{
|
|
"proxy":{
|
|
"proxyType": "manual",
|
|
"ftpProxy": url,
|
|
"ftpProxyPort": port,
|
|
}
|
|
}
|
|
}
|
|
self.marionette.start_session(capabilities)
|
|
result = None
|
|
with self.marionette.using_context('chrome'):
|
|
result = self.marionette.execute_script("""return {
|
|
"proxyType" : Services.prefs.getIntPref('network.proxy.type'),
|
|
"httpProxy" : Services.prefs.getCharPref('network.proxy.http'),
|
|
"httpProxyPort": Services.prefs.getIntPref('network.proxy.http_port'),
|
|
"sslProxy": Services.prefs.getCharPref('network.proxy.ssl'),
|
|
"sslProxyPort": Services.prefs.getIntPref('network.proxy.ssl_port'),
|
|
"ftpProxy": Services.prefs.getCharPref('network.proxy.ftp'),
|
|
"ftpProxyPort": Services.prefs.getIntPref('network.proxy.ftp_port'),
|
|
}
|
|
""")
|
|
|
|
self.assertEqual(result["proxyType"], 1)
|
|
self.assertNotEqual(result["httpProxy"], url,
|
|
'httpProxy was set. {}'.format(result["httpProxy"]))
|
|
self.assertNotEqual(result["httpProxyPort"], port, 'httpProxyPort was set')
|
|
self.assertNotEqual(result["sslProxy"], url, 'sslProxy url was set')
|
|
self.assertNotEqual(result["sslProxyPort"], port, 'sslProxyPort was set')
|
|
self.assertEqual(result["ftpProxy"], url, 'ftpProxy was set')
|
|
self.assertEqual(result["ftpProxyPort"], port, 'ftpProxyPort was set')
|
|
|
|
|
|
|
|
def test_proxy_is_a_string_should_throw_invalid_argument(self):
|
|
capabilities = {"requiredCapabilities":
|
|
{
|
|
"proxy":"I really should be a dictionary"
|
|
}
|
|
}
|
|
try:
|
|
self.marionette.start_session(capabilities)
|
|
self.fail("We should have started a session because proxy should be a dict")
|
|
except InvalidArgumentException as e:
|
|
assert e.message == "Value of 'proxy' should be an object"
|
|
|
|
def test_proxy_is_passed_in_with_no_proxy_doesnt_set_it(self):
|
|
capabilities = {"requiredCapabilities":
|
|
{
|
|
"proxy": {"proxyType": "NOPROXY"},
|
|
}
|
|
}
|
|
self.marionette.start_session(capabilities)
|
|
result = None
|
|
with self.marionette.using_context('chrome'):
|
|
result = self.marionette.execute_script("""return {
|
|
"proxyType": Services.prefs.getIntPref('network.proxy.type'),
|
|
};
|
|
""")
|
|
|
|
self.assertEqual(result["proxyType"], 0)
|
|
|
|
def tearDown(self):
|
|
if not self.marionette.session:
|
|
self.marionette.start_session()
|
|
else:
|
|
self.marionette.restart(clean=True)
|