class LogTest(unittest.TestCase): def setUp(self): self.filename = tempfile.mktemp() self.log = Logger('log') def tearDown(self): if os.path.exists(self.filename): try: os.unlink(self.filename) except OSError: # win32 permission error pass def testSetLogFile(self): set_log_file(self.filename, 'log') self.log.info("sliff") lines = open(self.filename).readlines() self.assertEqual(len(lines), 1) self.failUnless('sliff' in lines[0]) def testStdErr(self): root = logging.getLogger() stream = root.handlers[0] fd = cStringIO.StringIO() stream.stream = fd self.log.warning("this is a warning") stream.stream = sys.stderr fd.seek(0) lines = fd.readlines() self.assertEqual(len(lines), 1) self.failUnless('this is a warning' in lines[0])
data = cookiedata.split(":", 1) try: return data[0], binascii.a2b_base64(data[1]) except binascii.Error: raise CookieError("invalid format") def clear(self): try: os.remove(self._filename) log.info("Removed cookie %s" % self._filename) except OSError, e: log.info("Could not remove file %s: %r" % (self._filename, e)) def store(self, username, password): if not username: raise CookieError("a username is required") try: fd = open(self._filename, "w") except IOError, e: raise CookieError("Could open file %s: %r" % ( self._filename, e)) # obfuscate password to avoid it being easily identified when # editing file on screen. this is *NOT* encryption! fd.write("%s:%s" % (username, binascii.b2a_base64(password or ''))) fd.close() log.info("Saved cookie %s" % self._filename)
try: user = self._check_user(username, password) except (LoginError, UserProfileError), e: # We don't hide the dialog here; it's kept open so the # next loop we just can call run() and display the error cookie = get_utility(ICookieFile, None) if cookie: cookie.clear() retry += 1 retry_msg = str(e) except DatabaseError, e: if dialog: dialog.destroy() self._abort(str(e)) else: log.info("Authenticated user %s" % username) self._force_username = None if dialog.remember.get_active(): get_utility(ICookieFile).store(user.username, user.pw_hash) if dialog: dialog.destroy() return user if dialog: dialog.destroy() raise LoginError(_("Depleted attempts of authentication"))