kopia lustrzana https://github.com/OpenDroneMap/WebODM
Unit tests
rodzic
df72f118d2
commit
cde9fddb8d
|
@ -27,6 +27,11 @@ def sync_plugin_db():
|
||||||
Creates db entries for undiscovered plugins to keep track
|
Creates db entries for undiscovered plugins to keep track
|
||||||
of enabled/disabled plugins
|
of enabled/disabled plugins
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Erase cache
|
||||||
|
global plugins
|
||||||
|
plugins = None
|
||||||
|
|
||||||
db_plugins = Plugin.objects.all()
|
db_plugins = Plugin.objects.all()
|
||||||
fs_plugins = get_plugins()
|
fs_plugins = get_plugins()
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,16 @@
|
||||||
import os
|
import os
|
||||||
|
import shutil
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.test import Client
|
from django.test import Client
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
|
|
||||||
|
from app.models import Plugin
|
||||||
from app.models import Project
|
from app.models import Project
|
||||||
from app.models import Task
|
from app.models import Task
|
||||||
from app.plugins import UserDataStore
|
from app.plugins import UserDataStore
|
||||||
from app.plugins import get_plugin_by_name
|
from app.plugins import get_plugin_by_name
|
||||||
|
from app.plugins import sync_plugin_db
|
||||||
from app.plugins.data_store import InvalidDataStoreValue
|
from app.plugins.data_store import InvalidDataStoreValue
|
||||||
from .classes import BootTestCase
|
from .classes import BootTestCase
|
||||||
from app.plugins.grass_engine import grass, GrassEngineException
|
from app.plugins.grass_engine import grass, GrassEngineException
|
||||||
|
@ -185,3 +188,59 @@ class TestPlugins(BootTestCase):
|
||||||
# Invalid types
|
# Invalid types
|
||||||
self.assertRaises(InvalidDataStoreValue, uds.set_bool, 'invalidbool', 5)
|
self.assertRaises(InvalidDataStoreValue, uds.set_bool, 'invalidbool', 5)
|
||||||
|
|
||||||
|
def test_toggle_plugins(self):
|
||||||
|
c = Client()
|
||||||
|
c.login(username='testuser', password='test1234')
|
||||||
|
|
||||||
|
# Cannot toggle plugins as normal user
|
||||||
|
res = c.get('/admin/app/plugin/test/disable/', follow=True)
|
||||||
|
self.assertRedirects(res, '/admin/login/?next=/admin/app/plugin/test/disable/')
|
||||||
|
|
||||||
|
c.login(username='testsuperuser', password='test1234')
|
||||||
|
|
||||||
|
# Test plugin is enabled
|
||||||
|
res = c.get('/admin/app/plugin/')
|
||||||
|
self.assertContains(res, '<a class="button" href="#" disabled>Enable</a>')
|
||||||
|
self.assertContains(res, "<script src='/plugins/test/test.js'></script>")
|
||||||
|
|
||||||
|
# Disable
|
||||||
|
res = c.get('/admin/app/plugin/test/disable/', follow=True)
|
||||||
|
self.assertEqual(res.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
# Test active vs. non-active flag for get_plugin_by_name
|
||||||
|
self.assertTrue(get_plugin_by_name("test") is None)
|
||||||
|
self.assertFalse(get_plugin_by_name("test", only_active=False) is None)
|
||||||
|
|
||||||
|
# Test plugin has been disabled
|
||||||
|
self.assertContains(res, '<a class="button" href="#" disabled>Disable</a>')
|
||||||
|
self.assertNotContains(res, "<script src='/plugins/test/test.js'></script>")
|
||||||
|
|
||||||
|
# Re-enable
|
||||||
|
res = c.get('/admin/app/plugin/test/enable/', follow=True)
|
||||||
|
self.assertEqual(res.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
|
def test_plugin_functions(self):
|
||||||
|
# Check db/fs syncing
|
||||||
|
if os.path.exists('plugins/test_copy'):
|
||||||
|
print("Removing plugins/test_copy")
|
||||||
|
shutil.rmtree('plugins/test_copy')
|
||||||
|
|
||||||
|
sync_plugin_db()
|
||||||
|
self.assertTrue(Plugin.objects.filter(pk='test_copy').count() == 0)
|
||||||
|
|
||||||
|
shutil.copytree('plugins/test', 'plugins/test_copy')
|
||||||
|
|
||||||
|
sync_plugin_db()
|
||||||
|
self.assertTrue(Plugin.objects.filter(pk='test_copy').count() == 1)
|
||||||
|
|
||||||
|
shutil.rmtree('plugins/test_copy')
|
||||||
|
sync_plugin_db()
|
||||||
|
self.assertTrue(Plugin.objects.filter(pk='test_copy').count() == 0)
|
||||||
|
|
||||||
|
# Get manifest works and parses JSON
|
||||||
|
p = get_plugin_by_name("test")
|
||||||
|
self.assertEqual(p.get_manifest()['author'], "Piero Toffanin")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue