Improve error handling and begin error test suite
This commit is contained in:
@ -7,6 +7,7 @@ from pathlib import Path
|
||||
from typing import cast
|
||||
|
||||
import pykeepass
|
||||
import pykeepass.exceptions
|
||||
from sshecret_admin.core.settings import AdminServerSettings
|
||||
|
||||
from .models import SecretGroup
|
||||
@ -20,6 +21,10 @@ NO_USERNAME = "NO_USERNAME"
|
||||
DEFAULT_LOCATION = "keepass.kdbx"
|
||||
|
||||
|
||||
class PasswordCredentialsError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
def create_password_db(location: Path, password: str) -> None:
|
||||
"""Create the password database."""
|
||||
LOG.info("Creating password database at %s", location)
|
||||
@ -248,7 +253,12 @@ class PasswordContext:
|
||||
@contextmanager
|
||||
def _password_context(location: Path, password: str) -> Iterator[PasswordContext]:
|
||||
"""Open the password context."""
|
||||
database = pykeepass.PyKeePass(str(location.absolute()), password=password)
|
||||
try:
|
||||
database = pykeepass.PyKeePass(str(location.absolute()), password=password)
|
||||
except pykeepass.exceptions.CredentialsError as e:
|
||||
raise PasswordCredentialsError(
|
||||
"Could not open password database. Invalid credentials."
|
||||
) from e
|
||||
context = PasswordContext(database)
|
||||
yield context
|
||||
|
||||
|
||||
Reference in New Issue
Block a user