22from django .test import TestCase
33from django .conf import settings
44from django .core .urlresolvers import reverse
5- from django .contrib .auth .models import User
5+ from django .contrib .auth import get_user_model
6+
7+ from webshell .models import Script
8+
9+ User = get_user_model ()
610
711
812class WebshellTestCase (TestCase ):
913 def setUp (self ):
10- self .user = User .objects .create (username = 'user' )
14+ self .user = User .objects .create (
15+ username = 'user' , is_staff = True , is_superuser = True )
1116 self .user .set_password ('123456' )
1217 self .user .save ()
1318 self .url = reverse ('execute-script' )
1419 self .login_url = '%s?next=%s' % (settings .LOGIN_URL , self .url )
1520
21+ def login (self ):
22+ self .assertTrue (self .client .login (
23+ username = self .user .username , password = '123456' ))
24+
1625 def test_wrong_method (self ):
1726 response = self .client .get (self .url )
1827 self .assertEqual (response .status_code , 405 )
@@ -22,16 +31,30 @@ def test_login_required(self):
2231 self .assertRedirects (response , self .login_url , 302 , 404 )
2332
2433 def test_superuser_required (self ):
25- self .assertTrue (
26- self .client .login (username = self .user .username , password = '123456' ))
34+ self .user .is_superuser = False
35+ self .user .save ()
36+ self .login ()
2737 response = self .client .post (self .url )
2838 self .assertRedirects (response , self .login_url , 302 , 404 )
2939
3040 def test_success (self ):
31- self .user .is_superuser = True
32- self .user .save ()
41+ self .login ()
3342
34- self .assertTrue (
35- self .client .login (username = self .user .username , password = '123456' ))
3643 response = self .client .post (self .url , data = {'source' : 'print(1)' })
44+ self .assertEqual (response .status_code , 200 )
3745 self .assertEqual (response .content , b'1\n ' )
46+
47+ def test_admin (self ):
48+ self .login ()
49+
50+ script = Script .objects .create (name = 'Test' )
51+
52+ urls = (
53+ reverse ('admin:webshell_script_add' ),
54+ reverse ('admin:webshell_script_change' , args = [script .id ]),
55+ reverse ('admin:webshell_script_changelist' ),
56+ )
57+
58+ for url in urls :
59+ response = self .client .get (url )
60+ self .assertEqual (response .status_code , 200 )
0 commit comments