def test_dossier_from_template(self, browser): toggle_feature(IDossierTemplateSettings, enabled=True) root = create(Builder('repository_root')) leaf_node = create(Builder('repository').within(root)) create(Builder("dossiertemplate").titled(DOSSIER_REQUIREDS['title'])) with freeze(FROZEN_NOW): browser.login().open(leaf_node) factoriesmenu.add(u'Dossier with template') token = browser.css( 'input[name="form.widgets.template"]').first.attrib.get( 'value') # noqa browser.fill({'form.widgets.template': token}).submit() browser.click_on('Save') dossier = browser.context persisted_values = get_persisted_values_for_obj(dossier) expected = self.get_z3c_form_defaults() # XXX: Don't know why this happens expected['public_trial_statement'] = None self.assertDictEqual(expected, persisted_values)
def test_z3c_add_form(self, browser): self.login(self.regular_user, browser) with freeze(FROZEN_NOW): # Mail is not addable via factories menu browser.open(self.dossier, view='++add++ftw.mail.mail') browser.fill({ u'form.widgets.message': (TestMailDefaults.SAMPLE_MAIL, 'msg.eml', 'message/rfc822')}).save() mail = browser.context # Ensure Bumblebee checksum got calculated correctly expected_checksum = sha256(self.SAMPLE_MAIL).hexdigest() checksum = IBumblebeeDocument(mail).get_checksum() self.assertEqual(expected_checksum, checksum) persisted_values = get_persisted_values_for_obj(mail) expected = self.get_z3c_form_defaults() expected['message'] = mail._message # XXX: Don't know why this happens expected['public_trial_statement'] = None self.assertDictEqual(expected, persisted_values)
def test_rest_api(self, browser): self.login(self.administrator, browser) payload = { u'@type': u'opengever.repository.repositoryfolder', u'title_de': REPOFOLDER_REQUIREDS['title_de'], u'title_fr': u'French Title', } with freeze(FROZEN_NOW): response = browser.open( self.empty_repofolder.absolute_url(), data=json.dumps(payload), method='POST', headers=self.api_headers) self.assertEqual(201, response.status_code) new_object_id = str(response.json['id']) folder = self.empty_repofolder.restrictedTraverse(new_object_id) persisted_values = get_persisted_values_for_obj(folder) expected = self.get_type_defaults() expected['addable_dossier_types'] = None expected['title_fr'] = u'French Title' self.assertDictEqual(expected, persisted_values)
def test_rest_api(self, browser): self.login(self.regular_user, browser) payload = { u'@type': u'opengever.document.document', u'title': DOCUMENT_REQUIREDS['title'], u'file': { u'data': TestDocumentDefaults.SAMPLE_FILE.encode('base64'), u'encoding': u'base64', u'filename': u'b\xe4rengraben.txt', u'content-type': u'text/plain'}, } with freeze(FROZEN_NOW): response = browser.open( self.dossier.absolute_url(), data=json.dumps(payload), method='POST', headers=self.api_headers) self.assertEqual(201, response.status_code) new_object_id = str(response.json['id']) doc = self.dossier.restrictedTraverse(new_object_id) # Ensure Bumblebee checksum got calculated correctly expected_checksum = sha256(self.SAMPLE_FILE).hexdigest() checksum = IBumblebeeDocument(doc).get_checksum() self.assertEqual(expected_checksum, checksum) persisted_values = get_persisted_values_for_obj(doc) expected = self.get_type_defaults() expected['file'] = doc.file self.assertDictEqual(expected, persisted_values)
def test_z3c_add_form(self, browser): self.login(self.regular_user, browser) with freeze(FROZEN_NOW): with self.observe_children(self.dossier) as children: browser.open(self.dossier) factoriesmenu.add(u'Document') browser.fill({ u'Title': DOCUMENT_REQUIREDS['title'], u'File': ( TestDocumentDefaults.SAMPLE_FILE, 'b\xc3\xa4rengraben.txt', 'text/plain')}).save() doc, = children.get('added') # Ensure Bumblebee checksum got calculated correctly expected_checksum = sha256(self.SAMPLE_FILE).hexdigest() checksum = IBumblebeeDocument(doc).get_checksum() self.assertEqual(expected_checksum, checksum) persisted_values = get_persisted_values_for_obj(doc) expected = self.get_z3c_form_defaults() expected['file'] = doc.file # XXX: Don't know why this happens expected['public_trial_statement'] = None self.assertDictEqual(expected, persisted_values)
def test_document_from_dossiertemplate(self, browser): self.login(self.regular_user, browser) template = create(Builder("dossiertemplate") .titled(DOSSIER_REQUIREDS['title']) .within(self.templates)) create(Builder('document') .titled(DOCUMENT_REQUIREDS['title']) .within(template) .with_dummy_content()) with freeze(FROZEN_NOW): browser.open(self.leaf_repofolder) factoriesmenu.add(u'Dossier with template') token = browser.css( 'input[title="My title"]').first.attrib.get('value') # noqa browser.fill({'form.widgets.template': token}).submit() browser.click_on('Save') dossier = browser.context doc = dossier.objectValues()[0] persisted_values = get_persisted_values_for_obj(doc) expected = self.get_type_defaults() expected['digitally_available'] = True expected['file'] = doc.file self.assertDictEqual(expected, persisted_values)
def test_dossier_from_template(self, browser): self.login(self.regular_user, browser) create(Builder("dossiertemplate") .titled(DOSSIER_REQUIREDS['title'])) with freeze(FROZEN_NOW): browser.open(self.leaf_repofolder) factoriesmenu.add(u'Dossier with template') token = browser.css( 'input[title="My title"]').first.attrib.get('value') # noqa browser.fill({'form.widgets.template': token}).submit() browser.click_on('Save') dossier = browser.context persisted_values = get_persisted_values_for_obj(dossier) expected = self.get_z3c_form_defaults() # XXX: Don't know why this happens expected['public_trial_statement'] = None self.assertDictEqual(expected, persisted_values)
def test_rest_api(self, browser): self.login(self.regular_user, browser) payload = { u'@type': u'ftw.mail.mail', u'message': { u'data': TestMailDefaults.SAMPLE_MAIL.encode('base64'), u'encoding': u'base64', u'filename': u'msg.eml', u'content-type': u'message/rfc822'}, } with freeze(FROZEN_NOW): response = browser.open( self.dossier.absolute_url(), data=json.dumps(payload), method='POST', headers=self.api_headers) self.assertEqual(201, response.status_code) new_object_id = str(response.json['id']) mail = self.dossier.restrictedTraverse(new_object_id) # Ensure Bumblebee checksum got calculated correctly expected_checksum = sha256(self.SAMPLE_MAIL).hexdigest() checksum = IBumblebeeDocument(mail).get_checksum() self.assertEqual(expected_checksum, checksum) persisted_values = get_persisted_values_for_obj(mail) expected = self.get_type_defaults() expected['message'] = mail._message self.assertDictEqual(expected, persisted_values)
def test_subdossier_from_template(self, browser): toggle_feature(IDossierTemplateSettings, enabled=True) root = create(Builder('repository_root')) leaf_node = create(Builder('repository').within(root)) template = create(Builder("dossiertemplate").titled(u'Main template')) create( Builder("dossiertemplate").within(template).titled( DOSSIER_REQUIREDS['title'])) with freeze(FROZEN_NOW): browser.login().open(leaf_node) factoriesmenu.add(u'Dossier with template') token = browser.css( 'input[name="form.widgets.template"]').first.attrib.get( 'value') # noqa browser.fill({'form.widgets.template': token}).submit() browser.click_on('Save') subdossier = browser.context.listFolderContents()[0] persisted_values = get_persisted_values_for_obj(subdossier) expected = self.get_type_defaults() # Because the main-dossier is made through the ++add++-form and the # subdossier is created trough the object-creator with some attribute # inheritance, we get a mix of z3c_form_defaults and the type_defaults. # A subdossier has the type_defaults with addiional form_defaults expected.update(self.form_defaults) self.assertDictEqual(expected, persisted_values)
def test_document_from_dossiertemplate(self, browser): toggle_feature(IDossierTemplateSettings, enabled=True) root = create(Builder('repository_root')) leaf_node = create(Builder('repository').within(root)) template = create( Builder("dossiertemplate").titled(DOSSIER_REQUIREDS['title'])) create( Builder('document').titled(DOCUMENT_REQUIREDS['title']).within( template).with_dummy_content()) with freeze(FROZEN_NOW): browser.login().open(leaf_node) factoriesmenu.add(u'Dossier with template') token = browser.css( 'input[name="form.widgets.template"]').first.attrib.get( 'value') # noqa browser.fill({'form.widgets.template': token}).submit() browser.click_on('Save') doc = browser.context.listFolderContents()[0] persisted_values = get_persisted_values_for_obj(doc) expected = self.get_type_defaults() expected['digitally_available'] = True expected['file'] = doc.file self.assertDictEqual(expected, persisted_values)
def test_rest_api(self, browser): self.login(self.regular_user, browser) payload = { u'@type': u'opengever.dossier.businesscasedossier', u'title': DOSSIER_REQUIREDS['title'], u'responsible': DOSSIER_FORM_DEFAULTS['responsible'], } with freeze(FROZEN_NOW): response = browser.open( self.leaf_repofolder.absolute_url(), data=json.dumps(payload), method='POST', headers=self.api_headers) self.assertEqual(201, response.status_code) new_object_id = str(response.json['id']) dossier = self.leaf_repofolder.restrictedTraverse(new_object_id) persisted_values = get_persisted_values_for_obj(dossier) expected = self.get_type_defaults() expected['responsible'] = DOSSIER_FORM_DEFAULTS['responsible'] self.assertDictEqual(expected, persisted_values)
def test_subdossier_from_template(self, browser): toggle_feature(IDossierTemplateSettings, enabled=True) root = create(Builder('repository_root')) leaf_node = create(Builder('repository').within(root)) template = create(Builder("dossiertemplate") .titled(u'Main template')) subdossier_template = create(Builder("dossiertemplate") .within(template) .titled(DOSSIER_REQUIREDS['title'])) with freeze(FROZEN_NOW): browser.login().open(leaf_node) factoriesmenu.add(u'Dossier with template') token = browser.css( 'input[name="form.widgets.template"]').first.attrib.get('value') browser.fill({'form.widgets.template': token}).submit() browser.click_on('Save') subdossier = browser.context.listFolderContents()[0] persisted_values = get_persisted_values_for_obj(subdossier) expected = self.get_type_defaults() # Because the main-dossier is made through the ++add++-form and the # subdossier is created trough the object-creator with some attribute # inheritance, we get a mix of z3c_form_defaults and the type_defaults. # A subdossier has the type_defaults with addiional form_defaults expected.update(self.form_defaults) self.assertDictEqual(expected, persisted_values)
def test_dossier_from_template(self, browser): toggle_feature(IDossierTemplateSettings, enabled=True) root = create(Builder('repository_root')) leaf_node = create(Builder('repository').within(root)) create(Builder("dossiertemplate") .titled(DOSSIER_REQUIREDS['title'])) with freeze(FROZEN_NOW): browser.login().open(leaf_node) factoriesmenu.add(u'Dossier with template') token = browser.css( 'input[name="form.widgets.template"]').first.attrib.get('value') browser.fill({'form.widgets.template': token}).submit() browser.click_on('Save') dossier = browser.context persisted_values = get_persisted_values_for_obj(dossier) expected = self.get_z3c_form_defaults() # XXX: Don't know why this happens expected['public_trial_statement'] = None self.assertDictEqual(expected, persisted_values)
def test_document_from_dossiertemplate(self, browser): toggle_feature(IDossierTemplateSettings, enabled=True) root = create(Builder('repository_root')) leaf_node = create(Builder('repository').within(root)) template = create(Builder("dossiertemplate") .titled(DOSSIER_REQUIREDS['title'])) create(Builder('document') .titled(DOCUMENT_REQUIREDS['title']) .within(template) .with_dummy_content()) with freeze(FROZEN_NOW): browser.login().open(leaf_node) factoriesmenu.add(u'Dossier with template') token = browser.css( 'input[name="form.widgets.template"]').first.attrib.get('value') browser.fill({'form.widgets.template': token}).submit() browser.click_on('Save') doc = browser.context.listFolderContents()[0] persisted_values = get_persisted_values_for_obj(doc) expected = self.get_type_defaults() expected['digitally_available'] = True expected['file'] = doc.file self.assertDictEqual(expected, persisted_values)
def test_create_content_in_container(self): with freeze(FROZEN_NOW): mail = createContentInContainer(self.portal, 'ftw.mail.mail', message=self.sample_msg) persisted_values = get_persisted_values_for_obj(mail) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_z3c_add_form(self, browser): with freeze(FROZEN_NOW): browser.login().open() factoriesmenu.add(u'RepositoryRoot') browser.fill({u'Title': REPOROOT_REQUIREDS['title_de']}).save() reporoot = browser.context persisted_values = get_persisted_values_for_obj(reporoot) expected = self.get_z3c_form_defaults() self.assertDictEqual(expected, persisted_values)
def test_create_content_in_container(self): with freeze(FROZEN_NOW): mail = createContentInContainer( self.portal, 'ftw.mail.mail', message=self.sample_msg) persisted_values = get_persisted_values_for_obj(mail) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_invoke_factory(self): with freeze(FROZEN_NOW): new_id = self.portal.invokeFactory('ftw.mail.mail', 'mail', message=self.sample_msg) mail = self.portal[new_id] persisted_values = get_persisted_values_for_obj(mail) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_create_content_in_container(self): with freeze(FROZEN_NOW): dossier = createContentInContainer( self.portal, 'opengever.dossier.businesscasedossier', title=DOSSIER_REQUIREDS['title'], ) persisted_values = get_persisted_values_for_obj(dossier) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_create_content_in_container(self): with freeze(FROZEN_NOW): reporoot = createContentInContainer( self.portal, 'opengever.repository.repositoryroot', title_de=REPOROOT_REQUIREDS['title_de'], ) persisted_values = get_persisted_values_for_obj(reporoot) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_create_content_in_container(self): with freeze(FROZEN_NOW): doc = createContentInContainer( self.portal, 'opengever.document.document', title=DOCUMENT_REQUIREDS['title'], ) persisted_values = get_persisted_values_for_obj(doc) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_invoke_factory(self): with freeze(FROZEN_NOW): new_id = self.portal.invokeFactory( 'ftw.mail.mail', 'mail', message=self.sample_msg) mail = self.portal[new_id] persisted_values = get_persisted_values_for_obj(mail) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_create_content_in_container(self): with freeze(FROZEN_NOW): contact = createContentInContainer( self.contactfolder, 'opengever.contact.contact', firstname=CONTACT_REQUIREDS['firstname'], lastname=CONTACT_REQUIREDS['lastname'], ) persisted_values = get_persisted_values_for_obj(contact) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_z3c_add_form(self, browser): with freeze(FROZEN_NOW): browser.login().open(self.contactfolder) factoriesmenu.add(u'Contact') browser.fill({ u'Firstname': CONTACT_REQUIREDS['firstname'], u'Lastname': CONTACT_REQUIREDS['lastname']}).save() contact = browser.context persisted_values = get_persisted_values_for_obj(contact) expected = self.get_z3c_form_defaults() self.assertDictEqual(expected, persisted_values)
def test_invoke_factory(self): with freeze(FROZEN_NOW): new_id = self.portal.invokeFactory( 'opengever.document.document', 'document-1', title=DOCUMENT_REQUIREDS['title'], ) doc = self.portal[new_id] persisted_values = get_persisted_values_for_obj(doc) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_private_folder_defaults(self): self.login(self.regular_user) # This will trigger member folder creation by MembershipTool with freeze(FROZEN_NOW): create_members_folder(self.private_root) private_folder = self.portal.private[api.user.get_current().id] persisted_values = get_persisted_values_for_obj(private_folder) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_invoke_factory(self): with freeze(FROZEN_NOW): new_id = self.portal.invokeFactory( 'opengever.dossier.businesscasedossier', 'dossier-1', title=DOSSIER_REQUIREDS['title'], ) dossier = self.portal[new_id] persisted_values = get_persisted_values_for_obj(dossier) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_invoke_factory(self): with freeze(FROZEN_NOW): new_id = self.portal.invokeFactory( 'opengever.repository.repositoryroot', 'reporoot', title_de=REPOROOT_REQUIREDS['title_de'], ) reporoot = self.portal[new_id] persisted_values = get_persisted_values_for_obj(reporoot) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_create_content_in_container(self): self.login(self.meeting_user) with freeze(FROZEN_NOW): proposal = createContentInContainer( self.dossier, 'opengever.meeting.proposal', issuer=PROPOSAL_REQUIREDS['issuer'], ) persisted_values = get_persisted_values_for_obj(proposal) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_z3c_add_form(self, browser): with freeze(FROZEN_NOW): browser.login().open() factoriesmenu.add(u'Business Case Dossier') browser.fill({u'Title': DOSSIER_REQUIREDS['title']}).save() dossier = browser.context persisted_values = get_persisted_values_for_obj(dossier) expected = self.get_z3c_form_defaults() # XXX: Don't know why this happens expected['public_trial_statement'] = None self.assertDictEqual(expected, persisted_values)
def test_create_content_in_container(self): self.login(self.manager) with freeze(FROZEN_NOW): proposal = createContentInContainer( self.committee, 'opengever.meeting.submittedproposal', issuer=SUBMITTED_PROPOSAL_REQUIREDS['issuer'], ) persisted_values = get_persisted_values_for_obj(proposal) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_z3c_add_form(self, browser): with freeze(FROZEN_NOW): browser.login().open() factoriesmenu.add(u'Task') browser.fill({ u'Title': TASK_REQUIREDS['title'], u'Responsible': TASK_REQUIREDS['responsible'], u'Task Type': TASK_REQUIREDS['task_type']}).save() task = self.portal['task-1'] persisted_values = get_persisted_values_for_obj(task) expected = self.get_z3c_form_defaults() self.assertDictEqual(expected, persisted_values)
def test_invoke_factory(self): with freeze(FROZEN_NOW): new_id = self.contactfolder.invokeFactory( 'opengever.contact.contact', 'john-doe', firstname=CONTACT_REQUIREDS['firstname'], lastname=CONTACT_REQUIREDS['lastname'], ) contact = self.contactfolder[new_id] persisted_values = get_persisted_values_for_obj(contact) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_invoke_factory(self): self.login(self.regular_user) with freeze(FROZEN_NOW): new_id = self.leaf_repofolder.invokeFactory( 'opengever.dossier.businesscasedossier', 'dossier-999', title=DOSSIER_REQUIREDS['title'], ) dossier = self.leaf_repofolder[new_id] persisted_values = get_persisted_values_for_obj(dossier) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_z3c_add_form(self, browser): with freeze(FROZEN_NOW): browser.login().open() factoriesmenu.add(u'RepositoryFolder') browser.fill({u'Title': REPOFOLDER_REQUIREDS['title_de']}).save() repofolder = browser.context persisted_values = get_persisted_values_for_obj(repofolder) expected = self.get_z3c_form_defaults() # XXX: Don't know why this happens expected['public_trial_statement'] = None expected['description'] = None self.assertDictEqual(expected, persisted_values)
def test_create_content_in_container(self): self.login(self.meeting_user) with freeze(FROZEN_NOW): proposal = createContentInContainer( self.dossier, 'opengever.meeting.proposal', issuer=PROPOSAL_REQUIREDS['issuer'], committee_oguid=PROPOSAL_REQUIREDS['committee_oguid'], ) persisted_values = get_persisted_values_for_obj(proposal) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_invoke_factory(self): self.login(self.manager) with freeze(FROZEN_NOW): new_id = self.committee.invokeFactory( 'opengever.meeting.submittedproposal', 'submittedproposal-999', issuer=SUBMITTED_PROPOSAL_REQUIREDS['issuer'], ) proposal = self.committee[new_id] persisted_values = get_persisted_values_for_obj(proposal) expected = self.get_type_defaults() self.assertDictEqual(expected, persisted_values)
def test_create_content_in_container(self): with freeze(FROZEN_NOW): repofolder = createContentInContainer( self.portal, 'opengever.repository.repositoryfolder', title_de=REPOFOLDER_REQUIREDS['title_de'], ) persisted_values = get_persisted_values_for_obj(repofolder) expected = self.get_type_defaults() # XXX: Don't know why this happens expected['addable_dossier_types'] = None self.assertDictEqual(expected, persisted_values)