Initial import from Docker volume
This commit is contained in:
96
tests/test_filestore.py
Executable file
96
tests/test_filestore.py
Executable file
@@ -0,0 +1,96 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
import os
|
||||
import shutil
|
||||
import tempfile
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
|
||||
from trytond.config import config
|
||||
from trytond.filestore import filestore
|
||||
|
||||
|
||||
class FileStoreTestCase(unittest.TestCase):
|
||||
"Test FileStore"
|
||||
|
||||
def setUp(self):
|
||||
path = config.get('database', 'path')
|
||||
dtemp = tempfile.mkdtemp()
|
||||
config.set('database', 'path', dtemp)
|
||||
self.addCleanup(config.set, 'database', 'path', path)
|
||||
self.addCleanup(shutil.rmtree, dtemp)
|
||||
|
||||
def data(self):
|
||||
return os.urandom(10)
|
||||
|
||||
def test_set(self):
|
||||
"Test set"
|
||||
result = filestore.set(self.data(), prefix='test')
|
||||
self.assertTrue(result)
|
||||
self.assertIsInstance(result, str)
|
||||
|
||||
def test_setmany(self):
|
||||
"Test setmany"
|
||||
result = filestore.setmany([self.data(), self.data()], prefix='test')
|
||||
self.assertIsInstance(result, list)
|
||||
self.assertEqual(len(result), 2)
|
||||
self.assertIsInstance(result[0], str)
|
||||
|
||||
def test_get(self):
|
||||
"Test get"
|
||||
data = self.data()
|
||||
id = filestore.set(data, prefix='test')
|
||||
self.assertEqual(filestore.get(id, prefix='test'), data)
|
||||
|
||||
def test_getmany(self):
|
||||
"Test getmany"
|
||||
data = [self.data(), self.data()]
|
||||
ids = filestore.setmany(data, prefix='test')
|
||||
self.assertListEqual(filestore.getmany(ids, prefix='test'), data)
|
||||
|
||||
def test_size(self):
|
||||
"Test size"
|
||||
data = self.data()
|
||||
id = filestore.set(data, prefix='test')
|
||||
self.assertEqual(filestore.size(id, prefix='test'), len(data))
|
||||
|
||||
def test_sizemany(self):
|
||||
"Test sizemany"
|
||||
data = [self.data(), self.data()]
|
||||
lens = [len(d) for d in data]
|
||||
ids = filestore.setmany(data, prefix='test')
|
||||
self.assertListEqual(filestore.sizemany(ids, prefix='test'), lens)
|
||||
|
||||
def test_prefix(self):
|
||||
"Test prefix"
|
||||
data = self.data()
|
||||
id = filestore.set(data, prefix='foo')
|
||||
with self.assertRaises(IOError):
|
||||
filestore.get(id, prefix='bar')
|
||||
|
||||
def test_bad_prefix(self):
|
||||
"Test bad prefix"
|
||||
with self.assertRaises(ValueError):
|
||||
filestore.set(self.data(), prefix='../')
|
||||
|
||||
def test_duplicate(self):
|
||||
"Test duplicate"
|
||||
data = self.data()
|
||||
id = filestore.set(data, prefix='test')
|
||||
self.assertEqual(filestore.set(data, prefix='test'), id)
|
||||
|
||||
def test_collision(self):
|
||||
"Test collision"
|
||||
data1 = self.data()
|
||||
data2 = self.data()
|
||||
|
||||
id1 = filestore.set(data1, prefix='test')
|
||||
|
||||
with patch.object(filestore, '_id') as _id:
|
||||
_id.return_value = id1
|
||||
|
||||
id2 = filestore.set(data2, prefix='test')
|
||||
|
||||
self.assertNotEqual(id1, id2)
|
||||
self.assertEqual(filestore.get(id1, prefix='test'), data1)
|
||||
self.assertEqual(filestore.get(id2, prefix='test'), data2)
|
||||
Reference in New Issue
Block a user