예제 #1
0
    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)
예제 #2
0
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