def fixupErrorLogging(reg_container, reg): # Fix up Error Reporting Service --> Utility # We do this by simply removing old Error Reporting Services and their # registrations and then add a new error reporting utility. errors = reg.component # Set the registration to unregistered and then delete it reg.status = InactiveStatus del zapi.getParent(reg)[zapi.name(reg)] # Get the properties from the old error reporting service and # delete it props = errors.getProperties() folder = zapi.getParent(errors) del folder._SampleContainer__data[zapi.name(errors)] # Only add a new error reporting utility, if there is none. if 'ErrorReporting' not in folder: # Create the error reporting utility and set its properties utility = ErrorReportingUtility() utility.setProperties(**props) folder['ErrorReporting'] = utility # Register the utility and set the registration active reg = UtilityRegistration('', IErrorReportingUtility, utility) reg_manager = folder.registrationManager key = reg_manager.addRegistration(reg) reg_manager[key].status = ActiveStatus else: # If there is one, then at least move the data folder['ErrorReporting'].__dict__.update(props)
def test_ErrorLog_unicode(self): # Emulate a unicode url, it gets encoded to utf-8 before it's passed # to the request. Also add some unicode field to the request's # environment and make the principal's title unicode. request = TestRequest(environ={'PATH_INFO': '/\xd1\x82', 'SOME_UNICODE': u'\u0441'}) class PrincipalStub(object): id = u'\u0441' title = u'\u0441' description = u'\u0441' request.setPrincipal(PrincipalStub()) errUtility = ErrorReportingUtility() exc_info = getAnErrorInfo(u"Error (\u0441)") errUtility.raising(exc_info, request=request) getErrLog = errUtility.getLogEntries() self.assertEquals(1, len(getErrLog)) tb_text = ''.join(format_exception(as_html=0, *exc_info)) err_id = getErrLog[0]['id'] self.assertEquals(tb_text, errUtility.getLogEntryById(err_id)['tb_text']) username = getErrLog[0]['username'] self.assertEquals(username, u'unauthenticated, \u0441, \u0441, \u0441')
def test_ErrorLog_nonascii(self): # Emulate a unicode url, it gets encoded to utf-8 before it's passed # to the request. Also add some unicode field to the request's # environment and make the principal's title unicode. request = TestRequest(environ={'PATH_INFO': '/\xd1\x82', 'SOME_NONASCII': '\xe1'}) class PrincipalStub(object): id = '\xe1' title = '\xe1' description = '\xe1' request.setPrincipal(PrincipalStub()) errUtility = ErrorReportingUtility() exc_info = getAnErrorInfo("Error (\xe1)") errUtility.raising(exc_info, request=request) getErrLog = errUtility.getLogEntries() self.assertEquals(1, len(getErrLog)) tb_text = getFormattedException(exc_info) err_id = getErrLog[0]['id'] self.assertEquals(tb_text, errUtility.getLogEntryById(err_id)['tb_text']) username = getErrLog[0]['username'] self.assertEquals(username, r"unauthenticated, \xe1, \xe1, \xe1")
def test_checkProperties(self): # Test Properties test errUtility = ErrorReportingUtility() setProp = { 'keep_entries':10, 'copy_to_zlog':1, 'ignored_exceptions':() } errUtility.setProperties(**setProp) getProp = errUtility.getProperties() self.assertEqual(setProp, getProp)
def test_ErrorLog(self): # Test for Logging Error. Create one error and check whether its # logged or not. errUtility = ErrorReportingUtility() exc_info = getAnErrorInfo() errUtility.raising(exc_info) getErrLog = errUtility.getLogEntries() self.assertEquals(1, len(getErrLog)) tb_text = ''.join(format_exception(as_html=0, *exc_info)) err_id = getErrLog[0]['id'] self.assertEquals(tb_text, errUtility.getLogEntryById(err_id)['tb_text'])
def test_checkForEmpryLog(self): # Test Check Empty Log errUtility = ErrorReportingUtility() getProp = errUtility.getLogEntries() self.failIf(getProp)