forked from oliavd/siteclone
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest.py
More file actions
153 lines (108 loc) · 6.47 KB
/
test.py
File metadata and controls
153 lines (108 loc) · 6.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
from re import split
import sys
import unittest
from unittest.mock import patch, mock_open
class Mock():
def __init__(self, url, headers, proxies):
self.text = ""
def __iter__(self):
return self
def __next__(self) :
raise StopIteration
with patch.object(sys, 'argv', ['', '', 'base_path']):
with patch('requests.get', Mock):
with patch("builtins.open", mock_open(read_data="data")):
from siteclone import clone
class TestClone(unittest.TestCase):
def test_getUrl(self):
url = "https://demo.foo.co.uk/bar/\#top"
url = clone.getUrl(url)
self.assertEqual(url, 'https://demo.foo.co.uk/bar')
url = "https://themes.foo.com/foo/bar/"
url = clone.getUrl(url)
self.assertEqual(url, 'https://themes.foo.com/foo/bar')
url = "https://themes.foo.com/foo/bar"
url = clone.getUrl(url)
self.assertEqual(url, 'https://themes.foo.com/foo/bar')
url = "http://domain.com/foo/bar/demo-music.html\#"
url = clone.getUrl(url)
self.assertEqual(url, 'http://domain.com/foo/bar/demo-music.html')
def test_cleanPath(self):
# clean /// -> /
path = clone.cleanPath("demo.foo.co.uk/bar///assets/images/menu.png")
self.assertEqual(path, "demo.foo.co.uk/bar/assets/images/menu.png")
# clean /./ -> /
path = clone.cleanPath("demo.foo.co.uk/bar/assets/./images/menu.png")
self.assertEqual(path, "demo.foo.co.uk/bar/assets/images/menu.png")
# clean \\/ -> /
path = clone.cleanPath("demo.foo.co.uk/bar\\/assets/images/menu.png")
self.assertEqual(path, "demo.foo.co.uk/bar/assets/images/menu.png")
# clean \/ -> /
path = clone.cleanPath("demo.foo.co.uk/bar\/assets/images/menu.png")
self.assertEqual(path, "demo.foo.co.uk/bar/assets/images/menu.png")
def test_splitUrl(self):
path = clone.splitUrl("https://demo.foo.co.uk/bar/assets/images/menu.png")
self.assertEqual(path.group(1), "https://")
self.assertEqual(path.group(2), "demo.foo.co.uk/bar/assets/images/menu.png")
path = clone.splitUrl("http://demo.foo.co.uk/bar/assets/images/menu.png")
self.assertEqual(path.group(1), "http://")
self.assertEqual(path.group(2), "demo.foo.co.uk/bar/assets/images/menu.png")
path = clone.splitUrl("//demo.foo.co.uk/bar/assets/images/menu.png")
self.assertEqual(path.group(1), "//")
self.assertEqual(path.group(2), "demo.foo.co.uk/bar/assets/images/menu.png")
path = clone.splitUrl("/demo.foo.co.uk/bar/assets/images/menu.png")
self.assertEqual(path.group(1), "/")
self.assertEqual(path.group(2), "demo.foo.co.uk/bar/assets/images/menu.png")
path = clone.splitUrl("demo.foo.co.uk/bar/assets/images/menu.png")
self.assertEqual(path.group(1), None)
self.assertEqual(path.group(2), "demo.foo.co.uk/bar/assets/images/menu.png")
path = clone.splitUrl("./demo.foo.co.uk/bar/assets/images/menu.png")
self.assertEqual(path.group(1), None)
self.assertEqual(path.group(2), "./demo.foo.co.uk/bar/assets/images/menu.png")
def test_getItem(self):
# import with // from an url
item = clone.getItem("https://demo.foo.co.uk/bar/assets/css", "//demo.foo.co.uk/bar/assets/images/menu.png")
self.assertEqual(item, "https://demo.foo.co.uk/bar/assets/images/menu.png")
# absolute path import
item = clone.getItem("https://demo.foo.co.uk/bar/assets/css", "/bar/assets/images/menu.png")
self.assertEqual(item, "https://demo.foo.co.uk/bar/assets/images/menu.png")
# relative import from an url
item = clone.getItem("https://demo.foo.co.uk/bar/assets/css", "../images/menu.png")
self.assertEqual(item, "https://demo.foo.co.uk/bar/assets/images/menu.png")
# import from same path as the url
item = clone.getItem("https://demo.foo.co.uk/bar/assets", "images/menu.png")
self.assertEqual(item, "https://demo.foo.co.uk/bar/assets/images/menu.png")
# import https
item = clone.getItem("https://demo.foo.co.uk/bar/assets", "https://demo.foo.co.uk/bar/assets/images/menu.png")
self.assertEqual(item, "https://demo.foo.co.uk/bar/assets/images/menu.png")
# import http
item = clone.getItem("https://demo.foo.co.uk/bar/assets", "http://demo.foo.co.uk/bar/assets/images/menu.png")
self.assertEqual(item, "http://demo.foo.co.uk/bar/assets/images/menu.png")
# ******* check for the same above but url ends with / ******* #
# import with // from an url
item = clone.getItem("https://demo.foo.co.uk/bar/assets/css/", "//demo.foo.co.uk/bar/assets/images/menu.png")
self.assertEqual(item, "https://demo.foo.co.uk/bar/assets/images/menu.png")
# absolute path import
item = clone.getItem("https://demo.foo.co.uk/bar/assets/css/", "/bar/assets/images/menu.png")
self.assertEqual(item, "https://demo.foo.co.uk/bar/assets/images/menu.png")
# relative import from an url
item = clone.getItem("https://demo.foo.co.uk/bar/assets/css/", "../images/menu.png")
self.assertEqual(item, "https://demo.foo.co.uk/bar/assets/images/menu.png")
# import from same path as the url
item = clone.getItem("https://demo.foo.co.uk/bar/assets/", "images/menu.png")
self.assertEqual(item, "https://demo.foo.co.uk/bar/assets/images/menu.png")
# import https
item = clone.getItem("https://demo.foo.co.uk/bar/assets/", "https://demo.foo.co.uk/bar/assets/images/menu.png")
self.assertEqual(item, "https://demo.foo.co.uk/bar/assets/images/menu.png")
# import http
item = clone.getItem("https://demo.foo.co.uk/bar/assets/", "http://demo.foo.co.uk/bar/assets/images/menu.png")
self.assertEqual(item, "http://demo.foo.co.uk/bar/assets/images/menu.png")
def test_getDownloadPath(self):
path = clone.getDownloadPath("https://demo.foo.co.uk/bar/assets/images/menu.png")
self.assertEqual(path, "base_path/bar/assets/images/menu.png")
path = clone.getDownloadPath("https://demo.foo.co.uk/bar/assets/images/menu.png?foo=bar")
self.assertEqual(path, "base_path/bar/assets/images/menu.png")
path = clone.getDownloadPath("https://demo.foo.co.uk/bar/assets/images/menu.png#top")
self.assertEqual(path, "base_path/bar/assets/images/menu.png")
if __name__ == '__main__':
unittest.main(argv=['first-arg-is-ignored'], exit=False)