HEX
Server: LiteSpeed
System: Linux CentOS-79-64-minimal 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: vishn3436 (5293)
PHP: 8.0.15
Disabled: NONE
Upload Files
File: //scripts/script-server/src/tests/user_file_storage_test.py
import os
import time
import unittest

from files.user_file_storage import UserFileStorage
from tests import test_utils
from utils import file_utils


class TestUserFileStorage(unittest.TestCase):
    def setUp(self):
        test_utils.setup()
        self.storage = UserFileStorage(b'12345678')

    def tearDown(self):
        test_utils.cleanup()
        self.storage._stop_autoclean()

    def test_create_folder(self):
        user_folder = self.storage.prepare_new_folder('me', test_utils.temp_folder)
        self.assertTrue(os.path.exists(user_folder))

    def test_create_folder_for_different_users(self):
        user1_folder = self.storage.prepare_new_folder('user1', test_utils.temp_folder)
        user2_folder = self.storage.prepare_new_folder('user2', test_utils.temp_folder)
        self.assertNotEqual(user1_folder, user2_folder)

    def test_create_different_folders_for_a_user(self):
        folder1 = self.storage.prepare_new_folder('me', test_utils.temp_folder)
        time.sleep(0.002)
        folder2 = self.storage.prepare_new_folder('me', test_utils.temp_folder)
        self.assertNotEqual(folder1, folder2)

    def test_autoclean_folder(self):
        folder = self.storage.prepare_new_folder('me', test_utils.temp_folder)
        self.storage.start_autoclean(test_utils.temp_folder, 2)
        self.assertTrue(os.path.exists(folder))

        time.sleep(0.020)
        self.assertFalse(os.path.exists(folder))

    def test_allow_to_access_own_folder(self):
        user1_folder = self.storage.prepare_new_folder('user1', test_utils.temp_folder)

        relative_folder = file_utils.relative_path(user1_folder, test_utils.temp_folder)
        self.assertTrue(self.storage.allowed_to_access(relative_folder, 'user1'))

    def test_prohibit_access_to_different_user(self):
        user1_folder = self.storage.prepare_new_folder('user1', test_utils.temp_folder)

        relative_folder = file_utils.relative_path(user1_folder, test_utils.temp_folder)
        self.assertFalse(self.storage.allowed_to_access(relative_folder, 'user2'))