def test_authentication_passes(self): registry = TestRegistry(test_handle) result = protocol.check_authentication(registry, TestRequest({ 'openid.mode' : 'check_authentication', 'openid.identity' : 'http://www.example.com/test', 'openid.assoc_handle' : test_handle, })) expecting = 'is_valid:true\nopenid.mode:id_res\n' self.failUnlessEqual(result, expecting)
def test_authentication_fails_invalid(self): registry = TestRegistry(validation=False) result = protocol.check_authentication(registry, TestRequest({ 'openid.mode' : 'check_authentication', 'openid.identity' : 'http://www.example.com/test', 'openid.assoc_handle' : test_handle, })) expecting = 'invalidate_handle:%s\nis_valid:false\nopenid.mode:id_res\n' % test_handle self.failUnlessEqual(result, expecting)
def renderHTTP(self, ctx): """ OpenID provider flow begins here. @see: L{nevow.inevow.IResource} """ request = inevow.IRequest(ctx) requestData = protocol.OpenIDRequest(request) yield self.authenticate(ctx) output = False try: mode = requestData.get('openid.mode') registry = self.portal.realm.registry if(mode == 'associate'): output = protocol.associate(registry, requestData) elif(mode == 'checkid_immediate'): output = yield protocol.checkid_immediate(registry, requestData, self.user) elif(mode == 'checkid_setup'): output = yield protocol.checkid_setup(registry, requestData, self.user) elif(mode == 'check_authentication'): output = protocol.check_authentication(registry, requestData) else: output = util.handleError(requestData, "invalid mode '%s' specified" % requestData.get('openid.mode')) except: reason = failure.Failure() log.err(reason) # This should really never happen, since the protocol code itself # should attempt to give more informative messages when reasonable output = util.handleError(requestData, "A server error occurred: %s" % reason.getErrorMessage()) if(isinstance(output, url.URL)): log.msg('REDIRECT: %r' % output) request.redirect(output) returnValue('') else: if(output is False): returnValue(super(ProviderPage, self).renderHTTP(ctx)) log.msg('OUTPUT: %r' % output) returnValue(output)