reworked SSH Key handling

This commit is contained in:
Johannes Erwerle 2026-04-19 20:34:07 +02:00
parent 8b46b747de
commit 02fad76482
6 changed files with 99 additions and 8 deletions

View file

View file

@ -0,0 +1,54 @@
from django.test import TestCase
from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
from webui.models import BorgRepository
class BorgRepositoryTestCase(TestCase):
def test_ssh_key_regex(self):
user = User.objects.create(username="foo")
# good repo
repo = BorgRepository.objects.create(
name="test1",
key="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOYOkeGl40Bss9LMmreCtzq+uXw4IQ/E5SKsBRcKAfF3 jo@hubris",
user=user,
)
repo.full_clean()
# good repo, key without comment
repo = BorgRepository.objects.create(
name="test2",
key="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOYOkeGl40Bss9LMmreCtzq+uXw4IQ/E5SKsBRcKAfF3",
user=user,
)
repo.full_clean()
# bad repo (wrong key)
repo = BorgRepository.objects.create(name="test3", key="Foo", user=user)
self.assertRaises(ValidationError, repo.full_clean)
# bad repo (multiple valid keys )
repo = BorgRepository.objects.create(
name="test4",
key="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOYOkeGl40Bss9LMmreCtzq+uXw4IQ/E5SKsBRcKAfF3 jo@hubris\nssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOYOkeGl40Bss9LMmreCtzq+uXw4IQ/E5SKsBRcKAfF3 jo@hubris",
user=user,
)
self.assertRaises(ValidationError, repo.full_clean)
# bad repo, leading whitespace
repo = BorgRepository.objects.create(
name="test5",
key=" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOYOkeGl40Bss9LMmreCtzq+uXw4IQ/E5SKsBRcKAfF3 jo@hubris",
user=user,
)
self.assertRaises(ValidationError, repo.full_clean)
# good repo, with whitespace in commment
repo = BorgRepository.objects.create(
name="test6",
key="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOYOkeGl40Bss9LMmreCtzq+uXw4IQ/E5SKsBRcKAfF3 jo@hubris whitespace in comment",
user=user,
)
repo.full_clean()