def test_view_download_submission(self): self._publish_xml_form() self.maxDiff = None self._submit_transport_instance_w_attachment() instanceId = '5b2cc313-fc09-437e-8149-fcd32f695d41' instance = Instance.objects.get(uuid=instanceId) formId = '%(formId)s[@version=null and @uiVersion=null]/' \ '%(formId)s[@key=uuid:%(instanceId)s]' % { 'formId': self.xform.id_string, 'instanceId': instanceId} params = {'formId': formId} request = self.factory.get(self._download_submission_url, params) response = view_download_submission(request, self.user.username) self.assertEqual(response.status_code, 401) auth = DigestAuth(self.login_username, self.login_password) request.META.update(auth(request.META, response)) response = view_download_submission(request, self.user.username) text = "uuid:%s" % instanceId download_submission_path = os.path.join(self.this_directory, 'fixtures', 'transportation', 'view', 'downloadSubmission.xml') with codecs.open(download_submission_path, encoding='utf-8') as f: text = f.read() text = text.replace('{{submissionDate}}', instance.date_created.isoformat()) text = text.replace('{{xform_uuid}}', self.xform.uuid) self.assertContains(response, instanceId, status_code=200) self.assertMultiLineEqual(response.content, text)
def test_view_downloadSubmission(self): self._publish_xml_form() self.maxDiff = None self._submit_transport_instance_w_attachment() instanceId = u'5b2cc313-fc09-437e-8149-fcd32f695d41' instance = Instance.objects.get(uuid=instanceId) formId = u'%(formId)s[@version=null and @uiVersion=null]/' \ u'%(formId)s[@key=uuid:%(instanceId)s]' % { 'formId': self.xform.id_string, 'instanceId': instanceId} params = {'formId': formId} request = self.factory.get(self._download_submission_url, params) response = view_download_submission(request, self.user.username) self.assertEqual(response.status_code, 401) auth = DigestAuth(self.login_username, self.login_password) request.META.update(auth(request.META, response)) response = view_download_submission(request, self.user.username) text = "uuid:%s" % instanceId download_submission_path = os.path.join( self.this_directory, 'fixtures', 'transportation', 'view', 'downloadSubmission.xml') with codecs.open(download_submission_path, encoding='utf-8') as f: text = f.read() text = text.replace(u'{{submissionDate}}', instance.date_created.isoformat()) self.assertContains(response, instanceId, status_code=200) self.assertMultiLineEqual(response.content, text)
def test_view_download_submission_other_user(self): self._publish_xml_form() self.maxDiff = None self._submit_transport_instance_w_attachment() instanceId = '5b2cc313-fc09-437e-8149-fcd32f695d41' formId = '%(formId)s[@version=null and @uiVersion=null]/' \ '%(formId)s[@key=uuid:%(instanceId)s]' % { 'formId': self.xform.id_string, 'instanceId': instanceId} params = {'formId': formId} # deno cannot view bob's downloadSubmission self._create_user('deno', 'deno') request = self.factory.get(self._download_submission_url, params) response = view_download_submission(request, self.user.username) self.assertEqual(response.status_code, 401) auth = DigestAuth('deno', 'deno') request.META.update(auth(request.META, response)) response = view_download_submission(request, self.user.username) self.assertEqual(response.status_code, 403)
def test_view_downloadSubmission_OtherUser(self): self._publish_xml_form() self.maxDiff = None self._submit_transport_instance_w_attachment() instanceId = u'5b2cc313-fc09-437e-8149-fcd32f695d41' formId = u'%(formId)s[@version=null and @uiVersion=null]/' \ u'%(formId)s[@key=uuid:%(instanceId)s]' % { 'formId': self.xform.id_string, 'instanceId': instanceId} params = {'formId': formId} # deno cannot view bob's downloadSubmission self._create_user('deno', 'deno') request = self.factory.get(self._download_submission_url, params) response = view_download_submission(request, self.user.username) self.assertEqual(response.status_code, 401) auth = DigestAuth('deno', 'deno') request.META.update(auth(request.META, response)) response = view_download_submission(request, self.user.username) self.assertEqual(response.status_code, 403)