1- from django .test import RequestFactory
21from django .test import override_settings
3-
42from django_forbid .skills .forbid_device import ForbidDeviceMiddleware
53
6- unknown_ua = "curl/7.47.0"
7- peripheral_ua = "Mozilla/5.0 (Linux; Android 7.0; SHTRIH-SMARTPOS-F2 Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/51.0.2704.91 Mobile Safari/537.36"
8- smartphone_ua = "SAMSUNG-GT-S3850/S3850CXKD1 SHP/VPP/R5 Dolfin/2.0 NexPlayer/3.0 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B"
9- wearable_ua = "Mozilla/5.0 (Linux; Android 8.1.0; KidPhone4G Build/O11019; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/58.0.3029.125 Mobile Safari/537.36"
10- phablet_ua = "Mozilla/5.0 (Linux; Android 6.0; GI-626 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.124 Mobile Safari/537.36"
11- desktop_ua = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.28) Gecko/20130316 Songbird/1.12.1 (20140112193149)"
12- console_ua = "Mozilla/5.0 (Linux; Android 4.1.1; ARCHOS GAMEPAD Build/JRO03H) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19"
13- display_ua = "Mozilla/5.0 (Linux; U; Android 4.0.4; fr-be; DA220HQL Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30"
14- speaker_ua = "AlexaMediaPlayer/2.0.201528.0 (Linux;Android 5.1.1) ExoPlayerLib/1.5.9"
15- camera_ua = "Mozilla/5.0 (Linux; U; Android 2.3.3; ja-jp; COOLPIX S800c Build/CP01_WW) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
16- tablet_ua = "Mozilla/5.0 (iPad3,6; iPad; U; CPU OS 7_1 like Mac OS X; en_US) com.google.GooglePlus/33839 (KHTML, like Gecko) Mobile/P103AP (gzip)"
17- player_ua = "Mozilla/5.0 (iPod; U; CPU iPhone OS 4_2_1 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8C148"
18- phone_ua = "lephone K10/Dorado WAP-Browser/1.0.0"
19- car_ua = "Mozilla/5.0 (Linux; Android 4.4.2; CarPad-II-P Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36"
20- tv_ua = "Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.34 Safari/537.36 WebAppManager"
21-
22- factory = RequestFactory ()
23- request = factory .get ("/" )
24- request .session = {}
4+ from tests import Header
5+ from tests import WSGIRequest
6+
7+ request = WSGIRequest ().get ()
258
269
2710def forbids (get_response , user_agent ):
@@ -31,54 +14,58 @@ def forbids(get_response, user_agent):
3114 return response .status_code == 403
3215
3316
34- def test_access_with_empty_list_of_devices (get_response ):
35- """Should allow access to all devices if no config is provided."""
36- for device_ua in (peripheral_ua , smartphone_ua , wearable_ua , phablet_ua ,
37- desktop_ua , console_ua , display_ua , speaker_ua , camera_ua ,
38- tablet_ua , player_ua , phone_ua , car_ua , tv_ua , unknown_ua ):
39- assert not forbids (get_response , device_ua )
17+ def test_should_allow_all_when_no_config_provided (get_response ):
18+ """Should allow access to all_user_agents devices if no config is provided."""
19+ for user_agent in Header .all_user_agents :
20+ assert not forbids (get_response , user_agent )
4021
4122
4223@override_settings (DJANGO_FORBID = {"DEVICES" : []})
43- def test_access_with_empty_list_of_devices (get_response ):
44- """Should allow access to all devices if the list is empty, even if the user agent is unknown."""
45- for device_ua in (peripheral_ua , smartphone_ua , wearable_ua , phablet_ua ,
46- desktop_ua , console_ua , display_ua , speaker_ua , camera_ua ,
47- tablet_ua , player_ua , phone_ua , car_ua , tv_ua , unknown_ua ):
48- assert not forbids (get_response , device_ua )
24+ def test_should_allow_all_when_devices_are_empty (get_response ):
25+ """Should allow access to all_user_agents devices if the list is empty, even if the user agent is unknown."""
26+ for user_agent in Header .all_user_agents :
27+ assert not forbids (get_response , user_agent )
4928
5029
5130@override_settings (DJANGO_FORBID = {"DEVICES" : ["desktop" , "smartphone" , "console" , "tablet" , "tv" ]})
52- def test_access_desktops_smartphones_consoles_tablets_and_tvs (get_response ):
31+ def test_should_allow_desktops_smartphones_consoles_tablets_and_tvs (get_response ):
5332 """Should allow access to desktops, smartphones, consoles, tablets and TVs."""
54- for device_ua in (peripheral_ua , wearable_ua , phablet_ua , display_ua ,
55- speaker_ua , camera_ua , player_ua , phone_ua , car_ua , unknown_ua ):
56- assert forbids (get_response , device_ua )
57- for device_ua in (desktop_ua , smartphone_ua , console_ua , tablet_ua , tv_ua ):
58- assert not forbids (get_response , device_ua )
33+ for user_agent in (Header .user_agent_peripheral , Header .user_agent_wearable , Header .user_agent_phablet ,
34+ Header .user_agent_display , Header .user_agent_speaker , Header .user_agent_camera ,
35+ Header .user_agent_player , Header .user_agent_phone , Header .user_agent_car ,
36+ Header .user_agent_unknown ):
37+ assert forbids (get_response , user_agent )
38+ for user_agent in (Header .user_agent_desktop , Header .user_agent_smartphone , Header .user_agent_console ,
39+ Header .user_agent_tablet , Header .user_agent_tv ):
40+ assert not forbids (get_response , user_agent )
5941
6042
6143@override_settings (DJANGO_FORBID = {"DEVICES" : ["!car" , "!speaker" , "!wearable" ]})
62- def test_forbid_access_to_cars_speakers_and_wearables (get_response ):
44+ def test_should_forbid_cars_speakers_and_wearables (get_response ):
6345 """Should forbid access to cars, speakers and wearables."""
64- for device_ua in (peripheral_ua , smartphone_ua , phablet_ua , desktop_ua , console_ua ,
65- display_ua , camera_ua , tablet_ua , player_ua , phone_ua , tv_ua ):
66- assert not forbids (get_response , device_ua )
67- for device_ua in (car_ua , speaker_ua , wearable_ua , unknown_ua ):
68- assert forbids (get_response , device_ua )
46+ for user_agent in (Header .user_agent_peripheral , Header .user_agent_smartphone , Header .user_agent_phablet ,
47+ Header .user_agent_desktop , Header .user_agent_console , Header .user_agent_display ,
48+ Header .user_agent_camera , Header .user_agent_tablet , Header .user_agent_player ,
49+ Header .user_agent_phone , Header .user_agent_tv ):
50+ assert not forbids (get_response , user_agent )
51+ for user_agent in (Header .user_agent_car , Header .user_agent_speaker ,
52+ Header .user_agent_wearable , Header .user_agent_unknown ):
53+ assert forbids (get_response , user_agent )
6954
7055
7156@override_settings (DJANGO_FORBID = {"DEVICES" : ["!phablet" , "tablet" , "phablet" ]})
72- def test_forbid_access_if_same_device_is_listed_as_permitted_and_forbidden (get_response ):
57+ def test_should_forbid_device_when_sametime_permitted_and_forbidden (get_response ):
7358 """Should forbid access if the same device is listed as permitted and forbidden."""
74- for device_ua in (peripheral_ua , smartphone_ua , phablet_ua , desktop_ua ,
75- console_ua , display_ua , camera_ua , player_ua , phone_ua ,
76- tv_ua , car_ua , speaker_ua , wearable_ua , unknown_ua ):
77- assert forbids (get_response , device_ua )
78- assert not forbids (get_response , tablet_ua )
59+ for user_agent in (Header .user_agent_peripheral , Header .user_agent_smartphone , Header .user_agent_phablet ,
60+ Header .user_agent_desktop , Header .user_agent_console , Header .user_agent_display ,
61+ Header .user_agent_camera , Header .user_agent_player , Header .user_agent_phone ,
62+ Header .user_agent_tv , Header .user_agent_car , Header .user_agent_speaker ,
63+ Header .user_agent_wearable , Header .user_agent_unknown ):
64+ assert forbids (get_response , user_agent )
65+ assert not forbids (get_response , Header .user_agent_tablet )
7966
8067
8168@override_settings (DJANGO_FORBID = {"DEVICES" : ["smartphone" , "phablet" , "tablet" ]})
82- def test_forbid_access_unknown_devices_if_devices_are_set (get_response ):
69+ def test_should_forbid_unknown_devices_when_config_provided (get_response ):
8370 """Should forbid access to unknown devices if the list of devices is not empty."""
84- assert forbids (get_response , unknown_ua )
71+ assert forbids (get_response , Header . user_agent_unknown )
0 commit comments