|
15 | 15 |
|
16 | 16 | import webcompat
|
17 | 17 | from webcompat.helpers import format_link_header
|
| 18 | +from webcompat.helpers import get_browser_name |
| 19 | +from webcompat.helpers import get_browser |
| 20 | +from webcompat.helpers import get_os |
18 | 21 | from webcompat.helpers import normalize_api_params
|
19 | 22 | from webcompat.helpers import parse_link_header
|
20 | 23 | from webcompat.helpers import rewrite_and_sanitize_link
|
21 | 24 | from webcompat.helpers import rewrite_links
|
22 | 25 | from webcompat.helpers import sanitize_link
|
23 |
| -from webcompat.helpers import get_browser_name |
24 |
| -from webcompat.helpers import get_browser |
25 | 26 |
|
26 | 27 |
|
27 | 28 | ACCESS_TOKEN_LINK = '<https://api.github.com/repositories/17839063/issues?per_page=50&page=3&access_token=12345>; rel="next", <https://api.github.com/repositories/17839063/issues?access_token=12345&per_page=50&page=4>; rel="last", <https://api.github.com/repositories/17839063/issues?per_page=50&access_token=12345&page=1>; rel="first", <https://api.github.com/repositories/17839063/issues?per_page=50&page=1&access_token=12345>; rel="prev"' # nopep8
|
|
30 | 31 | REWRITTEN_ISSUES_LINK_HEADER = '</api/issues?per_page=50&page=3>; rel="next", </api/issues?per_page=50&page=4>; rel="last", </api/issues?per_page=50&page=1>; rel="first", </api/issues?per_page=50&page=1>; rel="prev"' # nopep8
|
31 | 32 | REWRITTEN_SEARCH_LINK_HEADER = '</api/issues/search?q=taco&page=2>; rel="next", </api/issues/search?q=taco&page=26>; rel="last"' # nopep8
|
32 | 33 | PARSED_LINKED_HEADERS = [{'link': 'https://api.github.com/repositories/17839063/issues?per_page=50&page=3', 'rel': 'next'}, {'link': 'https://api.github.com/repositories/17839063/issues?per_page=50&page=4', 'rel': 'last'}, {'link': 'https://api.github.com/repositories/17839063/issues?per_page=50&page=1', 'rel': 'first'}, {'link': 'https://api.github.com/repositories/17839063/issues?per_page=50&page=1', 'rel': 'prev'}] # nopep8
|
33 |
| -NON_TABLET_UA = "Mozilla/5.0 (Android; Mobile; rv:40.0) Gecko/40.0 Firefox/40.0" # nopep8 |
34 |
| -TABLET_UA = "Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0" # nopep8 |
35 |
| -PARSED_NON_TABLET_BROWSER_NAME = "firefox mobile" |
36 |
| -PARSED_TABLET_BROWSER_NAME = "firefox mobile tablet" |
37 |
| -PARSED_NON_TABLET_BROWSER = "Firefox Mobile 40.0" |
38 |
| -PARSED_TABLET_BROWSER = "Firefox Mobile 41.0 (Tablet)" |
| 34 | +FIREFOX_UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:48.0) Gecko/20100101 Firefox/48.0' # nopep8 |
| 35 | +FIREFOX_MOBILE_UA_OLD = 'Mozilla/5.0 (Android; Mobile; rv:40.0) Gecko/40.0 Firefox/40.0' # nopep8 |
| 36 | +FIREFOX_MOBILE_UA = 'Mozilla/5.0 (Android 6.0.1; Mobile; rv:40.0) Gecko/40.0 Firefox/40.0' # nopep8 |
| 37 | +FIREFOX_TABLET_UA = 'Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0' # nopep8 |
| 38 | +SAFARI_UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11) AppleWebKit/601.1.39 (KHTML, like Gecko) Version/9.0 Safari/601.1.39' # nopep8 |
| 39 | +SAFARI_MOBILE_UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B350 Safari/8536.25' # nopep8 |
| 40 | +SAFARI_TABLET_UA = 'Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3' # nopep8 |
| 41 | +CHROME_UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2720.0 Safari/537.36' # nopep8 |
| 42 | +CHROME_MOBILE_UA = 'Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' # nopep8 |
| 43 | +CHROME_TABLET_UA = 'Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/535.19' # nopep8 |
39 | 44 |
|
40 | 45 |
|
41 | 46 | class TestHelpers(unittest.TestCase):
|
@@ -117,29 +122,73 @@ def test_format_http_link_headers(self):
|
117 | 122 | link_header = GITHUB_ISSUES_LINK_HEADER
|
118 | 123 | self.assertEqual(format_link_header(parsed_headers), link_header)
|
119 | 124 |
|
120 |
| - def test_get_browser_name_Tablet(self): |
121 |
| - '''Test Browser name parsing for tablet devices.''' |
122 |
| - user_agent = TABLET_UA |
123 |
| - parsed_browser_name = PARSED_TABLET_BROWSER_NAME |
124 |
| - self.assertEqual(get_browser_name(user_agent), parsed_browser_name) |
125 |
| - |
126 |
| - def test_get_browser_name_Non_Tablet(self): |
127 |
| - '''Test Browser name parsing for non-tablet devices.''' |
128 |
| - user_agent = NON_TABLET_UA |
129 |
| - parsed_browser_name = PARSED_NON_TABLET_BROWSER_NAME |
130 |
| - self.assertEqual(get_browser_name(user_agent), parsed_browser_name) |
131 |
| - |
132 |
| - def test_get_browser_Tablet(self): |
133 |
| - '''Test Browser parsing for tablet devices.''' |
134 |
| - user_agent = TABLET_UA |
135 |
| - parsed_browser = PARSED_TABLET_BROWSER |
136 |
| - self.assertEqual(get_browser(user_agent), parsed_browser) |
137 |
| - |
138 |
| - def test_get_browser_Non_Tablet(self): |
139 |
| - '''Test Browser parsing for non-tablet devices.''' |
140 |
| - user_agent = NON_TABLET_UA |
141 |
| - parsed_browser = PARSED_NON_TABLET_BROWSER |
142 |
| - self.assertEqual(get_browser(user_agent), parsed_browser) |
| 125 | + def test_get_browser_name(self): |
| 126 | + '''Test browser name parsing via get_browser_name helper method.''' |
| 127 | + self.assertEqual(get_browser_name(FIREFOX_UA), 'firefox') |
| 128 | + self.assertEqual(get_browser_name(FIREFOX_MOBILE_UA), 'firefox mobile') |
| 129 | + self.assertEqual(get_browser_name(FIREFOX_MOBILE_UA_OLD), |
| 130 | + 'firefox mobile') |
| 131 | + self.assertEqual(get_browser_name(FIREFOX_TABLET_UA), |
| 132 | + 'firefox mobile (tablet)') |
| 133 | + self.assertEqual(get_browser_name(SAFARI_UA), 'safari') |
| 134 | + self.assertEqual(get_browser_name(SAFARI_MOBILE_UA), 'mobile safari') |
| 135 | + self.assertEqual(get_browser_name(SAFARI_TABLET_UA), 'mobile safari') |
| 136 | + self.assertEqual(get_browser_name(CHROME_UA), 'chrome') |
| 137 | + self.assertEqual(get_browser_name(CHROME_MOBILE_UA), 'chrome mobile') |
| 138 | + self.assertEqual(get_browser_name(CHROME_TABLET_UA), 'chrome') |
| 139 | + self.assertEqual(get_browser_name(''), 'unknown') |
| 140 | + self.assertEqual(get_browser_name(None), 'unknown') |
| 141 | + self.assertEqual(get_browser_name(), 'unknown') |
| 142 | + self.assertEqual(get_browser_name(u'💀'), 'unknown') |
| 143 | + self.assertEqual(get_browser('<script>lol()</script>'), 'Unknown') |
| 144 | + self.assertEqual(get_browser(True), 'Unknown') |
| 145 | + self.assertEqual(get_browser(False), 'Unknown') |
| 146 | + self.assertEqual(get_browser(None), 'Unknown') |
| 147 | + |
| 148 | + def test_get_browser(self): |
| 149 | + '''Test browser parsing via get_browser helper method.''' |
| 150 | + self.assertEqual(get_browser(FIREFOX_UA), 'Firefox 48.0') |
| 151 | + self.assertEqual(get_browser(FIREFOX_MOBILE_UA), 'Firefox Mobile 40.0') |
| 152 | + self.assertEqual(get_browser_name(FIREFOX_MOBILE_UA_OLD), |
| 153 | + 'firefox mobile') |
| 154 | + self.assertEqual(get_browser(FIREFOX_TABLET_UA), |
| 155 | + 'Firefox Mobile (Tablet) 41.0') |
| 156 | + self.assertEqual(get_browser(SAFARI_UA), 'Safari 9.0') |
| 157 | + self.assertEqual(get_browser(SAFARI_MOBILE_UA), 'Mobile Safari 6.0') |
| 158 | + self.assertEqual(get_browser(SAFARI_TABLET_UA), 'Mobile Safari 5.1') |
| 159 | + self.assertEqual(get_browser(CHROME_UA), 'Chrome 52.0.2720') |
| 160 | + self.assertEqual(get_browser(CHROME_MOBILE_UA), |
| 161 | + 'Chrome Mobile 18.0.1025') |
| 162 | + self.assertEqual(get_browser(CHROME_TABLET_UA), 'Chrome 18.0.1025') |
| 163 | + self.assertEqual(get_browser(''), 'Unknown') |
| 164 | + self.assertEqual(get_browser(), 'Unknown') |
| 165 | + self.assertEqual(get_browser(u'💀'), 'Unknown') |
| 166 | + self.assertEqual(get_browser('<script>lol()</script>'), 'Unknown') |
| 167 | + self.assertEqual(get_browser(True), 'Unknown') |
| 168 | + self.assertEqual(get_browser(False), 'Unknown') |
| 169 | + self.assertEqual(get_browser(None), 'Unknown') |
| 170 | + |
| 171 | + def test_get_os(self): |
| 172 | + '''Test OS parsing via get_os helper method.''' |
| 173 | + self.assertEqual(get_os(FIREFOX_UA), 'Mac OS X 10.11') |
| 174 | + self.assertEqual(get_os(FIREFOX_MOBILE_UA), 'Android 6.0.1') |
| 175 | + self.assertEqual(get_os(FIREFOX_MOBILE_UA_OLD), 'Android') |
| 176 | + self.assertEqual(get_os(FIREFOX_TABLET_UA), 'Android 4.4') |
| 177 | + self.assertEqual(get_os(SAFARI_UA), 'Mac OS X 10.11') |
| 178 | + self.assertEqual(get_os(SAFARI_MOBILE_UA), 'iOS 6.1.4') |
| 179 | + self.assertEqual(get_os(SAFARI_TABLET_UA), 'iOS 5.1.1') |
| 180 | + self.assertEqual(get_os(CHROME_UA), 'Mac OS X 10.11.4') |
| 181 | + self.assertEqual(get_os(CHROME_MOBILE_UA), |
| 182 | + 'Android 4.0.4') |
| 183 | + self.assertEqual(get_os(CHROME_TABLET_UA), 'Android 4.0.4') |
| 184 | + self.assertEqual(get_os(''), 'Unknown') |
| 185 | + self.assertEqual(get_os(), 'Unknown') |
| 186 | + self.assertEqual(get_os(u'💀'), 'Unknown') |
| 187 | + self.assertEqual(get_os('<script>lol()</script>'), 'Unknown') |
| 188 | + self.assertEqual(get_os(True), 'Unknown') |
| 189 | + self.assertEqual(get_os(False), 'Unknown') |
| 190 | + self.assertEqual(get_os(None), 'Unknown') |
| 191 | + |
143 | 192 |
|
144 | 193 | if __name__ == '__main__':
|
145 | 194 | unittest.main()
|
0 commit comments