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
104
105
106
|
from urlparse import urljoin
import django
from django.http import HttpRequest
from django.test.testcases import TestCase
from django.urls import reverse
from openid.message import Message
from openid.server.server import CheckIDRequest, HTTP_REDIRECT
from openid.yadis.constants import YADIS_CONTENT_TYPE
from openid.yadis.services import applyFilter
from .. import util
from ..server import views
# Allow django tests to run through discover
django.setup()
def dummyRequest():
request = HttpRequest()
request.session = {}
request.META['HTTP_HOST'] = 'example.cz'
request.META['SERVER_PROTOCOL'] = 'HTTP'
return request
class TestProcessTrustResult(TestCase):
def setUp(self):
self.request = dummyRequest()
id_url = urljoin('http://example.cz/', reverse('server:local_id'))
# 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.assertEqual(response.status_code, HTTP_REDIRECT)
finalURL = response['location']
self.assertIn('openid.mode=id_res', finalURL)
self.assertIn('openid.identity=', finalURL)
self.assertIn('openid.sreg.postcode=12345', finalURL)
def test_cancel(self):
self.request.POST['cancel'] = 'Yes'
response = views.processTrustResult(self.request)
self.assertEqual(response.status_code, HTTP_REDIRECT)
finalURL = response['location']
self.assertIn('openid.mode=cancel', finalURL)
self.assertNotIn('openid.identity=', finalURL)
self.assertNotIn('openid.sreg.postcode=12345', finalURL)
class TestShowDecidePage(TestCase):
def test_unreachableRealm(self):
self.request = dummyRequest()
id_url = urljoin('http://example.cz/', reverse('server:local_id'))
# 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.assertIn('trust_root_valid is Unreachable', response.content)
class TestGenericXRDS(TestCase):
def test_genericRender(self):
"""Render an 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.assertEqual(response['Content-Type'], YADIS_CONTENT_TYPE)
self.assertEqual(endpoint.type_uris, type_uris)
self.assertEqual(endpoint.uri, endpoint_url)
|