def afterSetUp(self): super(OutdatedToolsTests, self).afterSetUp() self.loginAsPortalOwner() sector = createSector(self.portal) sector.contact_name = u'Sectör NL' sector.contact_email = u'*****@*****.**' survey = addSurvey(sector, BASIC_SURVEY) nl = sector.aq_parent # User invalid emails to skip an event handler nl.invokeFactory( 'euphorie.countrymanager', 'nl-cm-1', title=u'Country Mänager 1', contact_email='invalid_email1', ) nl.invokeFactory( 'euphorie.countrymanager', 'nl-cm-2', title=u'Country Mänager 2', contact_email='invalid_email2', ) outdated_client_survey = publish.CopyToClient(survey) # Index the object with an older modified date outdated_client_survey.reindexObject() outdated_client_survey.setModificationDate('2013') outdated_client_survey.reindexObject(idxs=['modified']) sector_de = createSector(self.portal, id='sector_de', country='de') survey_de = addSurvey(sector_de, BASIC_SURVEY) client_survey_de = publish.CopyToClient(survey_de) self.mail_fixture = MockMailFixture() self.portal.email_from_address = "*****@*****.**" self.portal.email_from_name = "Euphorie website"
def afterSetUp(self): super(OutdatedToolsTests, self).afterSetUp() self.loginAsPortalOwner() sector = createSector(self.portal) sector.contact_name = "Sectör NL" sector.contact_email = "*****@*****.**" survey = addSurvey(sector, BASIC_SURVEY) nl = sector.aq_parent # User invalid emails to skip an event handler nl.invokeFactory( "euphorie.countrymanager", "nl-cm-1", title="Country Mänager 1", contact_email="invalid_email1", ) nl.invokeFactory( "euphorie.countrymanager", "nl-cm-2", title="Country Mänager 2", contact_email="invalid_email2", ) outdated_client_survey = publish.CopyToClient(survey) # Index the object with an older modified date outdated_client_survey.reindexObject() outdated_client_survey.setModificationDate("2013") outdated_client_survey.reindexObject(idxs=["modified"]) sector_de = createSector(self.portal, id="sector_de", country="de") survey_de = addSurvey(sector_de, BASIC_SURVEY) publish.CopyToClient(survey_de) self.mail_fixture = MockMailFixture() self.portal.email_from_address = "*****@*****.**" self.portal.email_from_name = "Euphorie website"
def testImageFromOtherSectorAccount(self): # http://code.simplon.biz/tracker/euphorie/ticket/143 import re from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey from Products.Five.testbrowser import Browser sector = createSector(self.portal, login="******") self.loginAsPortalOwner() survey = addSurvey(sector) createSector(self.portal, id="sector2", login="******", password="******") self.logout() browser = Browser() browser.open("%s/@@login" % self.portal.absolute_url()) browser.getControl(name="__ac_name").value = "sector2" browser.getControl(name="__ac_password").value = "sector2" browser.getForm(id="loginForm").submit() risk = survey["1"]["2"] browser.open(risk.absolute_url()) match = re.search( r'<div class="introduction">\s*<img[^>]+src="([^"]+)', browser.contents) self.assertTrue(match) image_url = match.group(1) browser.open(image_url) self.assertEqual(browser.isHtml, False) self.assertEqual(browser.headers.maintype, "image")
def testImageFromOtherSectorAccount(self): # http://code.simplon.biz/tracker/euphorie/ticket/143 import re from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey from Products.Five.testbrowser import Browser sector = createSector(self.portal, login="******") self.loginAsPortalOwner() survey = addSurvey(sector) createSector(self.portal, id="sector2", login="******", password="******") self.logout() browser = Browser() browser.open("%s/@@login" % self.portal.absolute_url()) browser.getControl(name="__ac_name").value = "sector2" browser.getControl(name="__ac_password").value = "sector2" browser.getForm(id="loginForm").submit() risk = survey["1"]["2"] browser.open(risk.absolute_url()) match = re.search(r'<div class="introduction">\s*<img[^>]+src="([^"]+)', browser.contents) self.assertTrue(match) image_url = match.group(1) browser.open(image_url) self.assertEqual(browser.isHtml, False) self.assertEqual(browser.headers.maintype, "image")
def testUnpublishedSurvey(self): from euphorie.content.tests.utils import EMPTY_SURVEY from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey sector = createSector(self.portal) survey = addSurvey(sector, EMPTY_SURVEY) self.handleSurveyUnpublish(survey, None)
def create(self): from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey from euphorie.content.tests.utils import EMPTY_SURVEY sector = createSector(self.portal) return addSurvey(sector, EMPTY_SURVEY)
def testDeleteWithoutPublishedSurvey(self): sector = createSector(self.portal) addSurvey(sector, EMPTY_SURVEY) surveygroup = sector["test-survey"] self.assertEqual(surveygroup.published, None) deleteaction = getMultiAdapter((sector, sector.REQUEST), name="delete") self.assertEqual(deleteaction.verify(sector.aq_parent, sector), True)
def testSingleUnpublishedSurvey(self): sector = createSector(self.portal) survey = addSurvey(sector, EMPTY_SURVEY) self.assertEqual( self.getSurveys(survey), [{ "url": "http://nohost/plone/sectors/nl/sector/test-survey", "published": False, "id": "test-survey", "title": "Test survey", "surveys": [{ "id": "standard-version", "title": "Standard version", "current": True, "url": "http://nohost/plone/sectors/nl/sector/" "test-survey/standard-version", "versions": [], "modified": False, "published": False, "publication_date": None, }], }], )
def testSingleUnpublishedSurvey(self): from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey from euphorie.content.tests.utils import EMPTY_SURVEY self.loginAsPortalOwner() sector = createSector(self.portal) survey = addSurvey(sector, EMPTY_SURVEY) self.assertEqual(self.getSurveys(survey), [{ "url": "http://nohost/plone/sectors/nl/sector/test-survey", "published": False, "id": "test-survey", "title": u"Test survey", "surveys": [{ "id": "standard-version", "title": u"Standard version", "current": True, "url": "http://nohost/plone/sectors/nl/sector/" "test-survey/standard-version", "versions": [], "modified": False, "published": False }], }])
def testPublishedSurvey(self): sector = createSector(self.portal) survey = addSurvey(sector, EMPTY_SURVEY) surveygroup = sector["test-survey"] surveygroup.published = "standard-version" result = self.getSurveys(survey) self.assertEqual(result[0]["published"], True) self.assertEqual(result[0]["surveys"][0]["published"], True)
def testTwoUnpublishedSurveysgroups(self): sector = createSector(self.portal) survey = addSurvey(sector, EMPTY_SURVEY) addSurvey(sector, EMPTY_SURVEY, "Test survey 2") result = self.getSurveys(survey) self.assertEqual(len(result), 2) self.assertEqual(result[0]["title"], "Test survey") self.assertEqual(result[1]["title"], "Test survey 2")
def testDuplicateLoginNotAllowed(self): # Test for http://code.simplon.biz/tracker/euphorie/ticket/152 createSector(self.portal, login="******") browser = self.get_browser(logged_in=True) browser.open("%s/sectors/nl/@@manage-users" % self.portal.absolute_url()) browser.getLink("Add new sector").click() browser.getControl(name="form.widgets.title").value = "New sector" browser.getControl(name="form.widgets.login").value = "sector" browser.getControl(name="form.widgets.password").value = "secret" browser.getControl( name="form.widgets.password.confirm").value = "secret" browser.getControl(name="form.widgets.contact_name").value = "John Doe" browser.getControl( name="form.widgets.contact_email").value = "*****@*****.**" browser.getControl(name="form.buttons.save").click() self.assertTrue("This login name is already taken" in browser.contents)
def testPasswordConfirmation(self): createSector(self.portal, login="******") browser = self.get_browser(logged_in=True) browser.open("%s/sectors/nl/@@manage-users" % self.portal.absolute_url()) browser.getLink("Add new sector").click() browser.getControl(name="form.widgets.title").value = "New sector" browser.getControl(name="form.widgets.login").value = "sector" browser.getControl(name="form.widgets.password").value = "S3cr3t!" browser.getControl( name="form.widgets.password.confirm").value = "anotherS3cr3t!" browser.getControl( name="form.widgets.contact_name").value = "Max Mustermann" browser.getControl( name="form.widgets.contact_email").value = "*****@*****.**" browser.getControl(name="form.buttons.save").click() self.assertIn("Password doesn't compare with confirmation value", browser.contents)
def testDeleteWithPublishedSurvey(self): sector = createSector(self.portal) survey = addSurvey(sector, EMPTY_SURVEY) surveygroup = sector["test-survey"] publishview = getMultiAdapter((survey, survey.REQUEST), name="publish") publishview.publish() self.assertEqual(surveygroup.published, "standard-version") deleteaction = getMultiAdapter((sector, sector.REQUEST), name="delete") self.assertEqual(deleteaction.verify(sector.aq_parent, sector), False)
def testDuplicateLoginNotAllowed(self): # Test for http://code.simplon.biz/tracker/euphorie/ticket/152 from euphorie.content.tests.utils import createSector createSector(self.portal, login="******") browser = self.adminBrowser() browser.open( "%s/sectors/nl/@@manage-users" % self.portal.absolute_url()) browser.getLink("Add new sector").click() browser.getControl(name="form.widgets.title").value = "New sector" browser.getControl(name="form.widgets.login").value = "sector" browser.getControl(name="form.widgets.password").value = "secret" browser.getControl( name="form.widgets.password.confirm").value = "secret" browser.getControl( name="form.widgets.contact_name").value = "John Doe" browser.getControl( name="form.widgets.contact_email").value = "*****@*****.**" browser.getControl(name="form.buttons.save").click() self.assertTrue("This login name is already taken" in browser.contents)
def test_render(self): self.loginAsPortalOwner() sector = createSector(self.portal) survey = addSurvey(sector, BASIC_SURVEY) browser = self.adminBrowser() browser.handleErrors = False with mock.patch("euphorie.content.library.get_library", return_value=self.library): browser.open(survey.absolute_url() + "/@@library") assert "Library Sector Title" in browser.contents assert "Library Survey Title" in browser.contents assert "Library Risk" in browser.contents
def testDeleteWithoutPublishedSurvey(self): from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey from euphorie.content.tests.utils import EMPTY_SURVEY self.loginAsPortalOwner() sector = createSector(self.portal) addSurvey(sector, EMPTY_SURVEY) surveygroup = sector["test-survey"] self.assertEqual(surveygroup.published, None) deleteaction = getMultiAdapter((sector, sector.REQUEST), name='delete') self.assertEqual(deleteaction.verify(sector.aq_parent, sector), True)
def testPasswordPolicy(self): createSector(self.portal, login="******") browser = self.get_browser(logged_in=True) browser.open("%s/sectors/nl/@@manage-users" % self.portal.absolute_url()) browser.getLink("Add new sector").click() browser.getControl(name="form.widgets.title").value = "New sector" browser.getControl(name="form.widgets.login").value = "sector" browser.getControl(name="form.widgets.password").value = "secret" browser.getControl( name="form.widgets.password.confirm").value = "secret" browser.getControl( name="form.widgets.contact_name").value = "Max Mustermann" browser.getControl( name="form.widgets.contact_email").value = "*****@*****.**" browser.getControl(name="form.buttons.save").click() self.assertTrue( "Your password must contain at least 5 characters, " "including at least one capital letter, one number and " "one special character (e.g. $, # or @)." in browser.contents)
def testPreviewGetsCorrectUrl(self): # Test for http://code.simplon.biz/tracker/tno-euphorie/ticket/95 from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey self.loginAsPortalOwner() sector = createSector(self.portal) survey = addSurvey(sector) view = survey.restrictedTraverse("@@preview") preview = view.publish() self.assertEqual(preview.id, "preview") self.assertEqual(preview.absolute_url(), "http://nohost/plone/client/nl/sector/preview")
def testPasswordPolicy(self): from euphorie.content.tests.utils import createSector createSector(self.portal, login="******") browser = self.adminBrowser() browser.open( "%s/sectors/nl/@@manage-users" % self.portal.absolute_url()) browser.getLink("Add new sector").click() browser.getControl(name="form.widgets.title").value = "New sector" browser.getControl(name="form.widgets.login").value = "sector" browser.getControl(name="form.widgets.password").value = "secret" browser.getControl( name="form.widgets.password.confirm").value = "secret" browser.getControl( name="form.widgets.contact_name").value = "Max Mustermann" browser.getControl( name="form.widgets.contact_email").value = "*****@*****.**" browser.getControl(name="form.buttons.save").click() self.assertTrue( u"Your password must contain at least 5 characters, " u"including at least one capital letter, one number and " u"one special character (e.g. $, # or @)." in browser.contents)
def test_text_description(self): from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey self.loginAsPortalOwner() sector = createSector(self.portal) survey = addSurvey(sector) risk = survey['1']['2'] risk.invokeFactory('euphorie.solution', '3') solution = risk['3'] solution.description = u'This is my description.' self.convert_solution_description_to_text(self.portal) self.assertEqual(solution.description, u'This is my description.')
def test_render(self): self.loginAsPortalOwner() sector = createSector(self.portal) survey = addSurvey(sector, BASIC_SURVEY) browser = self.adminBrowser() browser.handleErrors = False with mock.patch('euphorie.content.library.get_library', return_value=self.library): browser.open(survey.absolute_url() + '/@@library') assert 'Library Sector Title' in browser.contents assert 'Library Survey Title' in browser.contents assert 'Library Risk' in browser.contents
def testPublishedSurvey(self): from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey from euphorie.content.tests.utils import EMPTY_SURVEY self.loginAsPortalOwner() sector = createSector(self.portal) survey = addSurvey(sector, EMPTY_SURVEY) surveygroup = sector["test-survey"] surveygroup.published = "standard-version" result = self.getSurveys(survey) self.assertEqual(result[0]["published"], True) self.assertEqual(result[0]["surveys"][0]["published"], True)
def testTwoUnpublishedSurveysgroups(self): from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey from euphorie.content.tests.utils import EMPTY_SURVEY self.loginAsPortalOwner() sector = createSector(self.portal) survey = addSurvey(sector, EMPTY_SURVEY) addSurvey(sector, EMPTY_SURVEY, "Test survey 2") result = self.getSurveys(survey) self.assertEqual(len(result), 2) self.assertEqual(result[0]["title"], u"Test survey") self.assertEqual(result[1]["title"], u"Test survey 2")
def testPreviewGetsCorrectUrl(self): # Test for http://code.simplon.biz/tracker/tno-euphorie/ticket/95 from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey self.loginAsPortalOwner() sector = createSector(self.portal) survey = addSurvey(sector) view = survey.restrictedTraverse("@@preview") preview = view.publish() self.assertEqual(preview.id, "preview") self.assertEqual( preview.absolute_url(), "http://nohost/plone/client/nl/sector/preview")
def testSurveygroupTwoSurveys(self): sector = createSector(self.portal) survey = addSurvey(sector, EMPTY_SURVEY) surveygroup = sector["test-survey"] surveygroup.invokeFactory("euphorie.survey", "next-edition", title="Very latest") result = self.getSurveys(survey) self.assertEqual(len(result), 1) self.assertEqual(len(result[0]["surveys"]), 2) self.assertEqual(result[0]["surveys"][0]["current"], True) self.assertEqual(result[0]["surveys"][1]["current"], False) self.assertEqual(result[0]["surveys"][1]["title"], "Very latest")
def testDeleteWithPublishedSurvey(self): from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey from euphorie.content.tests.utils import EMPTY_SURVEY self.loginAsPortalOwner() sector = createSector(self.portal) survey = addSurvey(sector, EMPTY_SURVEY) surveygroup = sector["test-survey"] publishview = getMultiAdapter((survey, survey.REQUEST), name='publish') publishview.publish() self.assertEqual(surveygroup.published, "standard-version") deleteaction = getMultiAdapter((sector, sector.REQUEST), name='delete') self.assertEqual(deleteaction.verify(sector.aq_parent, sector), False)
def test_risk_with_interfaces_already_set(self): from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey from euphorie.content.risk import IKinneyEvaluation from euphorie.content.risk import IFrenchEvaluation self.loginAsPortalOwner() sector = createSector(self.portal) survey = addSurvey(sector) risk = survey["1"]["2"] self.assertTrue(IKinneyEvaluation.providedBy(risk)) self.assertTrue(not IFrenchEvaluation.providedBy(risk)) self.set_evaluation_method_interfaces(self.portal) self.assertTrue(IKinneyEvaluation.providedBy(risk)) self.assertTrue(not IFrenchEvaluation.providedBy(risk))
def test_render(self): self.loginAsPortalOwner() sector = createSector(self.portal) with api.env.adopt_user("admin"): survey = addSurvey(sector, BASIC_SURVEY) browser = self.get_browser(logged_in=True) browser.handleErrors = False with mock.patch( "euphorie.content.browser.library.get_library", return_value=self.library ): browser.open(survey.absolute_url() + "/@@library") assert "Library Sector Title" in browser.contents assert "Library Survey Title" in browser.contents assert "Library Risk" in browser.contents
def test_set_kinney_interface(self): from zope.interface import noLongerProvides from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey from euphorie.content.risk import IKinneyEvaluation from euphorie.content.risk import IFrenchEvaluation self.loginAsPortalOwner() sector = createSector(self.portal) survey = addSurvey(sector) risk = survey["1"]["2"] noLongerProvides(risk, IKinneyEvaluation) self.assertTrue(not IKinneyEvaluation.providedBy(risk)) self.set_evaluation_method_interfaces(self.portal) self.assertTrue(IKinneyEvaluation.providedBy(risk)) self.assertTrue(not IFrenchEvaluation.providedBy(risk))
def testSurveygroupTwoSurveys(self): from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey from euphorie.content.tests.utils import EMPTY_SURVEY self.loginAsPortalOwner() sector = createSector(self.portal) survey = addSurvey(sector, EMPTY_SURVEY) surveygroup = sector["test-survey"] surveygroup.invokeFactory("euphorie.survey", "next-edition", title=u"Very latest") result = self.getSurveys(survey) self.assertEqual(len(result), 1) self.assertEqual(len(result[0]["surveys"]), 2) self.assertEqual(result[0]["surveys"][0]["current"], True) self.assertEqual(result[0]["surveys"][1]["current"], False) self.assertEqual(result[0]["surveys"][1]["title"], u"Very latest")
def testLockoutPolicy(self): sector = createSector(self.portal) mbtool = api.portal.get_tool(TOOLNAME) member = mbtool.getUserObject(login=sector.login) auth = user_ifaces.IMembraneUserAuth(member, None) status = IStatusMessage(auth.context.REQUEST) auth.applyLockoutPolicy(0) self.assertEqual(len(status.show()), 0) self.assertFalse(sector.locked) auth.applyLockoutPolicy(2) self.assertEqual(len(status.show()), 1) self.assertEqual(auth.context._v_login_attempts, 1) self.assertFalse(sector.locked) auth.applyLockoutPolicy(2) self.assertEqual(len(status.show()), 1) self.assertEqual(auth.context._v_login_attempts, 2) self.assertTrue(sector.locked)
def testSingleUnpublishedSurvey(self): from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey from euphorie.content.tests.utils import EMPTY_SURVEY self.loginAsPortalOwner() sector = createSector(self.portal) survey = addSurvey(sector, EMPTY_SURVEY) self.assertEqual(self.getSurveys(survey), [{"url": "http://nohost/plone/sectors/nl/sector/test-survey", "published": False, "id": "test-survey", "title": u"Test survey", "surveys": [ {"id": "standard-version", "title": u"Standard version", "current": True, "url": "http://nohost/plone/sectors/nl/sector/" "test-survey/standard-version", "versions": [], "modified": False, "published": False}], }])
def create(self): sector = createSector(self.portal) return addSurvey(sector, EMPTY_SURVEY)
def createSurvey(self): from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey sector = createSector(self.portal, login='******') survey = addSurvey(sector) return survey
def createCountry(self): from Acquisition import aq_parent from euphorie.content.tests.utils import createSector sector = createSector(self.portal, login="******") return aq_parent(sector)
def createSurvey(self): from euphorie.content.tests.utils import createSector from euphorie.content.tests.utils import addSurvey sector = createSector(self.portal) survey = addSurvey(sector) return survey