source: products/quintagroup.plonecaptchas/trunk/quintagroup/plonecaptchas/tests/testInstallation.py

Last change on this file was 3609, checked in by vmaksymiv, 12 years ago

PPP fixes

File size: 3.9 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 '
29                             'after installation' % layer)
30                self.assert_(layer in path,
31                             '%s layer not found in %s' % (PRODUCT_NAME, skin))
32
33    def testBrowserLayerRegistration(self):
34        # Test if IQGPloneCaptchas browser layer registered on installation
35        site = getSiteManager(self.portal)
36        registeredLayers = [r.name for r in site.registeredUtilities()
37                            if r.provided == ILocalBrowserLayerType]
38        self.assertEqual("quintagroup.plonecaptchas" in registeredLayers, True)
39
40    def testRegisterFormOverriden(self):
41        # Mark request with IQGPloneCaptchas browser layer interface
42        alsoProvides(self.portal.REQUEST, IQGPloneCaptchas)
43        register = queryMultiAdapter((self.portal, self.portal.REQUEST),
44                                     name="register")
45        self.assertEqual(isinstance(register, CaptchaRegistrationForm), True)
46
47
48class TestUninstallation(TestCase):
49
50    def afterSetUp(self):
51        self.loginAsPortalOwner()
52        self.skins = getToolByName(self.portal, 'portal_skins', None)
53        self.qi = getToolByName(self.portal, 'portal_quickinstaller', None)
54        self.qi.uninstallProducts([PRODUCT_NAME])
55
56    def testProductUninstalled(self):
57        self.assertNotEqual(self.qi.isProductInstalled(PRODUCT_NAME), True)
58
59    def testSkinUninstall(self):
60        for skin in self.skins.getSkinSelections():
61            path = self.skins.getSkinPath(skin)
62            path = map(str.strip, path.split(','))
63            for layer in LAYERS:
64                self.assertTrue(
65                    not layer.split('/')[0] in self.skins.objectIds(),
66                    '%s directory view found in portal_skins '
67                    'after uninstallation' % layer)
68                self.assert_(not layer in path, '%s layer found in %s skin '
69                             'after uninstallation' % (layer, skin))
70
71    def testBrowserLayerUnregistration(self):
72        # Test if IQGPloneCaptchas browser layer registered on installation
73        site = getSiteManager(self.portal)
74        registeredLayers = [r.name for r in site.registeredUtilities()
75                            if r.provided == ILocalBrowserLayerType]
76        self.assertNotEqual("quintagroup.plonecaptchas" in registeredLayers,
77                            True)
78
79    def testRegisterFormOverriden(self):
80        # Mark request with IQGPloneCaptchas browser layer interface
81        register = queryMultiAdapter((self.portal, self.portal.REQUEST),
82                                     name="register")
83        self.assertNotEqual(isinstance(register, CaptchaRegistrationForm),
84                            True)
85
86
87def test_suite():
88    suite = unittest.TestSuite()
89    suite.addTest(unittest.makeSuite(TestInstallation))
90    suite.addTest(unittest.makeSuite(TestUninstallation))
91    return suite
Note: See TracBrowser for help on using the repository browser.