示例#1
0
async def test_password_set():
    service = PasswordService(social_user)
    await service.password_set({
        "password1": "12345678",
        "password2": "12345678",
    })

    service = PasswordService(user)
    with pytest.raises(HTTPException) as e:
        await service.password_set({
            "password1": "12345678",
            "password2": "12345678",
        })
    assert e.type is HTTPException
    assert e.value.args[0] == 400
示例#2
0
def password_service_setup():
    PasswordService.setup(
        UsersRepo(MockDatabaseBackend("test"), MockCacheBackend(), []),
        auth_backend,
        False,
        "RU",
        "http://127.0.0.1",
        "127.0.0.1",
        RECAPTCHA_SECRET,
        None,
        None,
        None,
        None,
        None,
    )
示例#3
0
async def test_password_status():
    service = PasswordService(user)
    # TODO: exceptions
    # TODO: social
    res = await service.password_status()
    assert isinstance(res, dict)
    assert res.get("status") == "change"
示例#4
0
async def test_password_reset():
    token = create_random_string()
    token_hash = hash_string(token)
    service = PasswordService()
    await service._repo.set_password_reset_token(1, token_hash)

    await service.password_reset(
        {
            "password1": "87654321",
            "password2": "87654321",
        },
        token,
    )

    item = await service._repo.get(1)
    assert item.get("password") != "12345678"
示例#5
0
async def test_password_change():
    service = PasswordService(user)
    item = await service._repo.get(user.id)
    with pytest.raises(HTTPException) as e:
        await service.password_change({
            "old_password": "******",
            "password1": "87654321",
            "password2": "87654321",
        })

    assert e.type is HTTPException
    assert e.value.args[0] == 400

    await service.password_change({
        "old_password": "******",
        "password1": "87654321",
        "password2": "87654321",
    })
    item = await service._repo.get(user.id)
    assert item.get("password") != "12345678"
示例#6
0
 async def password_change(*,
                           request: Request,
                           user: User = Depends(get_authenticated_user)):
     data = await request.json()
     service = PasswordService(user)
     return await service.password_change(data)
示例#7
0
 async def password_reset(*, token: str, request: Request):
     data = await request.json()
     service = PasswordService()
     return await service.password_reset(data, token)
示例#8
0
 async def password_status(*, user: User = Depends(get_authenticated_user)):
     service = PasswordService(user)
     return await service.password_status()
示例#9
0
 async def forgot_password(*, request: Request):
     data = await request.json()
     ip = request.client.host
     service = PasswordService()
     return await service.forgot_password(data, ip)
示例#10
0
def get_router(
    repo: UsersRepo,
    auth_backend: JWTBackend,
    get_authenticated_user: Callable,
    debug: bool,
    language: str,
    base_url: str,
    site: str,
    recaptcha_secret: str,
    smtp_username: str,
    smtp_password: str,
    smtp_host: str,
    smtp_tls: int,
    display_name: str,
):

    PasswordService.setup(
        repo,
        auth_backend,
        debug,
        language,
        base_url,
        site,
        recaptcha_secret,
        smtp_username,
        smtp_password,
        smtp_host,
        smtp_tls,
        display_name,
    )

    router = APIRouter()

    @router.post("/forgot_password", name="auth:forgot_password")
    async def forgot_password(*, request: Request):
        data = await request.json()
        ip = request.client.host
        service = PasswordService()
        return await service.forgot_password(data, ip)

    @router.get("/password", name="auth:password_status")
    async def password_status(*, user: User = Depends(get_authenticated_user)):
        service = PasswordService(user)
        return await service.password_status()

    @router.post("/password", name="auth:password_set")
    async def password_set(*,
                           request: Request,
                           user: User = Depends(get_authenticated_user)):
        data = await request.json()
        service = PasswordService(user)
        return await service.password_set(data)

    @router.post("/password/{token}", name="auth:password_reset")
    async def password_reset(*, token: str, request: Request):
        data = await request.json()
        service = PasswordService()
        return await service.password_reset(data, token)

    @router.put("/password", name="auth:password_change")
    async def password_change(*,
                              request: Request,
                              user: User = Depends(get_authenticated_user)):
        data = await request.json()
        service = PasswordService(user)
        return await service.password_change(data)

    return router
示例#11
0
async def test_forgot_password():
    service = PasswordService()
    # TODO: exceptions

    await service.forgot_password({"email": "*****@*****.**"}, "127.0.0.1")