def validate_user_registration_request_data(data): # Verify if request body has required fields if "name" not in data: return messages.NAME_FIELD_IS_MISSING if "username" not in data: return messages.USERNAME_FIELD_IS_MISSING if "password" not in data: return messages.PASSWORD_FIELD_IS_MISSING if "email" not in data: return messages.EMAIL_FIELD_IS_MISSING if "terms_and_conditions_checked" not in data: return messages.TERMS_AND_CONDITIONS_FIELD_IS_MISSING name = data["name"] username = data["username"] password = data["password"] email = data["email"] terms_and_conditions_checked = data["terms_and_conditions_checked"] if not (isinstance(name, str) and isinstance(username, str) and isinstance(password, str)): return messages.NAME_USERNAME_AND_PASSWORD_NOT_IN_STRING_FORMAT is_valid = validate_length(len(get_stripped_string(name)), NAME_MIN_LENGTH, NAME_MAX_LENGTH, "name") if not is_valid[0]: return is_valid[1] is_valid = validate_length( len(get_stripped_string(username)), USERNAME_MIN_LENGTH, USERNAME_MAX_LENGTH, "username", ) if not is_valid[0]: return is_valid[1] is_valid = validate_length( len(get_stripped_string(password)), PASSWORD_MIN_LENGTH, PASSWORD_MAX_LENGTH, "password", ) if not is_valid[0]: return is_valid[1] # Verify business logic of request body if not terms_and_conditions_checked: return messages.TERMS_AND_CONDITIONS_ARE_NOT_CHECKED if not is_name_valid(name): return messages.NAME_INPUT_BY_USER_IS_INVALID if not is_email_valid(email): return messages.EMAIL_INPUT_BY_USER_IS_INVALID if not is_username_valid(username): return messages.USERNAME_INPUT_BY_USER_IS_INVALID return {}
def validate_resend_email_request_data(data): # Verify if request body has required fields if "email" not in data: return messages.EMAIL_FIELD_IS_MISSING email = data["email"] if not is_email_valid(email): return messages.EMAIL_INPUT_BY_USER_IS_INVALID return {}
def authenticate(username_or_email: str, password: str): """ User login process. The user can login with two options: -> username + password -> email + password Arguments: username_or_email: The username or email associated with the account being authenticated. password: The password associated with the account being authenticated. Returns: Returns authenticated user if username and password are valid, otherwise returns None. """ if is_email_valid(username_or_email): user = UserModel.find_by_email(username_or_email) else: user = UserModel.find_by_username(username_or_email) if user and user.check_password(password): return user return None
def test_empty_email(self): email = "" is_valid = is_email_valid(email) self.assertFalse(is_valid)
def test_invalid_email_with_no_at(self): email = "invalidemail.com" is_valid = is_email_valid(email) self.assertFalse(is_valid)
def test_invalid_email_with_no_dot_after_at(self): email = "invalid@emailcom" is_valid = is_email_valid(email) self.assertFalse(is_valid)
def test_valid_email(self): email = "*****@*****.**" is_valid = is_email_valid(email) self.assertTrue(is_valid)