commit
6177b31227
@ -1,3 +0,0 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
@ -1,3 +0,0 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
@ -1,3 +0,0 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
0
tests/LandingPage/__init__.py
Normal file
0
tests/LandingPage/__init__.py
Normal file
96
tests/LandingPage/test_views.py
Normal file
96
tests/LandingPage/test_views.py
Normal file
@ -0,0 +1,96 @@
|
||||
from django.test import TestCase,Client,override_settings
|
||||
import responses
|
||||
from LandingPage.models import User
|
||||
from urllib import parse
|
||||
|
||||
@override_settings(
|
||||
AUTH_TOKEN_ENDPOINT='http://icynet.test/api/',
|
||||
AUTH_CLIENT_ID='clid',
|
||||
AUTH_B64='Y2xpZDpjbGlzZWM=',
|
||||
AUTH_REDIRECT_URL='http://redirect.test'
|
||||
)
|
||||
class TestLogin(TestCase):
|
||||
|
||||
def test_login_new_user(self):
|
||||
# Set up responses to control network flow
|
||||
with responses.RequestsMock() as rm:
|
||||
rm.add(responses.POST,'http://icynet.test/api/token',json={'access_token':'1accesstoken1'})
|
||||
rm.add(responses.GET,'http://icynet.test/api/user',json={'uuid':'935a41b5-b38d-42c3-96ef-653402fc44ca','email':'johnsmith@gmail.com','display_name':'Mr. Smith'})
|
||||
|
||||
# Make initial request to redirect endpoint
|
||||
client = Client()
|
||||
resp = client.get('/login')
|
||||
self.assertEqual(resp.status_code, 302)
|
||||
query = parse.parse_qs(parse.urlparse(resp['Location']).query)
|
||||
state = query['state'][0]
|
||||
self.assertEqual(query['client_id'][0],'clid')
|
||||
self.assertEqual(query['response_type'][0],'code')
|
||||
self.assertEqual(query['redirect_uri'][0],'http://redirect.test')
|
||||
self.assertEqual(query['scope'][0],'email')
|
||||
|
||||
# Make connection to the real endpoint
|
||||
resp = client.get('/login/redirect?state=%s&code=%s'%(state, 'code'))
|
||||
self.assertEqual(resp.status_code, 302)
|
||||
|
||||
# Check that the database is all good
|
||||
users = User.objects.all()
|
||||
self.assertEqual(len(users), 1)
|
||||
user = users[0]
|
||||
self.assertEqual(user.user_id,'935a41b5-b38d-42c3-96ef-653402fc44ca')
|
||||
self.assertEqual(user.email,'johnsmith@gmail.com')
|
||||
self.assertEqual(user.display_name, 'Mr. Smith')
|
||||
|
||||
# Check appropriate values are in the session
|
||||
self.assertEqual(client.session['user_id'], '935a41b5-b38d-42c3-96ef-653402fc44ca')
|
||||
self.assertEqual(client.session['token'],'1accesstoken1')
|
||||
self.assertEqual(client.session['disp_name'], 'Mr. Smith')
|
||||
|
||||
def test_reject_bad_state(self):
|
||||
with responses.RequestsMock() as rm:
|
||||
client = Client()
|
||||
resp = client.get('/login/redirect?state=%s&code=%s'%('bad_state', 'code'))
|
||||
self.assertEqual(resp.status_code, 400)
|
||||
|
||||
def test_login_old_user(self):
|
||||
# Set up responses to control network flow
|
||||
with responses.RequestsMock() as rm:
|
||||
rm.add(responses.POST,'http://icynet.test/api/token',json={'access_token':'1accesstoken1'})
|
||||
rm.add(responses.GET,'http://icynet.test/api/user',json={'uuid':'935a41b5-b38d-42c3-96ef-653402fc44ca','email':'johnsmith@gmail.com','display_name':'Mr. Smith'})
|
||||
|
||||
# Set up the database
|
||||
user = User(user_id='935a41b5-b38d-42c3-96ef-653402fc44ca',email='johnsmith@gmail.com',display_name='Mr. Smith')
|
||||
user.save()
|
||||
|
||||
# Make initial request to redirect endpoint
|
||||
client = Client()
|
||||
resp = client.get('/login')
|
||||
state = parse.parse_qs(parse.urlparse(resp['Location']).query)['state'][0]
|
||||
|
||||
# Make connection to the real endpoint
|
||||
resp = client.get('/login/redirect?state=%s&code=%s'%(state, 'code'))
|
||||
self.assertEqual(resp.status_code, 302)
|
||||
|
||||
# Check that the database is all good
|
||||
users = User.objects.all()
|
||||
self.assertEqual(len(users), 1)
|
||||
user = users[0]
|
||||
self.assertEqual(user.user_id,'935a41b5-b38d-42c3-96ef-653402fc44ca')
|
||||
self.assertEqual(user.email,'johnsmith@gmail.com')
|
||||
self.assertEqual(user.display_name, 'Mr. Smith')
|
||||
|
||||
# Check appropriate values are in the session
|
||||
self.assertEqual(client.session['user_id'], '935a41b5-b38d-42c3-96ef-653402fc44ca')
|
||||
self.assertEqual(client.session['token'],'1accesstoken1')
|
||||
self.assertEqual(client.session['disp_name'], 'Mr. Smith')
|
||||
|
||||
def test_states_unique(self):
|
||||
with responses.RequestsMock() as rm:
|
||||
client1 = Client()
|
||||
resp1 = client1.get('/login')
|
||||
state1 = parse.parse_qs(parse.urlparse(resp1['Location']).query)['state'][0]
|
||||
|
||||
client2 = Client()
|
||||
resp2 = client2.get('/login')
|
||||
state2 = parse.parse_qs(parse.urlparse(resp2['Location']).query)['state'][0]
|
||||
|
||||
self.assertNotEqual(state1,state2)
|
0
tests/__init__.py
Normal file
0
tests/__init__.py
Normal file
Reference in New Issue
Block a user