Files
DemonGatanjieu-Anomalous_Mo…/tests/test_export_availability.py
T

46 lines
2.0 KiB
Python

import json
import sys
import unittest
from pathlib import Path
from unittest.mock import patch
PLUGIN_DIR = Path(__file__).resolve().parents[1]
sys.path[:0] = [str(PLUGIN_DIR), str(PLUGIN_DIR.parents[1])]
from api import recipe_packages
class ExportAvailabilityTests(unittest.IsolatedAsyncioTestCase):
async def test_import_inspection_and_commit_rejected_before_read_or_write(self):
class UnreadRequest:
@property
def content(self):
raise AssertionError('Disabled import must not read upload bytes')
async def json(self):
raise AssertionError('Disabled import must not read request data')
pending = {'existing-token': {'created': 123}}
with patch.object(recipe_packages, '_INSPECTIONS', pending), \
patch.object(recipe_packages, '_commit_import', side_effect=AssertionError('No file writes')):
for handler in (recipe_packages.api_import_recipe_package_inspect,
recipe_packages.api_import_recipe_package_commit):
response = await handler(UnreadRequest())
self.assertEqual(response.status, 503)
self.assertEqual(json.loads(response.text)['code'], 'recipe_import_disabled')
self.assertEqual(pending, {'existing-token': {'created': 123}})
async def test_export_rejected_before_request_or_files_are_read(self):
class UnreadRequest:
async def json(self):
raise AssertionError('Disabled export must not read request data')
with patch.object(recipe_packages, 'get_recipes_dir', side_effect=AssertionError('No filesystem access')):
response = await recipe_packages.api_export_recipe_package(UnreadRequest())
self.assertEqual(response.status, 503)
self.assertEqual(json.loads(response.text)['code'], 'recipe_export_disabled')
self.assertNotIn('Content-Disposition', response.headers)
if __name__ == '__main__':
unittest.main()