Exemple #1
0
def test_retrieve_users(superuser_token_headers):
    server_api = get_server_api()
    username = random_lower_string()
    password = random_lower_string()
    user_in = UserInCreate(username=username,
                           email=username,
                           password=password)
    bucket = get_default_bucket()
    user = upsert_user(bucket, user_in, persist_to=1)

    username2 = random_lower_string()
    password2 = random_lower_string()
    user_in2 = UserInCreate(username=username2,
                            email=username2,
                            password=password2)
    user2 = upsert_user(bucket, user_in, persist_to=1)

    r = requests.get(f"{server_api}{config.API_V1_STR}/users/",
                     headers=superuser_token_headers)
    all_users = r.json()

    assert len(all_users) > 1
    for user in all_users:
        assert "username" in user
        assert "admin_roles" in user
Exemple #2
0
def init_db():
    logging.info("before config_couchbase")
    config_couchbase(COUCHBASE_USER,
                     COUCHBASE_PASSWORD,
                     host=COUCHBASE_HOST,
                     port=COUCHBASE_PORT)
    logging.info("after config_couchbase")
    # COUCHBASE_USER="******"
    # COUCHBASE_PASSWORD="******"
    logging.info("before ensure_create_bucket")
    ensure_create_bucket(
        COUCHBASE_USER,
        COUCHBASE_PASSWORD,
        COUCHBASE_BUCKET_NAME,
        host=COUCHBASE_HOST,
        port=COUCHBASE_PORT,
    )
    logging.info("after ensure_create_bucket")
    logging.info("before get_bucket")
    bucket = get_bucket(
        COUCHBASE_USER,
        COUCHBASE_PASSWORD,
        COUCHBASE_BUCKET_NAME,
        host=COUCHBASE_HOST,
        port=COUCHBASE_PORT,
    )
    logging.info("after get_bucket")
    logging.info("before ensure_create_primary_index")
    ensure_create_primary_index(bucket)
    logging.info("after ensure_create_primary_index")
    logging.info("before ensure_create_type_index")
    ensure_create_type_index(bucket)
    logging.info("after ensure_create_type_index")
    logging.info("before ensure_create_couchbase_app_user sync")
    ensure_create_couchbase_app_user(
        COUCHBASE_USER,
        COUCHBASE_PASSWORD,
        COUCHBASE_SYNC_GATEWAY_USER,
        COUCHBASE_SYNC_GATEWAY_PASSWORD,
        COUCHBASE_BUCKET_NAME,
        host=COUCHBASE_HOST,
        port=COUCHBASE_PORT,
    )
    logging.info("after ensure_create_couchbase_app_user sync")
    logging.info("before upsert_user first superuser")
    in_user = UserInCreate(
        name=FIRST_SUPERUSER,
        password=FIRST_SUPERUSER_PASSWORD,
        email=FIRST_SUPERUSER,
        admin_roles=[RoleEnum.superuser, RoleEnum.admin],
        admin_channels=[FIRST_SUPERUSER, RoleEnum.admin],
    )
    upsert_user(bucket, in_user)
    logging.info("after upsert_user first superuser")
Exemple #3
0
def test_check_if_user_is_active():
    email = random_lower_string()
    password = random_lower_string()
    user_in = UserInCreate(name=email, email=email, password=password)
    user = upsert_user(bucket, user_in)
    is_active = check_if_user_is_active(user)
    assert is_active is True
Exemple #4
0
def test_check_if_user_is_superuser_normal_user():
    username = random_lower_string()
    password = random_lower_string()
    user_in = UserInCreate(name=username, email=username, password=password)
    user = upsert_user(bucket, user_in)
    is_superuser = check_if_user_is_superuser(user)
    assert is_superuser is False
Exemple #5
0
def route_users_post(
    *, user_in: UserInCreate, current_user: UserInDB = Depends(get_current_user)
):
    """
    Create new user
    """
    if not check_if_user_is_active(current_user):
        raise HTTPException(status_code=400, detail="Inactive user")
    elif not check_if_user_is_superuser(current_user):
        raise HTTPException(
            status_code=400, detail="The user doesn't have enough privileges"
        )
    bucket = get_default_bucket()
    user = get_user(bucket, user_in.username)
    if user:
        raise HTTPException(
            status_code=400,
            detail="The user with this username already exists in the system.",
        )
    user = upsert_user(bucket, user_in, persist_to=1)
    if config.EMAILS_ENABLED and user_in.email:
        send_new_account_email(
            email_to=user_in.email, username=user_in.username, password=user_in.password
        )
    return user
Exemple #6
0
def route_users_post_open(
    *,
    username: str = Body(...),
    password: str = Body(...),
    email: EmailStr = Body(None),
    full_name: str = Body(None),
):
    """
    Create new user without the need to be logged in
    """
    if not config.USERS_OPEN_REGISTRATION:
        raise HTTPException(
            status_code=403,
            detail="Open user resgistration is forbidden on this server",
        )
    bucket = get_default_bucket()
    user = get_user(bucket, username)
    if user:
        raise HTTPException(
            status_code=400,
            detail="The user with this username already exists in the system",
        )
    user_in = UserInCreate(
        username=username, password=password, email=email, full_name=full_name
    )
    user = upsert_user(bucket, user_in, persist_to=1)
    return user
def route_users_post(
    *,
    name,
    password,
    admin_channels=[],
    admin_roles=[],
    disabled=False,
    email=None,
    human_name=None,
):
    current_user = get_current_user()

    if not current_user:
        abort(400, "Could not authenticate user with provided token")
    elif not check_if_user_is_active(current_user):
        abort(400, "Inactive user")
    elif not check_if_user_is_admin_or_superuser(current_user):
        abort(400, "The user doesn't have enough privileges")
    user = get_user(bucket, name)
    if user:
        return abort(
            400, f"The user with this username already exists in the system.")
    user_in = UserInCreate(
        name=name,
        password=password,
        admin_channels=admin_channels,
        admin_roles=admin_roles,
        disabled=disabled,
        email=email,
        human_name=human_name,
    )
    user = upsert_user(bucket, user_in)
    return user
Exemple #8
0
def route_users_post(
    *,
    username,
    password,
    admin_channels=[],
    admin_roles=[],
    disabled=False,
    email=None,
    full_name=None,
):
    current_user = get_current_user()

    if not current_user:
        abort(400, "Could not authenticate user with provided token")
    elif not check_if_user_is_active(current_user):
        abort(400, "Inactive user")
    elif not check_if_user_is_superuser(current_user):
        abort(400, "The user doesn't have enough privileges")
    bucket = get_default_bucket()
    user = get_user(bucket, username)
    if user:
        return abort(400, f"The user with this username already exists in the system.")
    user_in = UserInCreate(
        username=username,
        password=password,
        admin_channels=admin_channels,
        admin_roles=admin_roles,
        disabled=disabled,
        email=email,
        full_name=full_name,
    )
    user = upsert_user(bucket, user_in)
    if config.EMAILS_ENABLED:
        send_new_account_email(email_to=email, username=username, password=password)
    return user
Exemple #9
0
def test_authenticate_user():
    email = random_lower_string()
    password = random_lower_string()
    user_in = UserInCreate(name=email, email=email, password=password)
    user = upsert_user(bucket, user_in)
    authenticated_user = authenticate_user(bucket, email, password)
    assert authenticated_user
    assert user.Meta.key == authenticated_user.Meta.key
Exemple #10
0
def test_check_if_user_is_active():
    email = random_lower_string()
    password = random_lower_string()
    user_in = UserInCreate(username=email, email=email, password=password)
    bucket = get_default_bucket()
    user = upsert_user(bucket, user_in, persist_to=1)
    is_active = check_if_user_is_active(user)
    assert is_active is True
Exemple #11
0
def test_authenticate_user():
    email = random_lower_string()
    password = random_lower_string()
    user_in = UserInCreate(username=email, email=email, password=password)
    bucket = get_default_bucket()
    user = upsert_user(bucket, user_in, persist_to=1)
    authenticated_user = authenticate_user(bucket, email, password)
    assert authenticated_user
    assert user.username == authenticated_user.username
Exemple #12
0
def test_check_if_user_is_superuser_normal_user():
    username = random_lower_string()
    password = random_lower_string()
    user_in = UserInCreate(username=username,
                           email=username,
                           password=password)
    bucket = get_default_bucket()
    user = upsert_user(bucket, user_in, persist_to=1)
    is_superuser = check_if_user_is_superuser(user)
    assert is_superuser is False
Exemple #13
0
def test_check_if_user_is_superuser():
    email = random_lower_string()
    password = random_lower_string()
    user_in = UserInCreate(name=email,
                           email=email,
                           password=password,
                           admin_roles=[RoleEnum.superuser])
    user = upsert_user(bucket, user_in)
    is_superuser = check_if_user_is_superuser(user)
    assert is_superuser is True
Exemple #14
0
def test_create_user():
    email = random_lower_string()
    password = random_lower_string()
    user_in = UserInCreate(name=email, email=email, password=password)
    user = upsert_user(bucket, user_in)
    assert hasattr(user, "name")
    assert user.name == email
    assert hasattr(user, "hashed_password")
    assert hasattr(user, "type")
    assert user.type == "userprofile"
Exemple #15
0
def test_get_user():
    password = random_lower_string()
    username = random_lower_string()
    user_in = UserInCreate(name=username,
                           email=username,
                           password=password,
                           admin_roles=[RoleEnum.superuser])
    user = upsert_user(bucket, user_in)
    user_2 = get_user(bucket, username)
    assert user.Meta.key == user_2.Meta.key
    assert user.json_dict() == user_2.json_dict()
Exemple #16
0
def test_create_user():
    email = random_lower_string()
    password = random_lower_string()
    user_in = UserInCreate(username=email, email=email, password=password)
    bucket = get_default_bucket()
    user = upsert_user(bucket, user_in, persist_to=1)
    assert hasattr(user, "username")
    assert user.username == email
    assert hasattr(user, "hashed_password")
    assert hasattr(user, "type")
    assert user.type == "userprofile"
def test_create_user_by_normal_user():
    server_api = get_server_api()
    username = random_lower_string()
    password = random_lower_string()
    user_in = UserInCreate(name=username, email=username, password=password)
    user = upsert_user(bucket, user_in)
    user_token_headers = user_authentication_headers(server_api, username, password)
    data = {"name": username, "password": password}
    r = requests.post(
        f"{server_api}{config.API_V1_STR}/users/", headers=user_token_headers, json=data
    )
    assert r.status_code == 400
Exemple #18
0
def route_users_post_open(*, username, password, email=None, full_name=None):
    if not config.USERS_OPEN_REGISTRATION:
        abort(403, "Open user resgistration is forbidden on this server")
    bucket = get_default_bucket()
    user = get_user(bucket, username)
    if user:
        return abort(400, f"The user with this username already exists in the system")
    user_in = UserInCreate(
        username=username, password=password, email=email, full_name=full_name
    )
    user = upsert_user(bucket, user_in)
    return user
def test_get_existing_user(superuser_token_headers):
    server_api = get_server_api()
    username = random_lower_string()
    password = random_lower_string()
    user_in = UserInCreate(name=username, email=username, password=password)
    user = upsert_user(bucket, user_in)
    r = requests.get(
        f"{server_api}{config.API_V1_STR}/users/{username}",
        headers=superuser_token_headers,
    )
    assert 200 <= r.status_code < 300
    api_user = r.json()
    user = get_user(bucket, username)
    assert user.name == api_user["name"]
Exemple #20
0
def test_get_user():
    password = random_lower_string()
    username = random_lower_string()
    user_in = UserInCreate(
        username=username,
        email=username,
        password=password,
        admin_roles=[RoleEnum.superuser],
    )
    bucket = get_default_bucket()
    user = upsert_user(bucket, user_in, persist_to=1)
    user_2 = get_user(bucket, username)
    assert user.username == user_2.username
    assert jsonable_encoder(user) == jsonable_encoder(user_2)
def test_create_user_existing_username(superuser_token_headers):
    server_api = get_server_api()
    username = random_lower_string()
    # username = email
    password = random_lower_string()
    user_in = UserInCreate(name=username, email=username, password=password)
    user = upsert_user(bucket, user_in)
    data = {"name": username, "password": password}
    r = requests.post(
        f"{server_api}{config.API_V1_STR}/users/",
        headers=superuser_token_headers,
        json=data,
    )
    created_user = r.json()
    assert r.status_code == 400
    assert "_id" not in created_user