コード例 #1
0
async def register(repo: UserRepo, credentials: Credentials) -> UserRegistry:
    email = credentials.email.lower()

    user = await repo.fetch_by_email(email)
    if user:
        raise EmailNotUniqueError(email)

    password_hash = hash_service.hash_(credentials.password)

    user = await repo.persist(email, password_hash)
    return UserRegistry(**user.dict())
コード例 #2
0
async def get_by_credentials(
        repo: UserRepo, credentials: Credentials) -> Optional[UserRegistry]:
    user = await repo.fetch_by_email(credentials.email.lower())
    if not user:
        hash_service.dummy_verify()
        return None

    password, hash_ = credentials.password, user.password_hash

    if not hash_service.verify(password, hash_):
        return None

    return UserRegistry(**user.dict())
コード例 #3
0
ファイル: user_test.py プロジェクト: GArmane/iheroes
        def test_is_required(self, registry_valid_data):
            registry_valid_data.pop("email")
            with pytest.raises(ValidationError) as excinfo:
                UserRegistry(**registry_valid_data)

            self.assert_validation_error("value_error.missing", excinfo)
コード例 #4
0
ファイル: user_test.py プロジェクト: GArmane/iheroes
        def test_must_be_email(self, registry_valid_data):
            registry_valid_data.update({"email": ["some string"]})
            with pytest.raises(ValidationError) as excinfo:
                UserRegistry(**registry_valid_data)

            self.assert_validation_error("type_error.str", excinfo)
コード例 #5
0
ファイル: user_test.py プロジェクト: GArmane/iheroes
        def test_must_be_int(self, registry_valid_data):
            registry_valid_data.update({"id": "some_id"})
            with pytest.raises(ValidationError) as excinfo:
                UserRegistry(**registry_valid_data)

            self.assert_validation_error("type_error.integer", excinfo)
コード例 #6
0
ファイル: user_test.py プロジェクト: GArmane/iheroes
 def test_immutability(self, registry_valid_data):
     entity = UserRegistry(**registry_valid_data)
     for key in entity.dict().keys():
         with pytest.raises(TypeError):
             setattr(entity, key, "some value")
コード例 #7
0
ファイル: user_test.py プロジェクト: GArmane/iheroes
 def test_invalidation(self, registry_invalid_data):
     with pytest.raises(ValidationError):
         assert UserRegistry(**registry_invalid_data)
コード例 #8
0
ファイル: user_test.py プロジェクト: GArmane/iheroes
 def test_validation(self, registry_valid_data):
     assert UserRegistry(**registry_valid_data)
コード例 #9
0
async def get_by_id(repo: UserRepo, id_: int) -> Optional[UserRegistry]:
    user = await repo.fetch(id_)
    return UserRegistry(**user.dict()) if user else None