def testHashedCredentials(self): hashedCreds = [credentials.UsernameHashedPassword( u, self.hash(None, p, u[:2])) for u, p in self.users] d = defer.DeferredList([self.port.login(c, None, ITestable) for c in hashedCreds], consumeErrors=True) d.addCallback(self._assertFailures, error.UnhandledCredentials) return d
def tryLogin(self, username, password): import hashlib def hash(password): return hashlib.md5(password).hexdigest() self.portal.login(credentials.UsernameHashedPassword(username, hash(password)), None, IProtocolAvatar).addCallbacks(self._cbLogin, self._ebLogin)
def testRequestAvatarId_hashed(self): self.db = checkers.FilePasswordDB(self.dbfile) creds = [credentials.UsernameHashedPassword(u, p) for u, p in self.users] d = defer.gatherResults( [defer.maybeDeferred(self.db.requestAvatarId, c) for c in creds]) d.addCallback(self.assertEqual, [u for u, p in self.users]) return d
def testRequestAvatarId_hashed(self): dbfile = self.mktemp() db = checkers.FilePasswordDB(dbfile, caseSensitive=0) f = file(dbfile, 'w') for (u, p) in self.users: f.write('%s:%s\n' % (u, p)) f.close() creds = [credentials.UsernameHashedPassword(u, p) for u, p in self.users] d = defer.gatherResults( [defer.maybeDeferred(db.requestAvatarId, c) for c in creds]) d.addCallback(self.assertEquals, [u for u, p in self.users]) return d
def tryLogin(self, data): params = data.split(' ') username = params[0] password = params[1] #loginPortal.login(credentials.UsernameHashedPassword(username, hash(password)), None, IProtocalAvatar).addCallback(self._cbLogin, self._ebLogin) if globalName.debug: print username, password # TODO: to support multiple clients, check whether a username's client is logined. self.name = username self.loginPortal.login( credentials.UsernameHashedPassword(username, hash(password)), None, IProtocolAvatar).addCallbacks(self._cbLogin, self._ebLogin)
def _cbRegister(self, data): #register success, tell client (username, password) = data msg = self.factory.commands[ "register"] + globalName.space + globalName.success + globalName.space + globalName.eol + globalName.space # do something to user, such as create user's friends table. dataManager.createUserFriendsTable(username) # TODO: handle errors self.name = username self.sendLine(msg) self.loginPortal.login( credentials.UsernameHashedPassword(username, password), None, IProtocolAvatar).addCallbacks(self._cbLogin, self._ebLogin)
def test_requestAvatarIdNoUser(self): """ Calling requestAvatarId with credentials for an unknown user raises an UnauthorizedLogin error. """ def fakeRunqueryMissingUser(query, username): d = Deferred() reactor.callLater(0, d.callback, ()) return d creds = credentials.UsernameHashedPassword("user", "pass") checker = DBCredentialsChecker(fakeRunqueryMissingUser, "fake query") d = checker.requestAvatarId(creds) def checkError(result): self.assertEqual(result.message, "User not in database") return self.assertFailure(d, UnauthorizedLogin).addCallback(checkError)
def test_requestAvatarIdBadCredentials(self): """ Calling requestAvatarId with invalid credentials raises an UnauthorizedLogin error. """ def fakeRunqueryBadPassword(query, username): d = Deferred() reactor.callLater(0, d.callback, (("user", "badpass"),)) return d creds = credentials.UsernameHashedPassword("user", "pass") checker = DBCredentialsChecker(fakeRunqueryBadPassword, "fake query") d = checker.requestAvatarId(creds) def checkError(result): self.assertEqual(result.message, "Password mismatch") return self.assertFailure(d, UnauthorizedLogin).addCallback(checkError)
def test_password_auth_user_with_correct_hashed_password(self): """ AccountFileChecker.requestAvatarId returns a Deferred that fires with the user if the correct password is given in hashed form. """ key_credentials = credentials.UsernameHashedPassword( b"alice", b"herpassword") d = self.checker.requestAvatarId(key_credentials) def authenticated(avatarId): self.assertEqual(( b"alice", b"URI:DIR2:aaaaaaaaaaaaaaaaaaaaaaaaaa:1111111111111111111111111111111111111111111111111111" ), (avatarId.username, avatarId.rootcap)) return d
def test_requestAvatarIdGoodCredentials(self): """ Calling requestAvatarId with correct credentials returns the username. """ def fakeRunqueryMatchingPassword(query, username): d = Deferred() reactor.callLater(0, d.callback, (("user", "pass"),)) return d creds = credentials.UsernameHashedPassword("user", "pass") checker = DBCredentialsChecker(fakeRunqueryMatchingPassword, "fake query") d = checker.requestAvatarId(creds) def checkRequestAvatarCb(result): self.assertEqual(result, "user") d.addCallback(checkRequestAvatarCb) return d