105 lines
3.4 KiB
Python
105 lines
3.4 KiB
Python
#!/usr/bin/env python3
|
|
import os
|
|
import hlna
|
|
import time
|
|
import unittest
|
|
from unittest.mock import patch
|
|
import zipfile
|
|
from click.testing import CliRunner
|
|
from pathlib import Path
|
|
home_dir = Path.home()
|
|
config_hlna = f"{home_dir}/.config/hlna/"
|
|
|
|
|
|
|
|
class TestFindFile(unittest.TestCase):
|
|
def setUp(self):
|
|
self.test_dir = 'test_dir'
|
|
os.mkdir(self.test_dir)
|
|
self.test_files = ['foo.conf', 'bar.ini', 'qux.cfg', 'baz.txt', '.directory']
|
|
for f in self.test_files:
|
|
open(os.path.join(self.test_dir, f), 'w').close()
|
|
|
|
def tearDown(self):
|
|
for f in self.test_files:
|
|
os.remove(os.path.join(self.test_dir, f))
|
|
os.rmdir(self.test_dir)
|
|
|
|
def test_find_file(self):
|
|
res = hlna.find_file(self.test_dir)
|
|
self.assertEqual(sorted(res), sorted(['foo.conf', 'bar.ini', 'qux.cfg', 'baz.txt']))
|
|
|
|
def test_find_file_empty_dir(self):
|
|
res = hlna.find_file('empty_dir')
|
|
self.assertEqual(res, [])
|
|
|
|
class TestCreateDir(unittest.TestCase):
|
|
def test_create_dir(self):
|
|
testdir = 'testdir'
|
|
self.assertFalse(os.path.exists(testdir))
|
|
hlna.create_dir(testdir)
|
|
self.assertTrue(os.path.exists(testdir))
|
|
os.rmdir(testdir)
|
|
|
|
class TestRestore(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.runner = CliRunner()
|
|
self.zip_file_name = "test_backup.zip"
|
|
os.system("touch test_file1.txt test_file2.txt")
|
|
self.file_names = ["test_file1.txt", "test_file2.txt"]
|
|
with zipfile.ZipFile(self.zip_file_name, 'w') as zip_file:
|
|
for file_name in self.file_names:
|
|
zip_file.write(file_name)
|
|
|
|
def tearDown(self):
|
|
os.remove(self.zip_file_name)
|
|
for file_name in self.file_names:
|
|
os.remove(file_name)
|
|
|
|
def test_restore(self):
|
|
result = self.runner.invoke(hlna.restore, ["test", "-d", self.zip_file_name])
|
|
self.assertEqual(result.exit_code, 0)
|
|
for file_name in self.file_names:
|
|
self.assertTrue(os.path.exists("./"+file_name))
|
|
|
|
class TestBackup(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
data = hlna.read_yaml(g="path_server")
|
|
if data['path_server'] == "":
|
|
data['path_server'] = f"{home_dir}Servers/ARK/Backups/test_backup/"
|
|
else:
|
|
data['path_server'] = f"{data['path_server']}ARK/Backups/test_backup/"
|
|
self.backup_path = data['path_server']
|
|
self.runner = CliRunner()
|
|
with open(f"{config_hlna}/ARK/test_file.txt", "w") as file:
|
|
file.write("test content")
|
|
|
|
def tearDown(self):
|
|
os.remove(f"{config_hlna}ARK/test_file.txt")
|
|
for root, dirs, files in os.walk(self.backup_path):
|
|
for file in files:
|
|
os.remove(os.path.join(root, file))
|
|
os.rmdir(self.backup_path)
|
|
|
|
def test_backup(self):
|
|
result = self.runner.invoke(hlna.backup, ["ark_test"])
|
|
self.assertEqual(result.exit_code, 0)
|
|
self.assertTrue(os.path.exists(self.backup_path))
|
|
|
|
target = f"{self.backup_path}ark_test_backup-" + time.strftime('%Y_%m_%d') + '.zip'
|
|
self.assertTrue(os.path.exists(target))
|
|
with zipfile.ZipFile(target, 'r') as zip_file:
|
|
self.assertEqual(zip_file.testzip(), None)
|
|
self.assertTrue(os.path.exists(os.path.join(target, f"{config_hlna}ARK/test_file.txt")))
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|
|
|
|
|
|
|
|
|
|
|
|
|