def test_proxy_validate_view_invalid_service_url(self): """ When ``MAMA_CAS_VALID_SERVICES`` is defined, a validation failure should be returned if the service URL does not match. """ request = self.rf.get(reverse('cas_proxy_validate'), {'service': self.url, 'ticket': self.pt.ticket}) response = ProxyValidateView.as_view()(request) self.assertContains(response, 'INVALID_SERVICE')
def test_proxy_validate_view_user_attributes(self): """ When ``MAMA_CAS_USER_ATTRIBUTES`` is defined, the validation success should include the custom attribute block. """ request = self.rf.get(reverse('cas_proxy_validate'), {'service': self.url, 'ticket': self.pt.ticket}) response = ProxyValidateView.as_view()(request) self.assertContains(response, 'attributes')
def test_proxy_validate_view(self): """ When called with no parameters, a validation failure should be returned. """ request = self.rf.get(reverse('cas_proxy_validate')) response = ProxyValidateView.as_view()(request) self.assertContains(response, 'INVALID_REQUEST')
def test_proxy_validate_view_invalid_service(self): """ When called with an invalid service identifier, a validation failure should be returned. """ request = self.rf.get(reverse('cas_proxy_validate'), {'service': self.url2, 'ticket': self.pt.ticket}) response = ProxyValidateView.as_view()(request) self.assertContains(response, 'INVALID_SERVICE')
def test_proxy_validate_view_invalid_ticket(self): """ When the provided ticket cannot be found, a validation failure should be returned. """ pt_str = ProxyTicket.objects.create_ticket_str() request = self.rf.get(reverse('cas_proxy_validate'), {'service': self.url, 'ticket': pt_str}) response = ProxyValidateView.as_view()(request) self.assertContains(response, 'INVALID_TICKET')
def test_proxy_validate_view_pgturl_http(self): """ When called with valid parameters and an invalid ``pgtUrl``, the validation success should have no ``ProxyGrantingTicket``. """ request = self.rf.get(reverse('cas_proxy_validate'), {'service': self.url, 'ticket': self.pt.ticket, 'pgtUrl': self.url}) response = ProxyValidateView.as_view()(request) self.assertContains(response, 'authenticationSuccess') self.assertNotContains(response, 'proxyGrantingTicket')
def test_proxy_validate_view_invalid_service(self): """ When called with an invalid service identifier, a validation failure should be returned. """ request = self.rf.get(reverse('cas_proxy_validate'), { 'service': 'http://example.org', 'ticket': self.pt.ticket }) response = ProxyValidateView.as_view()(request) self.assertContains(response, 'INVALID_SERVICE')
def test_proxy_validate_view_pgturl(self): """ When called with valid parameters and a ``pgtUrl``, a validation success should include a ``ProxyGrantingTicket``. """ request = self.rf.get(reverse('cas_proxy_validate'), {'service': self.url, 'ticket': self.pt.ticket, 'pgtUrl': self.url2}) with patch('requests.get') as mock: mock.return_value.status_code = 200 response = ProxyValidateView.as_view()(request) self.assertContains(response, 'authenticationSuccess') self.assertContains(response, 'proxyGrantingTicket')
def test_proxy_validate_view_invalid_service_url(self): """ When ``MAMA_CAS_VALID_SERVICES`` is defined, a validation failure should be returned if the service URL does not match. """ request = self.rf.get(reverse('cas_proxy_validate'), { 'service': 'http://example.org', 'ticket': self.pt.ticket }) response = ProxyValidateView.as_view()(request) self.assertContains(response, 'INVALID_SERVICE')
def test_proxy_validate_view_invalid_ticket(self): """ When the provided ticket cannot be found, a validation failure should be returned. """ pt_str = ProxyTicket.objects.create_ticket_str() request = self.rf.get(reverse('cas_proxy_validate'), { 'service': self.url, 'ticket': pt_str }) response = ProxyValidateView.as_view()(request) self.assertContains(response, 'INVALID_TICKET')
def test_proxy_validate_view_pt_success(self): """ When called with a valid ``ProxyTicket``, a validation success should be returned. The provided ticket should be consumed. """ request = self.rf.get(reverse('cas_proxy_validate'), {'service': self.url, 'ticket': self.pt.ticket}) response = ProxyValidateView.as_view()(request) self.assertContains(response, 'authenticationSuccess') self.assertEqual(response.get('Content-Type'), 'text/xml') pt = ProxyTicket.objects.get(ticket=self.pt.ticket) self.assertTrue(pt.is_consumed())
def test_proxy_validate_view_pgturl_http(self): """ When called with valid parameters and an invalid ``pgtUrl``, the validation success should have no ``ProxyGrantingTicket``. """ request = self.rf.get(reverse('cas_proxy_validate'), { 'service': self.url, 'ticket': self.pt.ticket, 'pgtUrl': self.url }) response = ProxyValidateView.as_view()(request) self.assertContains(response, 'authenticationSuccess') self.assertNotContains(response, 'proxyGrantingTicket')
def test_proxy_validate_view_pgturl(self): """ When called with valid parameters and a ``pgtUrl``, a validation success should include a ``ProxyGrantingTicket``. """ request = self.rf.get(reverse('cas_proxy_validate'), {'service': self.url, 'ticket': self.pt.ticket, 'pgtUrl': 'https://ww2.example.com'}) with patch('requests.get') as mock: mock.return_value.status_code = 200 response = ProxyValidateView.as_view()(request) self.assertContains(response, 'authenticationSuccess') self.assertContains(response, 'proxyGrantingTicket')
def test_proxy_validate_view_proxies(self): """ A validation success should include a ``proxies`` block containing all the proxies involved. """ pgt2 = ProxyGrantingTicketFactory(granted_by_pt=self.pt, granted_by_st=None) pt2 = ProxyTicketFactory(service='http://ww2.example.com', granted_by_pgt=pgt2) request = self.rf.get(reverse('cas_proxy_validate'), {'service': pt2.service, 'ticket': pt2.ticket}) response = ProxyValidateView.as_view()(request) self.assertContains(response, 'authenticationSuccess') self.assertContains(response, 'http://ww2.example.com') self.assertContains(response, 'http://www.example.com')
from mama_cas.views import LogoutView from mama_cas.views import ValidateView from mama_cas.views import ServiceValidateView from mama_cas.views import ProxyValidateView from mama_cas.views import ProxyView from mama_cas.views import WarnView from mama_cas.views import SamlValidateView urlpatterns = [ url(r'^login/?$', LoginView.as_view(), name='cas_login'), url(r'^logout/?$', LogoutView.as_view(), name='cas_logout'), url(r'^validate/?$', ValidateView.as_view(), name='cas_validate'), url(r'^serviceValidate/?$', ServiceValidateView.as_view(), name='cas_service_validate'), url(r'^proxyValidate/?$', ProxyValidateView.as_view(), name='cas_proxy_validate'), url(r'^proxy/?$', ProxyView.as_view(), name='cas_proxy'), url(r'^p3/serviceValidate/?$', ServiceValidateView.as_view(), name='cas_p3_service_validate'), url(r'^p3/proxyValidate/?$', ProxyValidateView.as_view(), name='cas_p3_proxy_validate'), url(r'^warn/?$', WarnView.as_view(), name='cas_warn'), url(r'^samlValidate/?$', SamlValidateView.as_view(), name='cas_saml_validate'), ]
""" URLconf for CAS server URIs as described in the CAS protocol. """ from django.conf.urls import patterns from django.conf.urls import url from mama_cas.views import LoginView from mama_cas.views import LogoutView from mama_cas.views import ValidateView from mama_cas.views import ServiceValidateView from mama_cas.views import ProxyValidateView from mama_cas.views import ProxyView from mama_cas.views import WarnView urlpatterns = patterns( "", url(r"^login/?$", LoginView.as_view(), name="cas_login"), url(r"^logout/?$", LogoutView.as_view(), name="cas_logout"), url(r"^validate/?$", ValidateView.as_view(), name="cas_validate"), url(r"^serviceValidate/?$", ServiceValidateView.as_view(), name="cas_service_validate"), url(r"^proxyValidate/?$", ProxyValidateView.as_view(), name="cas_proxy_validate"), url(r"^proxy/?$", ProxyView.as_view(), name="cas_proxy"), url(r"^warn/?$", WarnView.as_view(), name="cas_warn"), )
urlpatterns = patterns('', url(r'^login/?$', LoginView.as_view(), name='cas_login'), url(r'^logout/?$', LogoutView.as_view(), name='cas_logout'), url(r'^validate/?$', ValidateView.as_view(), name='cas_validate'), url(r'^serviceValidate/?$', ServiceValidateView.as_view(), name='cas_service_validate'), url(r'^proxyValidate/?$', ProxyValidateView.as_view(), name='cas_proxy_validate'), url(r'^proxy/?$', ProxyView.as_view(), name='cas_proxy'), url(r'^p3/serviceValidate/?$', ServiceValidateView.as_view(), name='cas_p3_service_validate'), url(r'^p3/proxyValidate/?$', ProxyValidateView.as_view(), name='cas_p3_proxy_validate'), url(r'^warn/?$', WarnView.as_view(), name='cas_warn'), url(r'^samlValidate/?$', SamlValidateView.as_view(),
""" (2) CAS server URIs as described in the CAS protocol. """ from django.conf.urls import url from mama_cas.views import LoginView from mama_cas.views import LogoutView from mama_cas.views import ValidateView from mama_cas.views import ServiceValidateView from mama_cas.views import ProxyValidateView from mama_cas.views import ProxyView from mama_cas.views import WarnView from mama_cas.views import SamlValidateView urlpatterns = [ url(r'^login/?$', LoginView.as_view(), name='cas_login'), url(r'^logout/?$', LogoutView.as_view(), name='cas_logout'), url(r'^validate/?$', ValidateView.as_view(), name='cas_validate'), url(r'^serviceValidate/?$', ServiceValidateView.as_view(), name='cas_service_validate'), url(r'^proxyValidate/?$', ProxyValidateView.as_view(), name='cas_proxy_validate'), url(r'^proxy/?$', ProxyView.as_view(), name='cas_proxy'), url(r'^p3/serviceValidate/?$', ServiceValidateView.as_view(), name='cas_p3_service_validate'), url(r'^p3/proxyValidate/?$', ProxyValidateView.as_view(), name='cas_p3_proxy_validate'), url(r'^warn/?$', WarnView.as_view(), name='cas_warn'), url(r'^samlValidate/?$', SamlValidateView.as_view(), name='cas_saml_validate'), ]