示例#1
0
def test_create_user_new_email(
    client: TestClient,
    superuser_token_headers: dict,
    uow: SqlAlchemyUnitOfWork = get_sqlalchemy_uow()
) -> None:
    email = random_email()
    name = random_lower_string()
    password = random_lower_string()
    data = {"email": email, "password": password, "name": name}
    r = client.post(
        f"{settings.API_V1_STR}/users/",
        headers=superuser_token_headers,
        json=data,
    )
    assert 200 <= r.status_code < 300
    created_user = r.json()
    user = user_services.get_user_by_email(email, uow)
    assert user
    assert user.email == created_user["email"]
    assert user.id == created_user["id"]
    assert user.id is not None

    # Ensure we don't expose passwords
    assert created_user.get("hashed_password") is None
    assert created_user.get("password") is None
示例#2
0
def test_retrieve_users(
    client: TestClient,
    superuser_token_headers: dict,
    uow: SqlAlchemyUnitOfWork = get_sqlalchemy_uow()
) -> None:
    email = random_email()
    username = random_lower_string()
    password = random_lower_string()
    user_in = UserCreate(email=email, name=username, password=password)
    user_services.create_user(user_in, uow)

    email2 = random_email()
    username2 = random_lower_string()
    password2 = random_lower_string()
    UserCreate(email=email2, name=username2, password=password2)

    r = client.get(f"{settings.API_V1_STR}/users/",
                   headers=superuser_token_headers)
    all_users = r.json()

    assert len(all_users) > 1
    for item in all_users:
        assert "email" in item
        assert "name" in item
        assert "password" not in item
示例#3
0
def init() -> None:
    user_in = UserCreate(
        email=settings.FIRST_SUPERUSER_EMAIL,
        name=settings.FIRST_SUPERUSER_NAME,
        password=settings.FIRST_SUPERUSER_PASSWORD,
    )
    try:
        user_services.create_user(create_obj=user_in, uow=get_sqlalchemy_uow())
    except user_services.UserAlreadyExists:
        pass
示例#4
0
def test_create_user_existing_username(
    client: TestClient,
    superuser_token_headers: dict,
    uow: SqlAlchemyUnitOfWork = get_sqlalchemy_uow()
) -> None:
    email = random_email()
    username = random_lower_string()
    password = random_lower_string()
    user_in = UserCreate(email=email, name=username, password=password)
    user_services.create_user(user_in, uow)
    data = {"email": email, "password": password, "name": username}
    r = client.post(
        f"{settings.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
示例#5
0
def test_get_existing_user(
    client: TestClient,
    superuser_token_headers: dict,
    uow: SqlAlchemyUnitOfWork = get_sqlalchemy_uow()
) -> None:
    email = random_email()
    name = random_lower_string()
    password = random_lower_string()
    user_in = UserCreate(email=email, name=name, password=password)
    user = user_services.create_user(user_in, uow)
    user_id = user.id
    r = client.get(
        f"{settings.API_V1_STR}/users/{user_id}",
        headers=superuser_token_headers,
    )
    assert 200 <= r.status_code < 300
    api_user = r.json()
    existing_user = user_services.get_user_by_email(email, uow)
    assert existing_user
    assert existing_user.email == api_user["email"]
示例#6
0
def authentication_token_from_email(
        *, client: TestClient, email: EmailStr, uow: SqlAlchemyUnitOfWork = get_sqlalchemy_uow()
) -> Dict[str, str]:
    """
    Return a valid token for the user with given email.

    If the user doesn't exist it is created first.
    """
    password = random_lower_string()
    name = random_lower_string()
    with uow:
        user = user_services.get_user_by_email(email, uow)
        if user:
            uow.users.delete_by_email(email)
            uow.commit()
        user_in = UserCreate(name=name, email=email, password=password)
        user = user_services.create_user(user_in, uow)

        uow.commit()
    return user_authentication_headers(
        client=client, username=email, password=password
    )
def uow():
    return get_sqlalchemy_uow()