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
|
||||
of enabled/disabled plugins
|
||||
"""
|
||||
|
||||
# Erase cache
|
||||
global plugins
|
||||
plugins = None
|
||||
|
||||
db_plugins = Plugin.objects.all()
|
||||
fs_plugins = get_plugins()
|
||||
|
||||
|
|
|
@ -1,13 +1,16 @@
|
|||
import os
|
||||
import shutil
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.test import Client
|
||||
from rest_framework import status
|
||||
|
||||
from app.models import Plugin
|
||||
from app.models import Project
|
||||
from app.models import Task
|
||||
from app.plugins import UserDataStore
|
||||
from app.plugins import get_plugin_by_name
|
||||
from app.plugins import sync_plugin_db
|
||||
from app.plugins.data_store import InvalidDataStoreValue
|
||||
from .classes import BootTestCase
|
||||
from app.plugins.grass_engine import grass, GrassEngineException
|
||||
|
@ -185,3 +188,59 @@ class TestPlugins(BootTestCase):
|
|||
# Invalid types
|
||||
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