def test_atvirusfile(self):
        # Test if a virus-infected file gets caught by the validator
        portal = self.layer['portal']
        browser = base.get_browser(self.layer['app'])
        browser.open(portal.absolute_url()+'/virus-folder')
        browser.getLink(url='createObject?type_name=File').click()
        control = browser.getControl(name='file_file')
        control.filename = 'virus.txt'
        control.value = StringIO(EICAR)
        browser.getControl('Save').click()

        self.failIf('Eicar-Test-Signature FOUND' not in browser.contents)

        # And let's see if a clean file passes...
        control = browser.getControl(name='file_file')
        control.filename = 'nonvirus.txt'
        control.value = StringIO('Not a virus')
        browser.getControl('Save').click()
        self.assertTrue('Changes saved' in browser.contents)
    def test_atvirusimage(self):
        # Test if a virus-infected image gets caught by the validator
        image_data = getFileData('image.png')
        portal = self.layer['portal']
        browser = base.get_browser(self.layer['app'])
        browser.open(portal.absolute_url()+'/virus-folder')
        browser.getLink(url='createObject?type_name=Image').click()
        control = browser.getControl(name='image_file')
        control.filename = 'virus.png'
        control.value = StringIO(image_data + EICAR)
        browser.getControl('Save').click()

        self.assertFalse('Changes saved' in browser.contents)
        self.assertTrue('Eicar-Test-Signature FOUND' in browser.contents)

        # And let's see if a clean file passes...
        control = browser.getControl(name='image_file')
        control.filename = 'nonvirus.png'
        control.value = StringIO(image_data)
        browser.getControl('Save').click()
        self.assertTrue('Changes saved' in browser.contents)