Пример #1
0
def get_account(abort_if_invalid=True, username="") -> Account:
    """Gets credentials from the header's 'Authorization' key"""

    if abort_if_invalid:
        if request.authorization is None:
            abort(403, "No credentials provided")

        username = request.authorization['username']
        password = request.authorization['password']
        if username == "" or password == "":
            abort(
                403,
                "No credentials provided. Please ensure you have a registered account"
            )

        account = Account.find_account(username, password)
        if account is None:
            abort(
                403,
                "Invalid account credentials. Please ensure you have a valid registered account"
            )
    else:
        account = Account.find_account(username)

    return account
Пример #2
0
def test_create_package(db_session):
    account = Account.find_account(user1.email, "password")
    account.packages.append(pkg1)
    account.packages.append(pkg2)
    account.save()

    account = Account.find_account(user1.email, "password")
    assert len(account.to_dict(True)['packages']) == 2
Пример #3
0
def create_account():
    data = request.get_json()
    account = Account(**data)
    if Account.find_account(data['username']) is not None:
        abort(400, f"Username '{data['username']}' is already taken")
    elif Account.find_account(data['email']) is not None:
        abort(400, f"Email '{data['email']}' is already taken")

    try:
        return account.save().to_dict()
    except Exception as e:
        current_app.logger.error(e)
        abort(400, "could not create account")
Пример #4
0
def validate_account():
    error_message = "could not find account or password is incorrect"

    data = request.get_json()

    account = Account.find_account(data['username'], data['password'])
    if account is None:
        abort(404, error_message)

    return account.to_dict()
Пример #5
0
def delete_account():
    data = request.get_json()

    account = Account.find_account(data['username'], data['password'])
    if account is None:
        abort(401, "invalid account credentials")

    folder = Path(current_app.config['PACKAGE_FOLDER'])
    for p in account.packages:
        pkg_folder = folder.joinpath(p.name)
        if pkg_folder.exists():
            rmtree(pkg_folder, True)

    account.delete()
    return "", 200
Пример #6
0
def test_update_account(db_session):
    account = Account.find_account(user2.email, "password")
    assert account is not None

    account.update("password", "*****@*****.**")
    assert Account.find_account("*****@*****.**", "password") is not None
Пример #7
0
def test_find_account(db_session, username_or_email, password, is_none):
    account = Account.find_account(username_or_email, password)
    if is_none:
        assert account is None
    else:
        assert account is not None
Пример #8
0
def check_user_or_email_exists(user_or_email):
    if Account.find_account(user_or_email) is None:
        return "", 404
    else:
        return "", 200