def test_submit_duplicate_blob_not_found(self): # https://dimagi-dev.atlassian.net/browse/ICDS-376 file, res = self._submit('form_with_case.xml') self.assertEqual(201, res.status_code) self.assertIn(" √ ".encode('utf-8'), res.content) form = FormAccessors( self.domain.name).get_form('ad38211be256653bceac8e2156475666') form_attachment_meta = form.get_attachment_meta('form.xml') blobdb = get_blob_db() with patch.object(blobdb.metadb, 'delete'): blobdb.delete(form_attachment_meta.key) file, res = self._submit('form_with_case.xml') self.assertEqual(res.status_code, 201) form = FormAccessors( self.domain.name).get_form('ad38211be256653bceac8e2156475666') deprecated_form = FormAccessors(self.domain.name).get_form( form.deprecated_form_id) self.assertTrue(deprecated_form.is_deprecated) case = CaseAccessors( self.domain.name).get_case('ad38211be256653bceac8e2156475667') transactions = case.transactions self.assertEqual(2, len(transactions)) self.assertTrue(transactions[0].is_form_transaction) self.assertTrue(transactions[1].is_case_rebuild)
def create_form_with_missing_xml(domain_name): form = submit_form_locally(TEST_FORM, domain_name).xform form = FormAccessors(domain_name).get_form(form.form_id) blobs = get_blob_db() with mock.patch.object(blobs.metadb, "delete"): if isinstance(form, XFormInstance): # couch form.delete_attachment("form.xml") assert form.get_xml() is None, form.get_xml() else: # sql blobs.delete(form.get_attachment_meta("form.xml").key) try: form.get_xml() assert False, "expected BlobNotFound exception" except BlobNotFound: pass return form