Changeset 2100 in products for quintagroup.pfg.captcha


Ignore:
Timestamp:
Apr 9, 2010 1:37:45 PM (14 years ago)
Author:
mylan
Message:

#174: added tests for CaptchaValidator?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.pfg.captcha/trunk/quintagroup/pfg/captcha/tests.py

    r2099 r2100  
    1111from Products.Archetypes.atapi import StringField 
    1212from Products.Archetypes.Registry import availableWidgets 
     13from Products.validation import validation 
    1314 
    1415from quintagroup.pfg.captcha import CaptchaField 
     
    2021_marker = object() 
    2122 
    22 PRODUCTS = [ 
     23PACKAGES = [ 
    2324    'quintagroup.captcha.core', 
    2425    'quintagroup.pfg.captcha', 
    2526] 
    26 PROFILES = [p+':default' for p in PRODUCTS] 
     27PROFILES = [p+':default' for p in PACKAGES] 
    2728 
    2829@onsetup 
     
    132133        macro = self.portal.restrictedTraverse(CAPTCHA_MACRO) 
    133134        self.assertNotEqual(macro, None) 
    134      
     135 
     136 
     137class TestCaptchaValidator(ptc.PloneTestCase): 
     138 
     139    def getValidator(self): 
     140        return validation.validatorFor('isCaptchaCorrect')         
     141 
     142    def testRegistration(self): 
     143        self.assertEqual(self.getValidator().__class__, CaptchaValidator) 
     144 
     145    def patchCoreValidator(self, status, error=""): 
     146        # Patch quintagroup.catpcha.core' captcha_validator 
     147        class MockState: 
     148            def __init__(self, status, error=""): 
     149                self.status = status 
     150                self.errors = {'key':[error,]} 
     151 
     152        patch_validator = lambda : MockState(status, error) 
     153        self.portal.captcha_validator = patch_validator 
     154 
     155    def testValidationSuccess(self): 
     156        # PFG validator must call patched quintagroup.captcha.core' 
     157        # captcha_validator and successfully validate the data. 
     158        validator = self.getValidator() 
     159        self.patchCoreValidator("success") 
     160        result = validator('test', instance=self.portal) 
     161        self.assertEqual(result, 1) 
     162         
     163    def testValidationFailure(self): 
     164        # PFG validator must call patched quintagroup.captcha.core' 
     165        # captcha_validator and return error. 
     166        validator = self.getValidator() 
     167        self.patchCoreValidator("failure", "Wrong value") 
     168        result = validator('test', instance=self.portal) 
     169        self.assertEqual(result, "Wrong value") 
     170 
    135171 
    136172def test_suite(): 
     
    139175    suite.addTest(unittest.makeSuite(TestCaptchaField)) 
    140176    suite.addTest(unittest.makeSuite(TestCaptchaWidget)) 
     177    suite.addTest(unittest.makeSuite(TestCaptchaValidator)) 
    141178    return suite 
Note: See TracChangeset for help on using the changeset viewer.