source: products/quintagroup.plonecaptchas/branches/plone4/quintagroup/plonecaptchas/tests/testInstallation.py @ 3154

Last change on this file since 3154 was 3154, checked in by vmaksymiv, 13 years ago

pyfakes fixes

File size: 3.6 KB
Line 
1import unittest
2from quintagroup.plonecaptchas.tests.base import TestCase, LAYERS
3
4from Products.CMFCore.utils import getToolByName
5
6from zope.interface import alsoProvides
7from zope.component import getSiteManager
8from zope.component import queryMultiAdapter
9from plone.browserlayer.interfaces import ILocalBrowserLayerType
10
11from quintagroup.plonecaptchas.interfaces import IQGPloneCaptchas
12from quintagroup.plonecaptchas.browser.register import CaptchaRegistrationForm
13from quintagroup.plonecaptchas.config import PRODUCT_NAME
14
15
16class TestInstallation(TestCase):
17
18    def afterSetUp(self):
19        self.loginAsPortalOwner()
20        self.skins = getToolByName(self.portal, 'portal_skins', None)
21
22    def testSkinInstall(self):
23        for skin in self.skins.getSkinSelections():
24            path = self.skins.getSkinPath(skin)
25            path = map(str.strip, path.split(','))
26            for layer in LAYERS:
27                self.assert_(layer.split('/')[0] in self.skins.objectIds(),
28                    '%s directory view not found in portal_skins after installation' % layer)
29                self.assert_(layer in path,
30                    '%s layer not found in %s' % (PRODUCT_NAME, skin))
31
32    def testBrowserLayerRegistration(self):
33        # Test if IQGPloneCaptchas browser layer registered on installation
34        site = getSiteManager(self.portal)
35        registeredLayers = [r.name for r in site.registeredUtilities()
36                            if r.provided == ILocalBrowserLayerType]
37        self.assertEqual("quintagroup.plonecaptchas" in registeredLayers, True)
38
39    def testRegisterFormOverriden(self):
40        # Mark request with IQGPloneCaptchas browser layer interface
41        alsoProvides(self.portal.REQUEST, IQGPloneCaptchas)
42        register = queryMultiAdapter((self.portal, self.portal.REQUEST), name="register")
43        self.assertEqual(isinstance(register, CaptchaRegistrationForm), True)
44
45
46class TestUninstallation(TestCase):
47
48    def afterSetUp(self):
49        self.loginAsPortalOwner()
50        self.skins = getToolByName(self.portal, 'portal_skins', None)
51        self.qi = getToolByName(self.portal, 'portal_quickinstaller', None)
52        self.qi.uninstallProducts([PRODUCT_NAME])
53
54    def testProductUninstalled(self):
55        self.assertNotEqual(self.qi.isProductInstalled(PRODUCT_NAME), True)
56
57    def testSkinUninstall(self):
58        for skin in self.skins.getSkinSelections():
59            path = self.skins.getSkinPath(skin)
60            path = map(str.strip, path.split(','))
61            for layer in LAYERS:
62                self.assertTrue(not layer.split('/')[0] in self.skins.objectIds(),
63                    '%s directory view found in portal_skins after uninstallation' % layer)
64                self.assert_(not layer in path,
65                    '%s layer found in %s skin after uninstallation' % (layer, skin))
66
67    def testBrowserLayerUnregistration(self):
68        # Test if IQGPloneCaptchas browser layer registered on installation
69        site = getSiteManager(self.portal)
70        registeredLayers = [r.name for r in site.registeredUtilities()
71                            if r.provided == ILocalBrowserLayerType]
72        self.assertNotEqual("quintagroup.plonecaptchas" in registeredLayers, True)
73
74    def testRegisterFormOverriden(self):
75        # Mark request with IQGPloneCaptchas browser layer interface
76        register = queryMultiAdapter((self.portal, self.portal.REQUEST), name="register")
77        self.assertNotEqual(isinstance(register, CaptchaRegistrationForm), True)
78
79
80def test_suite():
81    suite = unittest.TestSuite()
82    suite.addTest(unittest.makeSuite(TestInstallation))
83    suite.addTest(unittest.makeSuite(TestUninstallation))
84    return suite
Note: See TracBrowser for help on using the repository browser.