Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
test_url.py472 linesDownload Raw Back to tests
1# -*- coding: utf-8 -*-2#3import os4import unittest5 6from websocket._url import (7    _is_address_in_network,8    _is_no_proxy_host,9    get_proxy_info,10    parse_url,11)12from websocket._exceptions import WebSocketProxyException13 14"""15test_url.py16websocket - WebSocket client library for Python17 18Copyright 2025 engn33r19 20Licensed under the Apache License, Version 2.0 (the "License");21you may not use this file except in compliance with the License.22You may obtain a copy of the License at23 24    http://www.apache.org/licenses/LICENSE-2.025 26Unless required by applicable law or agreed to in writing, software27distributed under the License is distributed on an "AS IS" BASIS,28WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.29See the License for the specific language governing permissions and30limitations under the License.31"""32 33 34class UrlTest(unittest.TestCase):35    def test_address_in_network(self):36        self.assertTrue(_is_address_in_network("127.0.0.1", "127.0.0.0/8"))37        self.assertTrue(_is_address_in_network("127.1.0.1", "127.0.0.0/8"))38        self.assertFalse(_is_address_in_network("127.1.0.1", "127.0.0.0/24"))39        self.assertTrue(_is_address_in_network("2001:db8::1", "2001:db8::/64"))40        self.assertFalse(_is_address_in_network("2001:db8:1::1", "2001:db8::/64"))41 42    def test_parse_url(self):43        p = parse_url("ws://www.example.com/r")44        self.assertEqual(p[0], "www.example.com")45        self.assertEqual(p[1], 80)46        self.assertEqual(p[2], "/r")47        self.assertEqual(p[3], False)48 49        p = parse_url("ws://www.example.com/r/")50        self.assertEqual(p[0], "www.example.com")51        self.assertEqual(p[1], 80)52        self.assertEqual(p[2], "/r/")53        self.assertEqual(p[3], False)54 55        p = parse_url("ws://www.example.com/")56        self.assertEqual(p[0], "www.example.com")57        self.assertEqual(p[1], 80)58        self.assertEqual(p[2], "/")59        self.assertEqual(p[3], False)60 61        p = parse_url("ws://www.example.com")62        self.assertEqual(p[0], "www.example.com")63        self.assertEqual(p[1], 80)64        self.assertEqual(p[2], "/")65        self.assertEqual(p[3], False)66 67        p = parse_url("ws://www.example.com:8080/r")68        self.assertEqual(p[0], "www.example.com")69        self.assertEqual(p[1], 8080)70        self.assertEqual(p[2], "/r")71        self.assertEqual(p[3], False)72 73        p = parse_url("ws://www.example.com:8080/")74        self.assertEqual(p[0], "www.example.com")75        self.assertEqual(p[1], 8080)76        self.assertEqual(p[2], "/")77        self.assertEqual(p[3], False)78 79        p = parse_url("ws://www.example.com:8080")80        self.assertEqual(p[0], "www.example.com")81        self.assertEqual(p[1], 8080)82        self.assertEqual(p[2], "/")83        self.assertEqual(p[3], False)84 85        p = parse_url("wss://www.example.com:8080/r")86        self.assertEqual(p[0], "www.example.com")87        self.assertEqual(p[1], 8080)88        self.assertEqual(p[2], "/r")89        self.assertEqual(p[3], True)90 91        p = parse_url("wss://www.example.com:8080/r?key=value")92        self.assertEqual(p[0], "www.example.com")93        self.assertEqual(p[1], 8080)94        self.assertEqual(p[2], "/r?key=value")95        self.assertEqual(p[3], True)96 97        self.assertRaises(ValueError, parse_url, "http://www.example.com/r")98 99        p = parse_url("ws://[2a03:4000:123:83::3]/r")100        self.assertEqual(p[0], "2a03:4000:123:83::3")101        self.assertEqual(p[1], 80)102        self.assertEqual(p[2], "/r")103        self.assertEqual(p[3], False)104 105        p = parse_url("ws://[2a03:4000:123:83::3]:8080/r")106        self.assertEqual(p[0], "2a03:4000:123:83::3")107        self.assertEqual(p[1], 8080)108        self.assertEqual(p[2], "/r")109        self.assertEqual(p[3], False)110 111        p = parse_url("wss://[2a03:4000:123:83::3]/r")112        self.assertEqual(p[0], "2a03:4000:123:83::3")113        self.assertEqual(p[1], 443)114        self.assertEqual(p[2], "/r")115        self.assertEqual(p[3], True)116 117        p = parse_url("wss://[2a03:4000:123:83::3]:8080/r")118        self.assertEqual(p[0], "2a03:4000:123:83::3")119        self.assertEqual(p[1], 8080)120        self.assertEqual(p[2], "/r")121        self.assertEqual(p[3], True)122 123 124class IsNoProxyHostTest(unittest.TestCase):125    def setUp(self):126        self.no_proxy = os.environ.get("no_proxy", None)127        if "no_proxy" in os.environ:128            del os.environ["no_proxy"]129 130    def tearDown(self):131        if self.no_proxy:132            os.environ["no_proxy"] = self.no_proxy133        elif "no_proxy" in os.environ:134            del os.environ["no_proxy"]135 136    def test_match_all(self):137        self.assertTrue(_is_no_proxy_host("any.websocket.org", ["*"]))138        self.assertTrue(_is_no_proxy_host("192.168.0.1", ["*"]))139        self.assertFalse(_is_no_proxy_host("192.168.0.1", ["192.168.1.1"]))140        self.assertFalse(141            _is_no_proxy_host("any.websocket.org", ["other.websocket.org"])142        )143        self.assertTrue(144            _is_no_proxy_host("any.websocket.org", ["other.websocket.org", "*"])145        )146        os.environ["no_proxy"] = "*"147        self.assertTrue(_is_no_proxy_host("any.websocket.org", None))148        self.assertTrue(_is_no_proxy_host("192.168.0.1", None))149        os.environ["no_proxy"] = "other.websocket.org, *"150        self.assertTrue(_is_no_proxy_host("any.websocket.org", None))151 152    def test_ip_address(self):153        self.assertTrue(_is_no_proxy_host("127.0.0.1", ["127.0.0.1"]))154        self.assertFalse(_is_no_proxy_host("127.0.0.2", ["127.0.0.1"]))155        self.assertTrue(156            _is_no_proxy_host("127.0.0.1", ["other.websocket.org", "127.0.0.1"])157        )158        self.assertFalse(159            _is_no_proxy_host("127.0.0.2", ["other.websocket.org", "127.0.0.1"])160        )161        os.environ["no_proxy"] = "127.0.0.1"162        self.assertTrue(_is_no_proxy_host("127.0.0.1", None))163        self.assertFalse(_is_no_proxy_host("127.0.0.2", None))164        os.environ["no_proxy"] = "other.websocket.org, 127.0.0.1"165        self.assertTrue(_is_no_proxy_host("127.0.0.1", None))166        self.assertFalse(_is_no_proxy_host("127.0.0.2", None))167 168    def test_ip_address_in_range(self):169        self.assertTrue(_is_no_proxy_host("127.0.0.1", ["127.0.0.0/8"]))170        self.assertTrue(_is_no_proxy_host("127.0.0.2", ["127.0.0.0/8"]))171        self.assertFalse(_is_no_proxy_host("127.1.0.1", ["127.0.0.0/24"]))172        self.assertTrue(_is_no_proxy_host("2001:db8::1", ["2001:db8::/64"]))173        self.assertFalse(_is_no_proxy_host("2001:db8:1::1", ["2001:db8::/64"]))174        os.environ["no_proxy"] = "127.0.0.0/8,2001:db8::/64"175        self.assertTrue(_is_no_proxy_host("127.0.0.1", None))176        self.assertTrue(_is_no_proxy_host("127.0.0.2", None))177        self.assertTrue(_is_no_proxy_host("2001:db8::1", None))178        self.assertFalse(_is_no_proxy_host("2001:db8:1::1", None))179        os.environ["no_proxy"] = "127.0.0.0/24,2001:db8::/64"180        self.assertFalse(_is_no_proxy_host("127.1.0.1", None))181        self.assertFalse(_is_no_proxy_host("2001:db8:1::1", None))182 183    def test_hostname_match(self):184        self.assertTrue(_is_no_proxy_host("my.websocket.org", ["my.websocket.org"]))185        self.assertTrue(186            _is_no_proxy_host(187                "my.websocket.org", ["other.websocket.org", "my.websocket.org"]188            )189        )190        self.assertFalse(_is_no_proxy_host("my.websocket.org", ["other.websocket.org"]))191        os.environ["no_proxy"] = "my.websocket.org"192        self.assertTrue(_is_no_proxy_host("my.websocket.org", None))193        self.assertFalse(_is_no_proxy_host("other.websocket.org", None))194        os.environ["no_proxy"] = "other.websocket.org, my.websocket.org"195        self.assertTrue(_is_no_proxy_host("my.websocket.org", None))196 197    def test_hostname_match_domain(self):198        self.assertTrue(_is_no_proxy_host("any.websocket.org", [".websocket.org"]))199        self.assertTrue(_is_no_proxy_host("my.other.websocket.org", [".websocket.org"]))200        self.assertTrue(201            _is_no_proxy_host(202                "any.websocket.org", ["my.websocket.org", ".websocket.org"]203            )204        )205        self.assertFalse(_is_no_proxy_host("any.websocket.com", [".websocket.org"]))206        os.environ["no_proxy"] = ".websocket.org"207        self.assertTrue(_is_no_proxy_host("any.websocket.org", None))208        self.assertTrue(_is_no_proxy_host("my.other.websocket.org", None))209        self.assertFalse(_is_no_proxy_host("any.websocket.com", None))210        os.environ["no_proxy"] = "my.websocket.org, .websocket.org"211        self.assertTrue(_is_no_proxy_host("any.websocket.org", None))212 213 214class ProxyInfoTest(unittest.TestCase):215    def setUp(self):216        self.http_proxy = os.environ.get("http_proxy", None)217        self.https_proxy = os.environ.get("https_proxy", None)218        self.no_proxy = os.environ.get("no_proxy", None)219        if "http_proxy" in os.environ:220            del os.environ["http_proxy"]221        if "https_proxy" in os.environ:222            del os.environ["https_proxy"]223        if "no_proxy" in os.environ:224            del os.environ["no_proxy"]225 226    def tearDown(self):227        if self.http_proxy:228            os.environ["http_proxy"] = self.http_proxy229        elif "http_proxy" in os.environ:230            del os.environ["http_proxy"]231 232        if self.https_proxy:233            os.environ["https_proxy"] = self.https_proxy234        elif "https_proxy" in os.environ:235            del os.environ["https_proxy"]236 237        if self.no_proxy:238            os.environ["no_proxy"] = self.no_proxy239        elif "no_proxy" in os.environ:240            del os.environ["no_proxy"]241 242    def test_proxy_from_args(self):243        self.assertRaises(244            WebSocketProxyException,245            get_proxy_info,246            "echo.websocket.events",247            False,248            proxy_host="localhost",249        )250        self.assertEqual(251            get_proxy_info(252                "echo.websocket.events", False, proxy_host="localhost", proxy_port=3128253            ),254            ("localhost", 3128, None),255        )256        self.assertEqual(257            get_proxy_info(258                "echo.websocket.events", True, proxy_host="localhost", proxy_port=3128259            ),260            ("localhost", 3128, None),261        )262 263        self.assertEqual(264            get_proxy_info(265                "echo.websocket.events",266                False,267                proxy_host="localhost",268                proxy_port=9001,269                proxy_auth=("a", "b"),270            ),271            ("localhost", 9001, ("a", "b")),272        )273        self.assertEqual(274            get_proxy_info(275                "echo.websocket.events",276                False,277                proxy_host="localhost",278                proxy_port=3128,279                proxy_auth=("a", "b"),280            ),281            ("localhost", 3128, ("a", "b")),282        )283        self.assertEqual(284            get_proxy_info(285                "echo.websocket.events",286                True,287                proxy_host="localhost",288                proxy_port=8765,289                proxy_auth=("a", "b"),290            ),291            ("localhost", 8765, ("a", "b")),292        )293        self.assertEqual(294            get_proxy_info(295                "echo.websocket.events",296                True,297                proxy_host="localhost",298                proxy_port=3128,299                proxy_auth=("a", "b"),300            ),301            ("localhost", 3128, ("a", "b")),302        )303 304        self.assertEqual(305            get_proxy_info(306                "echo.websocket.events",307                True,308                proxy_host="localhost",309                proxy_port=3128,310                no_proxy=["example.com"],311                proxy_auth=("a", "b"),312            ),313            ("localhost", 3128, ("a", "b")),314        )315        self.assertEqual(316            get_proxy_info(317                "echo.websocket.events",318                True,319                proxy_host="localhost",320                proxy_port=3128,321                no_proxy=["echo.websocket.events"],322                proxy_auth=("a", "b"),323            ),324            (None, 0, None),325        )326 327        self.assertEqual(328            get_proxy_info(329                "echo.websocket.events",330                True,331                proxy_host="localhost",332                proxy_port=3128,333                no_proxy=[".websocket.events"],334            ),335            (None, 0, None),336        )337 338    def test_proxy_from_env(self):339        os.environ["http_proxy"] = "http://localhost/"340        self.assertEqual(341            get_proxy_info("echo.websocket.events", False), ("localhost", None, None)342        )343        os.environ["http_proxy"] = "http://localhost:3128/"344        self.assertEqual(345            get_proxy_info("echo.websocket.events", False), ("localhost", 3128, None)346        )347 348        os.environ["http_proxy"] = "http://localhost/"349        os.environ["https_proxy"] = "http://localhost2/"350        self.assertEqual(351            get_proxy_info("echo.websocket.events", False), ("localhost", None, None)352        )353        os.environ["http_proxy"] = "http://localhost:3128/"354        os.environ["https_proxy"] = "http://localhost2:3128/"355        self.assertEqual(356            get_proxy_info("echo.websocket.events", False), ("localhost", 3128, None)357        )358 359        os.environ["http_proxy"] = "http://localhost/"360        os.environ["https_proxy"] = "http://localhost2/"361        self.assertEqual(362            get_proxy_info("echo.websocket.events", True), ("localhost2", None, None)363        )364        os.environ["http_proxy"] = "http://localhost:3128/"365        os.environ["https_proxy"] = "http://localhost2:3128/"366        self.assertEqual(367            get_proxy_info("echo.websocket.events", True), ("localhost2", 3128, None)368        )369 370        os.environ["http_proxy"] = ""371        os.environ["https_proxy"] = "http://localhost2/"372        self.assertEqual(373            get_proxy_info("echo.websocket.events", True), ("localhost2", None, None)374        )375        self.assertEqual(376            get_proxy_info("echo.websocket.events", False), (None, 0, None)377        )378        os.environ["http_proxy"] = ""379        os.environ["https_proxy"] = "http://localhost2:3128/"380        self.assertEqual(381            get_proxy_info("echo.websocket.events", True), ("localhost2", 3128, None)382        )383        self.assertEqual(384            get_proxy_info("echo.websocket.events", False), (None, 0, None)385        )386 387        os.environ["http_proxy"] = "http://localhost/"388        os.environ["https_proxy"] = ""389        self.assertEqual(get_proxy_info("echo.websocket.events", True), (None, 0, None))390        self.assertEqual(391            get_proxy_info("echo.websocket.events", False), ("localhost", None, None)392        )393        os.environ["http_proxy"] = "http://localhost:3128/"394        os.environ["https_proxy"] = ""395        self.assertEqual(get_proxy_info("echo.websocket.events", True), (None, 0, None))396        self.assertEqual(397            get_proxy_info("echo.websocket.events", False), ("localhost", 3128, None)398        )399 400        os.environ["http_proxy"] = "http://a:b@localhost/"401        self.assertEqual(402            get_proxy_info("echo.websocket.events", False),403            ("localhost", None, ("a", "b")),404        )405        os.environ["http_proxy"] = "http://a:b@localhost:3128/"406        self.assertEqual(407            get_proxy_info("echo.websocket.events", False),408            ("localhost", 3128, ("a", "b")),409        )410 411        os.environ["http_proxy"] = "http://a:b@localhost/"412        os.environ["https_proxy"] = "http://a:b@localhost2/"413        self.assertEqual(414            get_proxy_info("echo.websocket.events", False),415            ("localhost", None, ("a", "b")),416        )417        os.environ["http_proxy"] = "http://a:b@localhost:3128/"418        os.environ["https_proxy"] = "http://a:b@localhost2:3128/"419        self.assertEqual(420            get_proxy_info("echo.websocket.events", False),421            ("localhost", 3128, ("a", "b")),422        )423 424        os.environ["http_proxy"] = "http://a:b@localhost/"425        os.environ["https_proxy"] = "http://a:b@localhost2/"426        self.assertEqual(427            get_proxy_info("echo.websocket.events", True),428            ("localhost2", None, ("a", "b")),429        )430        os.environ["http_proxy"] = "http://a:b@localhost:3128/"431        os.environ["https_proxy"] = "http://a:b@localhost2:3128/"432        self.assertEqual(433            get_proxy_info("echo.websocket.events", True),434            ("localhost2", 3128, ("a", "b")),435        )436 437        os.environ["http_proxy"] = (438            "http://john%40example.com:P%40SSWORD@localhost:3128/"439        )440        os.environ["https_proxy"] = (441            "http://john%40example.com:P%40SSWORD@localhost2:3128/"442        )443        self.assertEqual(444            get_proxy_info("echo.websocket.events", True),445            ("localhost2", 3128, ("john@example.com", "P@SSWORD")),446        )447 448        os.environ["http_proxy"] = "http://a:b@localhost/"449        os.environ["https_proxy"] = "http://a:b@localhost2/"450        os.environ["no_proxy"] = "example1.com,example2.com"451        self.assertEqual(452            get_proxy_info("example.1.com", True), ("localhost2", None, ("a", "b"))453        )454        os.environ["http_proxy"] = "http://a:b@localhost:3128/"455        os.environ["https_proxy"] = "http://a:b@localhost2:3128/"456        os.environ["no_proxy"] = "example1.com,example2.com, echo.websocket.events"457        self.assertEqual(get_proxy_info("echo.websocket.events", True), (None, 0, None))458        os.environ["http_proxy"] = "http://a:b@localhost:3128/"459        os.environ["https_proxy"] = "http://a:b@localhost2:3128/"460        os.environ["no_proxy"] = "example1.com,example2.com, .websocket.events"461        self.assertEqual(get_proxy_info("echo.websocket.events", True), (None, 0, None))462 463        os.environ["http_proxy"] = "http://a:b@localhost:3128/"464        os.environ["https_proxy"] = "http://a:b@localhost2:3128/"465        os.environ["no_proxy"] = "127.0.0.0/8, 192.168.0.0/16"466        self.assertEqual(get_proxy_info("127.0.0.1", False), (None, 0, None))467        self.assertEqual(get_proxy_info("192.168.1.1", False), (None, 0, None))468 469 470if __name__ == "__main__":471    unittest.main()472 
codekingpro/portable-devtools · Team Ai