mirror of
https://github.com/sissbruecker/linkding.git
synced 2025-08-08 03:08:29 +02:00
Archive snapshots of websites locally (#672)
* Add basic HTML snapshots * Implement asset list * Add snapshot creation tests * Add deletion tests * Show file size * Remove snapshots * Create new snapshots * Switch to single-file * CSS tweak * Remove auto refresh * Show delete link when there is no file yet * Add current date to display name * Add flag for snapshot support * Add option for disabling automatic snapshots * Make snapshots sharable * Document image variants * Update README.md * Add migrations * Fix tests
This commit is contained in:
44
bookmarks/tests/test_monolith_service.py
Normal file
44
bookmarks/tests/test_monolith_service.py
Normal file
@@ -0,0 +1,44 @@
|
||||
import gzip
|
||||
import os
|
||||
from unittest import mock
|
||||
import subprocess
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from bookmarks.services import monolith
|
||||
|
||||
|
||||
class MonolithServiceTestCase(TestCase):
|
||||
html_content = "<html><body><h1>Hello, World!</h1></body></html>"
|
||||
html_filepath = "temp.html.gz"
|
||||
temp_html_filepath = "temp.html.gz.tmp"
|
||||
|
||||
def tearDown(self):
|
||||
if os.path.exists(self.html_filepath):
|
||||
os.remove(self.html_filepath)
|
||||
if os.path.exists(self.temp_html_filepath):
|
||||
os.remove(self.temp_html_filepath)
|
||||
|
||||
def create_test_file(self, *args, **kwargs):
|
||||
with open(self.temp_html_filepath, "w") as file:
|
||||
file.write(self.html_content)
|
||||
|
||||
def test_create_snapshot(self):
|
||||
with mock.patch("subprocess.run") as mock_run:
|
||||
mock_run.side_effect = self.create_test_file
|
||||
|
||||
monolith.create_snapshot("http://example.com", self.html_filepath)
|
||||
|
||||
self.assertTrue(os.path.exists(self.html_filepath))
|
||||
self.assertFalse(os.path.exists(self.temp_html_filepath))
|
||||
|
||||
with gzip.open(self.html_filepath, "rt") as file:
|
||||
content = file.read()
|
||||
self.assertEqual(content, self.html_content)
|
||||
|
||||
def test_create_snapshot_failure(self):
|
||||
with mock.patch("subprocess.run") as mock_run:
|
||||
mock_run.side_effect = subprocess.CalledProcessError(1, "command")
|
||||
|
||||
with self.assertRaises(monolith.MonolithError):
|
||||
monolith.create_snapshot("http://example.com", self.html_filepath)
|
Reference in New Issue
Block a user