def test_logout_allowed(self): """ When logout behavior is enabled, ``logout_allowed()`` should return ``True`` and ``False`` otherwise. """ self.assertTrue(logout_allowed('http://www.example.com')) self.assertFalse(logout_allowed('http://example.com')) self.assertFalse(logout_allowed('http://www.example.org'))
def request_sign_out(self, session=requests): """ Send a POST request to the ``ServiceTicket``s logout URL to request sign-out. """ if logout_allowed(self.service): request = SingleSignOutRequest(context={'ticket': self}) url = get_logout_url(self.service) or self.service session.post(url, data={'logoutRequest': request.render_content()}) logger.info("Single sign-out request sent to %s" % url)
def test_invalid_custom_backend(self): """ Test that a custom service backend without properly defined attributes raises ``NotImplementedError`` """ with self.assertRaises(NotImplementedError): service_allowed('http://www.example.com') with self.assertRaises(NotImplementedError): get_callbacks('http://www.example.com') with self.assertRaises(NotImplementedError): get_logout_url('http://www.example.com') with self.assertRaises(NotImplementedError): logout_allowed('http://www.example.com') with self.assertRaises(NotImplementedError): proxy_allowed('http://www.example.com')
def handle(self, **options): service = options['service'] pgturl = options['pgturl'] if service_allowed(service): self.stdout.write('Valid Service: %s' % service) self.stdout.write('Proxy Allowed: %s' % proxy_allowed(service)) if pgturl: self.stdout.write('Proxy Callback Allowed: %s' % proxy_callback_allowed(service, pgturl)) self.stdout.write('Logout Allowed: %s' % logout_allowed(service)) self.stdout.write('Logout URL: %s' % get_logout_url(service)) self.stdout.write('Callbacks: %s' % get_callbacks(service)) else: self.stdout.write(self.style.ERROR('Invalid Service: %s' % service))
def request_sign_out(self): """ Send a POST request to the ``ServiceTicket``s logout URL to request sign-out. """ if not logout_allowed(self.service): return request = SingleSignOutRequest(context={'ticket': self}) url = get_logout_url(self.service) or self.service try: resp = requests.post(url, data={'logoutRequest': request.render_content()}) resp.raise_for_status() except requests.exceptions.RequestException as e: logger.warning("Single sign-out request to %s returned %s" % (url, e)) else: logger.debug("Single sign-out request sent to %s" % url)
def request_sign_out(self): """ Send a POST request to the ``ServiceTicket``s logout URL to request sign-out. """ if not logout_allowed(self.service): return request = SingleSignOutRequest(context={'ticket': self}) url = get_logout_url(self.service) or self.service try: resp = requests.post( url, data={'logoutRequest': request.render_content()}) resp.raise_for_status() except requests.exceptions.RequestException as e: logger.warning("Single sign-out request to %s returned %s" % (url, e)) else: logger.debug("Single sign-out request sent to %s" % url)
def handle(self, **options): self.service = options['service'] self.pgturl = options['pgturl'] self.verbosity = options['verbosity'] if service_allowed(self.service): try: self.stdout.write(self.style.SUCCESS("Valid service: %s" % self.service)) except AttributeError: # Django 1.8 does not have the "Success" style self.stdout.write(self.style.SQL_FIELD("Valid service: %s" % self.service)) if self.verbosity >= 1: self.format_output('Proxy allowed', proxy_allowed(self.service)) if self.pgturl: self.format_output('Proxy callback allowed', proxy_callback_allowed(self.service, self.pgturl)) self.format_output('Logout allowed', logout_allowed(self.service)) self.format_output('Logout URL', get_logout_url(self.service)) self.format_output('Callbacks', ', '.join(get_callbacks(self.service))) if self.verbosity >= 2: self.format_output('Backend', get_backend_path(self.service)) else: self.stdout.write(self.style.ERROR("Invalid service: %s" % self.service))