Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
SeleniumHQ
GitHub Repository: SeleniumHQ/Selenium
Path: blob/trunk/py/test/selenium/webdriver/common/proxy_tests.py
4004 views
1
# Licensed to the Software Freedom Conservancy (SFC) under one
2
# or more contributor license agreements. See the NOTICE file
3
# distributed with this work for additional information
4
# regarding copyright ownership. The SFC licenses this file
5
# to you under the Apache License, Version 2.0 (the
6
# "License"); you may not use this file except in compliance
7
# with the License. You may obtain a copy of the License at
8
#
9
# http://www.apache.org/licenses/LICENSE-2.0
10
#
11
# Unless required by applicable law or agreed to in writing,
12
# software distributed under the License is distributed on an
13
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
# KIND, either express or implied. See the License for the
15
# specific language governing permissions and limitations
16
# under the License.
17
18
import pytest
19
20
from selenium.webdriver.common.options import ArgOptions
21
from selenium.webdriver.common.proxy import Proxy, ProxyType
22
23
MANUAL_PROXY = {
24
"httpProxy": "some.url:1234",
25
"noProxy": "localhost, foo.localhost",
26
"sslProxy": "ssl.proxy:1234",
27
"socksProxy": "socks.proxy:65555",
28
"socksUsername": "test",
29
"socksPassword": "test",
30
"socksVersion": 5,
31
}
32
33
PAC_PROXY = {
34
"proxyAutoconfigUrl": "http://pac.url:1234",
35
}
36
37
AUTODETECT_PROXY = {
38
"autodetect": True,
39
}
40
41
42
def test_can_add_manual_proxy_to_options():
43
proxy = Proxy()
44
proxy.http_proxy = MANUAL_PROXY["httpProxy"]
45
proxy.no_proxy = MANUAL_PROXY["noProxy"]
46
proxy.sslProxy = MANUAL_PROXY["sslProxy"]
47
proxy.socksProxy = MANUAL_PROXY["socksProxy"]
48
proxy.socksUsername = MANUAL_PROXY["socksUsername"]
49
proxy.socksPassword = MANUAL_PROXY["socksPassword"]
50
proxy.socksVersion = MANUAL_PROXY["socksVersion"]
51
52
options = ArgOptions()
53
options.proxy = proxy
54
55
proxy_capabilities = MANUAL_PROXY.copy()
56
proxy_capabilities["proxyType"] = "manual"
57
assert proxy_capabilities == options.to_capabilities().get("proxy")
58
59
60
def test_can_add_autodetect_proxy_to_options():
61
proxy = Proxy()
62
proxy.auto_detect = AUTODETECT_PROXY["autodetect"]
63
64
options = ArgOptions()
65
options.proxy = proxy
66
67
proxy_capabilities = AUTODETECT_PROXY.copy()
68
proxy_capabilities["proxyType"] = "autodetect"
69
assert proxy_capabilities == options.to_capabilities().get("proxy")
70
71
72
def test_can_add_pacproxy_to_options():
73
proxy = Proxy()
74
proxy.proxy_autoconfig_url = PAC_PROXY["proxyAutoconfigUrl"]
75
76
options = ArgOptions()
77
options.proxy = proxy
78
79
proxy_capabilities = PAC_PROXY.copy()
80
proxy_capabilities["proxyType"] = "pac"
81
assert proxy_capabilities == options.to_capabilities().get("proxy")
82
83
84
def test_can_not_change_initialized_proxy_type():
85
proxy = Proxy(raw={"proxyType": "direct"})
86
with pytest.raises(Exception):
87
proxy.proxy_type = ProxyType.SYSTEM
88
89
proxy = Proxy(raw={"proxyType": ProxyType.DIRECT})
90
with pytest.raises(Exception):
91
proxy.proxy_type = ProxyType.SYSTEM
92
93
94
def test_can_init_manual_proxy():
95
proxy = Proxy(raw=MANUAL_PROXY)
96
97
assert ProxyType.MANUAL == proxy.proxy_type
98
assert MANUAL_PROXY["httpProxy"] == proxy.http_proxy
99
assert MANUAL_PROXY["noProxy"] == proxy.no_proxy
100
assert MANUAL_PROXY["sslProxy"] == proxy.sslProxy
101
assert MANUAL_PROXY["socksProxy"] == proxy.socksProxy
102
assert MANUAL_PROXY["socksUsername"] == proxy.socksUsername
103
assert MANUAL_PROXY["socksPassword"] == proxy.socksPassword
104
assert MANUAL_PROXY["socksVersion"] == proxy.socksVersion
105
106
107
def test_can_init_autodetect_proxy():
108
proxy = Proxy(raw=AUTODETECT_PROXY)
109
assert ProxyType.AUTODETECT == proxy.proxy_type
110
assert AUTODETECT_PROXY["autodetect"] == proxy.auto_detect
111
112
113
def test_can_init_pacproxy():
114
proxy = Proxy(raw=PAC_PROXY)
115
assert ProxyType.PAC == proxy.proxy_type
116
assert PAC_PROXY["proxyAutoconfigUrl"] == proxy.proxy_autoconfig_url
117
118
119
def test_can_init_empty_proxy():
120
proxy = Proxy()
121
assert ProxyType.UNSPECIFIED == proxy.proxy_type
122
assert "" == proxy.http_proxy
123
assert "" == proxy.no_proxy
124
assert "" == proxy.sslProxy
125
assert "" == proxy.socksProxy
126
assert "" == proxy.socksUsername
127
assert "" == proxy.socksPassword
128
assert proxy.auto_detect is False
129
assert "" == proxy.proxy_autoconfig_url
130
assert proxy.socks_version is None
131
132
options = ArgOptions()
133
options.proxy = proxy
134
135
proxy_capabilities = {}
136
proxy_capabilities["proxyType"] = "unspecified"
137
assert proxy_capabilities == options.to_capabilities().get("proxy")
138
139