def test_view_submission_list_w_deleted_submission(self): self._publish_xml_form() self._make_submissions() uuid = 'f3d8dc65-91a6-4d0f-9e97-802128083390' Instance.objects.filter(uuid=uuid).order_by('id').delete() params = {'formId': self.xform.id_string} request = self.factory.get(self._submission_list_url, params) response = view_submission_list(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_submission_list(request, self.user.username) self.assertEqual(response.status_code, 200) submission_list_path = os.path.join(self.this_directory, 'fixtures', 'transportation', 'view', 'submissionList-4.xml') instances = ordered_instances(self.xform) self.assertEqual(instances.count(), NUM_INSTANCES - 1) last_index = instances[instances.count() - 1].pk with codecs.open(submission_list_path, 'rb', encoding='utf-8') as f: expected_submission_list = f.read() expected_submission_list = \ expected_submission_list.replace( '{{resumptionCursor}}', '%s' % last_index) self.assertEqual(response.content, expected_submission_list) formId = '%(formId)s[@version=null and @uiVersion=null]/' \ '%(formId)s[@key=uuid:%(instanceId)s]' % { 'formId': self.xform.id_string, 'instanceId': uuid} params = {'formId': formId} response = self.client.get(self._download_submission_url, data=params) self.assertTrue(response.status_code, 404)
def test_view_submission_list_w_deleted_submission(self): self._publish_xml_form() self._make_submissions() uuid = 'f3d8dc65-91a6-4d0f-9e97-802128083390' Instance.objects.filter(uuid=uuid).order_by('id').delete() params = {'formId': self.xform.id_string} request = self.factory.get(self._submission_list_url, params) response = view_submission_list(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_submission_list(request, self.user.username) self.assertEqual(response.status_code, 200) submission_list_path = os.path.join( self.this_directory, 'fixtures', 'transportation', 'view', 'submissionList-4.xml') instances = ordered_instances(self.xform) self.assertEqual(instances.count(), NUM_INSTANCES - 1) last_index = instances[instances.count() - 1].pk with codecs.open(submission_list_path, 'rb', encoding='utf-8') as f: expected_submission_list = f.read() expected_submission_list = \ expected_submission_list.replace( '{{resumptionCursor}}', '%s' % last_index) self.assertEqual(response.content, expected_submission_list) formId = u'%(formId)s[@version=null and @uiVersion=null]/' \ u'%(formId)s[@key=uuid:%(instanceId)s]' % { 'formId': self.xform.id_string, 'instanceId': uuid} params = {'formId': formId} response = self.client.get(self._download_submission_url, data=params) self.assertTrue(response.status_code, 404)
def test_view_submission_list(self): self._publish_xml_form() self._make_submissions() params = {'formId': self.xform.id_string} request = self.factory.get(self._submission_list_url, params) response = view_submission_list(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_submission_list(request, self.user.username) self.assertEqual(response.status_code, 200) submission_list_path = os.path.join(self.this_directory, 'fixtures', 'transportation', 'view', 'submissionList.xml') instances = ordered_instances(self.xform) self.assertEqual(instances.count(), NUM_INSTANCES) last_index = instances[instances.count() - 1].pk with codecs.open(submission_list_path, 'rb', encoding='utf-8') as f: expected_submission_list = f.read() expected_submission_list = \ expected_submission_list.replace( '{{resumptionCursor}}', '%s' % last_index) self.assertEqual(response.content, expected_submission_list)
def test_view_submission_list(self): self._publish_xml_form() self._make_submissions() params = {'formId': self.xform.id_string} request = self.factory.get(self._submission_list_url, params) response = view_submission_list(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_submission_list(request, self.user.username) self.assertEqual(response.status_code, 200) submission_list_path = os.path.join( self.this_directory, 'fixtures', 'transportation', 'view', 'submissionList.xml') instances = ordered_instances(self.xform) self.assertEqual(instances.count(), NUM_INSTANCES) last_index = instances[instances.count() - 1].pk with codecs.open(submission_list_path, 'rb', encoding='utf-8') as f: expected_submission_list = f.read() expected_submission_list = \ expected_submission_list.replace( '{{resumptionCursor}}', '%s' % last_index) self.assertEqual(response.content, expected_submission_list)
def test_view_submission_list_num_entries(self): def get_last_index(xform, last_index=None): instances = ordered_instances(xform) if not last_index and instances.count(): return instances[instances.count() - 1].pk elif last_index: instances = instances.filter(pk__gt=last_index) if instances.count(): return instances[instances.count() - 1].pk else: return get_last_index(xform) return 0 self._publish_xml_form() self._make_submissions() params = {'formId': self.xform.id_string} params['numEntries'] = 2 instances = ordered_instances(self.xform) self.assertEqual(instances.count(), NUM_INSTANCES) last_index = instances[:2][1].pk last_expected_submission_list = "" for index in range(1, 5): request = self.factory.get(self._submission_list_url, params) response = view_submission_list(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_submission_list(request, self.user.username) self.assertEqual(response.status_code, 200) if index > 2: last_index = get_last_index(self.xform, last_index) filename = 'submissionList-%s.xml' % index if index == 4: self.assertEqual(response.content.decode('utf-8'), last_expected_submission_list) continue # set cursor for second request params['cursor'] = last_index submission_list_path = os.path.join(self.this_directory, 'fixtures', 'transportation', 'view', filename) with open(submission_list_path, encoding='utf-8') as f: expected_submission_list = f.read() last_expected_submission_list = expected_submission_list = \ expected_submission_list.replace( '{{resumptionCursor}}', '%s' % last_index) self.assertEqual(response.content.decode('utf-8'), expected_submission_list) last_index += 2
def test_view_submission_list_num_entries(self): def get_last_index(xform, last_index=None): instances = ordered_instances(xform) if not last_index and instances.count(): return instances[instances.count() - 1].pk elif last_index: instances = instances.filter(pk__gt=last_index) if instances.count(): return instances[instances.count() - 1].pk else: return get_last_index(xform) return 0 self._publish_xml_form() self._make_submissions() params = {'formId': self.xform.id_string} params['numEntries'] = 2 instances = ordered_instances(self.xform) self.assertEqual(instances.count(), NUM_INSTANCES) last_index = instances[:2][1].pk last_expected_submission_list = "" for index in range(1, 5): request = self.factory.get(self._submission_list_url, params) response = view_submission_list(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_submission_list(request, self.user.username) self.assertEqual(response.status_code, 200) if index > 2: last_index = get_last_index(self.xform, last_index) filename = 'submissionList-%s.xml' % index if index == 4: self.assertEqual(response.content.decode('utf-8'), last_expected_submission_list) continue # set cursor for second request params['cursor'] = last_index submission_list_path = os.path.join( self.this_directory, 'fixtures', 'transportation', 'view', filename) with open(submission_list_path, encoding='utf-8') as f: expected_submission_list = f.read() last_expected_submission_list = expected_submission_list = \ expected_submission_list.replace( '{{resumptionCursor}}', '%s' % last_index) self.assertEqual(response.content.decode('utf-8'), expected_submission_list) last_index += 2
def test_view_submission_list_other_user(self): self._publish_xml_form() self._make_submissions() params = {'formId': self.xform.id_string} # deno cannot view bob's submissionList self._create_user('deno', 'deno') request = self.factory.get(self._submission_list_url, params) response = view_submission_list(request, self.user.username) self.assertEqual(response.status_code, 401) auth = DigestAuth('deno', 'deno') request.META.update(auth(request.META, response)) response = view_submission_list(request, self.user.username) self.assertEqual(response.status_code, 403)
def test_view_submission_list_OtherUser(self): self._publish_xml_form() self._make_submissions() params = {'formId': self.xform.id_string} # deno cannot view bob's submissionList self._create_user('deno', 'deno') request = self.factory.get(self._submission_list_url, params) response = view_submission_list(request, self.user.username) self.assertEqual(response.status_code, 401) auth = DigestAuth('deno', 'deno') request.META.update(auth(request.META, response)) response = view_submission_list(request, self.user.username) self.assertEqual(response.status_code, 403)