Merge branch 'folder-journal-exception' into directory-journal-config-encrypt

This commit is contained in:
Micah Jerome Ellison 2021-08-21 13:10:06 -07:00
commit 6561b50311
5 changed files with 31 additions and 2 deletions

View file

@ -32,6 +32,7 @@ class DayOne(Journal.Journal):
def __init__(self, **kwargs):
self.entries = []
self._deleted_entries = []
self.can_be_encrypted = False
super().__init__(**kwargs)
def open(self):

View file

@ -25,6 +25,7 @@ class Folder(Journal.Journal):
def __init__(self, **kwargs):
self.entries = []
self._diff_entry_dates = []
self.can_be_encrypted = False
super(Folder, self).__init__(**kwargs)
def open(self):

View file

@ -13,6 +13,7 @@ avoid any possible overhead for these standalone commands.
"""
import platform
import sys
from .exception import JrnlError
def preconfig_diagnostic(_):
@ -68,6 +69,13 @@ def postconfig_encrypt(args, config, original_config, **kwargs):
# Open the journal
journal = open_journal(args.journal_name, config)
if hasattr(journal, "can_be_encrypted") and not journal.can_be_encrypted:
raise JrnlError(
"CannotEncryptJournalType",
journal_name=args.journal_name,
journal_type=journal.__class__.__name__,
)
journal.config["encrypt"] = True
new_journal = EncryptedJournal.from_journal(journal)

View file

@ -38,6 +38,13 @@ class JrnlError(Exception):
by at least {columns} in the configuration file or by using
--config-override at the command line
""",
"CannotEncryptJournalType": """
The journal {journal_name} can't be encrypted because it is a
{journal_type} journal.
To encrypt it, create a new journal referencing a file, export
this journal to the new journal, then encrypt the new journal.
""",
}
msg = error_messages[self.error_type].format(**kwargs)

View file

@ -28,13 +28,14 @@ Feature: Encrypting and decrypting journals
# This should warn the user that the journal is already encrypted
Scenario: Encrypting a journal
Scenario Outline: Encrypting a journal
Given we use the config "simple.yaml"
When we run "jrnl --encrypt" and enter
swordfish
swordfish
n
Then we should see the message "Journal encrypted"
Then we should get no error
And we should see the message "Journal encrypted"
And the config for journal "default" should contain "encrypt: true"
When we run "jrnl -n 1" and enter "swordfish"
Then we should be prompted for a password
@ -49,3 +50,14 @@ Feature: Encrypting and decrypting journals
| config_file |
| basic_folder.yaml |
| basic_dayone.yaml |
Scenario Outline: Attempt to encrypt a folder or DayOne journal should result in an error
Given we use the config "<config_file>"
When we run "jrnl --encrypt"
Then the error output should contain "can't be encrypted"
Examples: configs
| config_file |
| basic_folder.yaml |
| basic_dayone.yaml |