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
|
from django.test.testcases import TestCase
from djopenid.server import views
from djopenid import util
from django.http import HttpRequest
from django.contrib.sessions.backends.cache import SessionStore
from openid.server.server import CheckIDRequest
from openid.message import Message
from openid.yadis.constants import YADIS_CONTENT_TYPE
from openid.yadis.services import applyFilter
def dummyRequest():
request = HttpRequest()
request.session = SessionStore()
request.META['HTTP_HOST'] = 'example.invalid'
request.META['SERVER_PROTOCOL'] = 'HTTP'
return request
class TestProcessTrustResult(TestCase):
def setUp(self):
self.request = dummyRequest()
id_url = util.getViewURL(self.request, views.idPage)
# Set up the OpenID request we're responding to.
op_endpoint = 'http://127.0.0.1:8080/endpoint'
message = Message.fromPostArgs({
'openid.mode': 'checkid_setup',
'openid.identity': id_url,
'openid.return_to': 'http://127.0.0.1/%s' % (self.id(),),
'openid.sreg.required': 'postcode',
})
self.openid_request = CheckIDRequest.fromMessage(message, op_endpoint)
views.setRequest(self.request, self.openid_request)
def test_allow(self):
self.request.POST['allow'] = 'Yes'
response = views.processTrustResult(self.request)
self.failUnlessEqual(response.status_code, 302)
finalURL = response['location']
self.failUnless('openid.mode=id_res' in finalURL, finalURL)
self.failUnless('openid.identity=' in finalURL, finalURL)
self.failUnless('openid.sreg.postcode=12345' in finalURL, finalURL)
def test_cancel(self):
self.request.POST['cancel'] = 'Yes'
response = views.processTrustResult(self.request)
self.failUnlessEqual(response.status_code, 302)
finalURL = response['location']
self.failUnless('openid.mode=cancel' in finalURL, finalURL)
self.failIf('openid.identity=' in finalURL, finalURL)
self.failIf('openid.sreg.postcode=12345' in finalURL, finalURL)
class TestShowDecidePage(TestCase):
def test_unreachableRealm(self):
self.request = dummyRequest()
id_url = util.getViewURL(self.request, views.idPage)
# Set up the OpenID request we're responding to.
op_endpoint = 'http://127.0.0.1:8080/endpoint'
message = Message.fromPostArgs({
'openid.mode': 'checkid_setup',
'openid.identity': id_url,
'openid.return_to': 'http://unreachable.invalid/%s' % (self.id(),),
'openid.sreg.required': 'postcode',
})
self.openid_request = CheckIDRequest.fromMessage(message, op_endpoint)
views.setRequest(self.request, self.openid_request)
response = views.showDecidePage(self.request, self.openid_request)
self.assertContains(response, 'trust_root_valid is Unreachable')
class TestGenericXRDS(TestCase):
def test_genericRender(self):
"""
Render XRDS document with a single type URI and a single endpoint URL
Parse it to see that it matches.
"""
request = dummyRequest()
type_uris = ['A_TYPE']
endpoint_url = 'A_URL'
response = util.renderXRDS(request, type_uris, [endpoint_url])
requested_url = 'http://requested.invalid/'
(endpoint,) = applyFilter(requested_url, response.content)
self.failUnlessEqual(YADIS_CONTENT_TYPE, response['Content-Type'])
self.failUnlessEqual(type_uris, endpoint.type_uris)
self.failUnlessEqual(endpoint_url, endpoint.uri)
|