pull/636/head
Piero Toffanin 2019-03-20 14:48:36 -04:00
rodzic df72f118d2
commit cde9fddb8d
2 zmienionych plików z 64 dodań i 0 usunięć

Wyświetl plik

@ -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()

Wyświetl plik

@ -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")