90 lines
3.1 KiB
Python
90 lines
3.1 KiB
Python
from django.test import TestCase
|
|
from django.contrib.auth.models import User
|
|
from django.core.exceptions import ValidationError
|
|
from webui.models import BorgRepository
|
|
from django.test import Client
|
|
|
|
|
|
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()
|
|
|
|
|
|
class UserDeleteTestCase(TestCase):
|
|
def test_user_delete(self):
|
|
password = "12345"
|
|
user = User.objects.create_user(username="deleteme", password=password)
|
|
|
|
self.assertEqual(
|
|
BorgRepository.objects.filter(name="test_repo_for_deletion").count(), 0
|
|
)
|
|
|
|
# create a repository
|
|
BorgRepository.objects.create(
|
|
name="test_repo_for_deletion",
|
|
key="ssh-ed25519 lkjasdlkjaslkdjaslkjd",
|
|
user=user,
|
|
)
|
|
|
|
# create a session for the user
|
|
c = Client()
|
|
|
|
# log in
|
|
self.assertTrue(c.login(username=user.username, password=password))
|
|
|
|
# delete the account
|
|
|
|
response = c.post("/delete/", {"confirm": "on"}, follow=True)
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
# check that there is nothing left of the user
|
|
self.assertEqual(User.objects.filter(username="deleteme").count(), 0)
|
|
|
|
self.assertEqual(
|
|
BorgRepository.objects.filter(name="test_repo_for_deletion").count(), 0
|
|
)
|