def test_membership_validatepassword(self): """ Tests the password validation logic. """ store = MembershipStore() provider = MembershipProvider({ "store": store }) password_one = "1568.Kop$2" password_two = "1568.asdas" valid, error = provider.validate_password(password_one, password_two) assert valid == False password_one = "easy" # too easy password_two = "easy" valid, error = provider.validate_password(password_one, password_two) assert valid == False and error == "password too weak" password_one = "1568.Kop$2" password_two = "1568.Kop$2" valid, error = provider.validate_password(password_one, password_two) assert valid == True
def register_membership(app): """ Initialize an application global membership provider. NB: an alternative, if needed, is to initialize a membership provider for each logical area (e.g. admin, public, etc.); which allows to use different database structures to store accounts and sessions for different parts of the application and to have different, parallel authentication mechanisms. This template includes a global membership provider, because it is a simpler model that suffices in most cases. """ DAL_PROJECT = app.config["DAL_PROJECT"] # initialize an application membership provider # NB: an alternative, if needed, is to initialize a membership provider for each area (e.g. admin and public areas) membership_store = None if DAL_PROJECT == "dalmongo": from dalmongo.membership.membershipstore import MembershipStore membership_store = MembershipStore() else: raise Exception("MembershipStore for `{}` implemented".format(DAL_PROJECT)) # instantiate the membership provider provider = MembershipProvider({ "store": membership_store }) # attach to the application setattr(app, "membership", provider)
def test_membership_create_session(self): """ Tests the membership create session functions. """ store = MembershipStore() provider = MembershipProvider({ "store": store }) success, error = provider.try_login("*****@*****.**", "1568.Kop$2", False, "no-ip", { "user_agent": "Flask-Three Template Test" }) assert success == False and error == "AccountNotFound" # create account userkey = "*****@*****.**" password = "******" # delete the account (may be there due to previous failed test) provider.delete_account(userkey) success, result = provider.create_account(userkey, password) # the first time, it should work assert success == True # get account data account = store.get_account(userkey) assert account is not None # try to create again the same account, this time it shouldn't work success, result = provider.create_account(userkey, "1568.Kop$2") assert success == False and result == "AccountAlreadyExisting" # try to create a session for this account login_success, data = provider.try_login(userkey, password, False, "no-ip", { "user_agent": "Flask-Three Template Test" }) assert login_success == True principal = data["principal"] session = data["session"] # now delete the account provider.delete_account(userkey) account = provider.get_account(userkey) assert account is None