Beispiel #1
0
    def _make_submission_w_attachment(self, path, attachment_path):
        with open(path, encoding='utf-8') as f:
            data = {'xml_submission_file': f}
            if attachment_path is not None:
                if isinstance(attachment_path, list):
                    for c in range(len(attachment_path)):
                        data['media_file_{}'.format(c)] = open(
                            attachment_path[c], 'rb')
                else:
                    data['media_file'] = open(
                        attachment_path, 'rb')

            url = '/%s/submission' % self.user.username
            auth = DigestAuth('bob', 'bob')
            self.factory = APIRequestFactory()
            request = self.factory.post(url, data)
            request.user = authenticate(username='******',
                                        password='******')
            self.response = submission(request,
                                       username=self.user.username)

            if auth and self.response.status_code == 401:
                request.META.update(auth(request.META, self.response))
                self.response = submission(request,
                                           username=self.user.username)
Beispiel #2
0
    def _make_submission(self,
                         path,
                         username=None,
                         add_uuid=False,
                         forced_submission_time=None,
                         auth=None,
                         client=None):
        # store temporary file with dynamic uuid

        self.factory = APIRequestFactory()
        if auth is None:
            auth = DigestAuth('bob', 'bob')

        tmp_file = None

        if add_uuid:
            tmp_file = NamedTemporaryFile(delete=False)
            split_xml = None

            with open(path) as _file:
                split_xml = re.split(r'(<transport>)', _file.read())

            split_xml[1:1] = [
                '<formhub><uuid>%s</uuid></formhub>' % self.xform.uuid
            ]
            tmp_file.write(''.join(split_xml))
            path = tmp_file.name
            tmp_file.close()

        with open(path) as f:
            post_data = {'xml_submission_file': f}

            if username is None:
                username = self.user.username

            url_prefix = '%s/' % username if username else ''
            url = '/%ssubmission' % url_prefix

            request = self.factory.post(url, post_data)
            request.user = authenticate(username=auth.username,
                                        password=auth.password)

            self.response = submission(request, username=username)

            if auth and self.response.status_code == 401:
                request.META.update(auth(request.META, self.response))
                self.response = submission(request, username=username)

        if forced_submission_time:
            instance = Instance.objects.order_by('-pk').all()[0]
            instance.date_created = forced_submission_time
            instance.json = instance.get_full_dict()
            instance.save()
            instance.parsed_instance.save()

        # remove temporary file if stored
        if add_uuid:
            os.unlink(tmp_file.name)
Beispiel #3
0
    def _make_submission(self, path, username=None, add_uuid=False,
                         forced_submission_time=None, auth=None, client=None):
        # store temporary file with dynamic uuid

        self.factory = APIRequestFactory()
        if auth is None:
            auth = DigestAuth('bob', 'bob')

        tmp_file = None

        if add_uuid:
            tmp_file = NamedTemporaryFile(delete=False, mode='w')
            split_xml = None

            with open(path, encoding='utf-8') as _file:
                split_xml = re.split(r'(<transport>)', _file.read())

            split_xml[1:1] = [
                '<formhub><uuid>%s</uuid></formhub>' % self.xform.uuid
            ]
            tmp_file.write(''.join(split_xml))
            path = tmp_file.name
            tmp_file.close()

        with open(path, encoding='utf-8') as f:
            post_data = {'xml_submission_file': f}

            if username is None:
                username = self.user.username

            url_prefix = '%s/' % username if username else ''
            url = '/%ssubmission' % url_prefix

            request = self.factory.post(url, post_data)
            request.user = authenticate(username=auth.username,
                                        password=auth.password)

            self.response = submission(request, username=username)

            if auth and self.response.status_code == 401:
                request.META.update(auth(request.META, self.response))
                self.response = submission(request, username=username)

        if forced_submission_time:
            instance = Instance.objects.order_by('-pk').all()[0]
            instance.date_created = forced_submission_time
            instance.json = instance.get_full_dict()
            instance.save()
            instance.parsed_instance.save()

        # remove temporary file if stored
        if add_uuid:
            os.unlink(tmp_file.name)
    def _make_submission(self,
                         path,
                         username=None,
                         add_uuid=False,
                         forced_submission_time=None,
                         client=None,
                         media_file=None,
                         auth=None):
        # store temporary file with dynamic uuid
        self.factory = APIRequestFactory()
        if auth is None:
            auth = DigestAuth(self.profile_data['username'],
                              self.profile_data['password1'])

        tmp_file = None

        if add_uuid:
            path = self._add_uuid_to_submission_xml(path, self.xform)
        with open(path) as f:
            post_data = {'xml_submission_file': f}

            if media_file is not None:
                if isinstance(media_file, list):
                    for c in range(len(media_file)):
                        post_data['media_file_{}'.format(c)] = media_file[c]
                else:
                    post_data['media_file'] = media_file

            if username is None:
                username = self.user.username

            url_prefix = '%s/' % username if username else ''
            url = '/%ssubmission' % url_prefix

            request = self.factory.post(url, post_data)
            request.user = authenticate(username=auth.username,
                                        password=auth.password)
            self.response = submission(request, username=username)

            if auth and self.response.status_code == 401:
                request.META.update(auth(request.META, self.response))
                self.response = submission(request, username=username)

        if forced_submission_time:
            instance = Instance.objects.order_by('-pk').all()[0]
            instance.date_created = forced_submission_time
            instance.save()
            instance.parsed_instance.save()

        # remove temporary file if stored
        if add_uuid:
            os.unlink(tmp_file.name)
    def _make_submission_w_attachment(self, path, attachment_path):
        with open(path) as f:
            a = open(attachment_path)
            post_data = {'xml_submission_file': f, 'media_file': a}
            url = '/%s/submission' % self.user.username
            auth = DigestAuth('bob', 'bob')
            self.factory = APIRequestFactory()
            request = self.factory.post(url, post_data)
            request.user = authenticate(username='******', password='******')
            self.response = submission(request, username=self.user.username)

            if auth and self.response.status_code == 401:
                request.META.update(auth(request.META, self.response))
                self.response = submission(request,
                                           username=self.user.username)
 def test_encrypted_submissions(self):
     self._publish_xls_file(os.path.join(
         self.this_directory, 'fixtures', 'transportation',
         'transportation_encrypted.xls'
     ))
     xform = XForm.objects.get(id_string='transportation_encrypted')
     self.assertTrue(xform.encrypted)
     uuid = "c15252fe-b6f3-4853-8f04-bf89dc73985a"
     with self.assertRaises(Instance.DoesNotExist):
         Instance.objects.get(uuid=uuid)
     message = u"Successful submission."
     files = {}
     for filename in ['submission.xml', 'submission.xml.enc']:
         files[filename] = os.path.join(
             self.this_directory, 'fixtures', 'transportation',
             'instances_encrypted', filename)
     count = Instance.objects.count()
     acount = Attachment.objects.count()
     with open(files['submission.xml.enc']) as ef:
         with codecs.open(files['submission.xml']) as f:
             post_data = {
                 'xml_submission_file': f,
                 'submission.xml.enc': ef}
             self.factory = APIRequestFactory()
             request = self.factory.post(self._submission_url, post_data)
             request.user = authenticate(username='******',
                                         password='******')
             response = submission(request, username=self.user.username)
             self.assertContains(response, message, status_code=201)
             self.assertEqual(Instance.objects.count(), count + 1)
             self.assertEqual(Attachment.objects.count(), acount + 1)
             self.assertTrue(Instance.objects.get(uuid=uuid))
    def _make_submission(self, path, username=None, add_uuid=False,
                         forced_submission_time=None,
                         client=None, media_file=None, auth=None):
        # store temporary file with dynamic uuid
        self.factory = APIRequestFactory()
        if auth is None:
            auth = DigestAuth(self.profile_data['username'],
                              self.profile_data['password1'])

        tmp_file = None

        if add_uuid:
            path = self._add_uuid_to_submission_xml(path, self.xform)
        with open(path) as f:
            post_data = {'xml_submission_file': f}

            if media_file is not None:
                if isinstance(media_file, list):
                    for c in range(len(media_file)):
                        post_data['media_file_{}'.format(c)] = media_file[c]
                else:
                    post_data['media_file'] = media_file

            if username is None:
                username = self.user.username

            url_prefix = '%s/' % username if username else ''
            url = '/%ssubmission' % url_prefix

            request = self.factory.post(url, post_data)
            request.user = authenticate(username=auth.username,
                                        password=auth.password)
            self.response = submission(request, username=username)

            if auth and self.response.status_code == 401:
                request.META.update(auth(request.META, self.response))
                self.response = submission(request, username=username)

        if forced_submission_time:
            instance = Instance.objects.order_by('-pk').all()[0]
            instance.date_created = forced_submission_time
            instance.save()
            instance.parsed_instance.save()

        # remove temporary file if stored
        if add_uuid:
            os.unlink(tmp_file.name)
Beispiel #8
0
    def _make_submission_w_attachment(self, path, attachment_path):
        with open(path) as f:
            a = open(attachment_path)
            post_data = {'xml_submission_file': f, 'media_file': a}
            url = '/%s/submission' % self.user.username
            auth = DigestAuth('bob', 'bob')
            self.factory = APIRequestFactory()
            request = self.factory.post(url, post_data)
            request.user = authenticate(username='******',
                                        password='******')
            self.response = submission(request,
                                       username=self.user.username)

            if auth and self.response.status_code == 401:
                request.META.update(auth(request.META, self.response))
                self.response = submission(request,
                                           username=self.user.username)
Beispiel #9
0
 def test_submission_with_instance_id_on_root_node(self):
     self._publish_xml_form()
     message = "Successful submission."
     instanceId = '5b2cc313-fc09-437e-8149-fcd32f695d41'
     self.assertRaises(Instance.DoesNotExist,
                       Instance.objects.get,
                       uuid=instanceId)
     submission_path = os.path.join(self.this_directory, 'fixtures',
                                    'transportation', 'view',
                                    'submission.xml')
     count = Instance.objects.count()
     with codecs.open(submission_path, encoding='utf-8') as f:
         post_data = {'xml_submission_file': f}
         self.factory = APIRequestFactory()
         request = self.factory.post(self._submission_url, post_data)
         request.user = authenticate(username='******', password='******')
         response = submission(request, username=self.user.username)
         self.assertContains(response, message, status_code=201)
         self.assertContains(response, instanceId, status_code=201)
         self.assertEqual(Instance.objects.count(), count + 1)
 def test_submission_with_instance_id_on_root_node(self):
     self._publish_xml_form()
     message = u"Successful submission."
     instanceId = u'5b2cc313-fc09-437e-8149-fcd32f695d41'
     self.assertRaises(
         Instance.DoesNotExist, Instance.objects.get, uuid=instanceId)
     submission_path = os.path.join(
         self.this_directory, 'fixtures', 'transportation',
         'view', 'submission.xml')
     count = Instance.objects.count()
     with codecs.open(submission_path, encoding='utf-8') as f:
         post_data = {'xml_submission_file': f}
         self.factory = APIRequestFactory()
         request = self.factory.post(self._submission_url, post_data)
         request.user = authenticate(username='******',
                                     password='******')
         response = submission(request, username=self.user.username)
         self.assertContains(response, message, status_code=201)
         self.assertContains(response, instanceId, status_code=201)
         self.assertEqual(Instance.objects.count(), count + 1)