forked from pool/python-w3lib
which makes tests working with CVE-2021-23336. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-w3lib?expand=0&rev=17
81 lines
3.3 KiB
Diff
81 lines
3.3 KiB
Diff
From 34c62eb265cdb75b748d8aca43a2f8b9581dbd6a Mon Sep 17 00:00:00 2001
|
|
From: Eugenio Lacuesta <eugenio.lacuesta@gmail.com>
|
|
Date: Wed, 10 Mar 2021 12:20:24 -0300
|
|
Subject: [PATCH 1/8] [CI] Run tests on GitHub actions
|
|
|
|
---
|
|
tests/test_url.py | 24 ++++++++++++++----------
|
|
1 file changed, 14 insertions(+), 10 deletions(-)
|
|
delete mode 100644 .github/workflows/build.yml
|
|
create mode 100644 .github/workflows/tests.yml
|
|
|
|
--- a/tests/test_url.py
|
|
+++ b/tests/test_url.py
|
|
@@ -2,11 +2,14 @@
|
|
from __future__ import absolute_import
|
|
import os
|
|
import unittest
|
|
+
|
|
+import pytest
|
|
+from six.moves.urllib.parse import urlparse
|
|
+
|
|
from w3lib.url import (is_url, safe_url_string, safe_download_url,
|
|
url_query_parameter, add_or_replace_parameter, url_query_cleaner,
|
|
file_uri_to_path, parse_data_uri, path_to_file_uri, any_to_uri,
|
|
urljoin_rfc, canonicalize_url, parse_url, add_or_replace_parameters)
|
|
-from six.moves.urllib.parse import urlparse
|
|
|
|
|
|
class UrlTests(unittest.TestCase):
|
|
@@ -76,17 +79,16 @@ class UrlTests(unittest.TestCase):
|
|
def test_safe_url_string_unsafe_chars(self):
|
|
safeurl = safe_url_string(r"http://localhost:8001/unwise{,},|,\,^,[,],`?|=[]&[]=|")
|
|
self.assertEqual(safeurl, r"http://localhost:8001/unwise%7B,%7D,|,%5C,%5E,[,],%60?|=[]&[]=|")
|
|
-
|
|
+
|
|
def test_safe_url_string_quote_path(self):
|
|
safeurl = safe_url_string(u'http://google.com/"hello"', quote_path=True)
|
|
self.assertEqual(safeurl, u'http://google.com/%22hello%22')
|
|
-
|
|
+
|
|
safeurl = safe_url_string(u'http://google.com/"hello"', quote_path=False)
|
|
self.assertEqual(safeurl, u'http://google.com/"hello"')
|
|
-
|
|
+
|
|
safeurl = safe_url_string(u'http://google.com/"hello"')
|
|
self.assertEqual(safeurl, u'http://google.com/%22hello%22')
|
|
-
|
|
|
|
def test_safe_url_string_with_query(self):
|
|
safeurl = safe_url_string(u"http://www.example.com/£?unit=µ")
|
|
@@ -299,10 +301,6 @@ class UrlTests(unittest.TestCase):
|
|
self.assertEqual(add_or_replace_parameter(url, 'arg3', 'nv3'),
|
|
'http://domain/test?arg1=v1&arg2=v2&arg3=nv3')
|
|
|
|
- url = 'http://domain/test?arg1=v1;arg2=v2'
|
|
- self.assertEqual(add_or_replace_parameter(url, 'arg1', 'v3'),
|
|
- 'http://domain/test?arg1=v3&arg2=v2')
|
|
-
|
|
self.assertEqual(add_or_replace_parameter("http://domain/moreInfo.asp?prodID=", 'prodID', '20'),
|
|
'http://domain/moreInfo.asp?prodID=20')
|
|
url = 'http://rmc-offers.co.uk/productlist.asp?BCat=2%2C60&CatID=60'
|
|
@@ -327,6 +325,13 @@ class UrlTests(unittest.TestCase):
|
|
self.assertEqual(add_or_replace_parameter(url, 'arg1', 'v3'),
|
|
'http://domain/test?arg1=v3&arg2=v2')
|
|
|
|
+ @pytest.mark.xfail(reason="https://github.com/scrapy/w3lib/issues/164")
|
|
+ def test_add_or_replace_parameter_fail(self):
|
|
+ self.assertEqual(
|
|
+ add_or_replace_parameter('http://domain/test?arg1=v1;arg2=v2', 'arg1', 'v3'),
|
|
+ 'http://domain/test?arg1=v3&arg2=v2'
|
|
+ )
|
|
+
|
|
def test_add_or_replace_parameters(self):
|
|
url = 'http://domain/test'
|
|
self.assertEqual(add_or_replace_parameters(url, {'arg': 'v'}),
|
|
@@ -741,4 +746,3 @@ class DataURITests(unittest.TestCase):
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|
|
-
|