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
of enabled/disabled plugins
"""
# Erase cache
global plugins
plugins = None
db_plugins = Plugin.objects.all()
fs_plugins = get_plugins()

Wyświetl plik

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