def test_file_level_keys_update(self): good_url = 'https://www.google.com?' \ 'file_id=${HS_FILE_PATH}' \ '&res_id=${HS_RES_TYPE}' \ '&usr=${HS_USR_NAME}' \ '&fil=${HS_FILE_PATH}' post_data = {'value': good_url} url_params = { 'element_name': "requesturlbasefile", 'shortkey': self.resWebApp.short_id } # add url url = reverse('add_metadata_element', kwargs=url_params) request = self.factory.post(url, data=post_data) request.user = self.user request.META['HTTP_REFERER'] = 'http_referer' response = add_metadata_element(request, shortkey=self.resWebApp.short_id, element_name="requesturlbasefile") self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(1, RequestUrlBaseFile.objects.all().count()) self.assertEqual(good_url, RequestUrlBaseFile.objects.first().value) # update good url url_params["element_id"] = 1 url = reverse('update_metadata_element', kwargs=url_params) updated_url = 'https://www.google.com?file_id=${HS_FILE_PATH}' post_data = {'value': updated_url} request = self.factory.post(url, data=post_data) request.user = self.user request.META['HTTP_REFERER'] = 'http_referer' id = RequestUrlBaseFile.objects.first().id response = update_metadata_element(request, shortkey=self.resWebApp.short_id, element_name="requesturlbasefile", element_id=id) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(1, RequestUrlBaseFile.objects.all().count()) self.assertEqual(updated_url, RequestUrlBaseFile.objects.first().value) # update custom url url = reverse('update_metadata_element', kwargs=url_params) custom_url = 'https://www.google.com?file_id=${BAD_KEY}' post_data = {'value': custom_url} request = self.factory.post(url, data=post_data) request.user = self.user request.META['HTTP_REFERER'] = 'http_referer' response = update_metadata_element(request, shortkey=self.resWebApp.short_id, element_name="requesturlbasefile", element_id=id) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(1, RequestUrlBaseFile.objects.all().count()) self.assertEqual(custom_url, RequestUrlBaseFile.objects.first().value)
def test_file_extensions_update(self): good_extensions = '.tif, .txt,.html' post_data = {'value': good_extensions} url_params = { 'element_name': "supportedfileextensions", 'shortkey': self.resWebApp.short_id } # add extensions url = reverse('add_metadata_element', kwargs=url_params) request = self.factory.post(url, data=post_data) request.user = self.user request.META['HTTP_REFERER'] = 'http_referer' response = add_metadata_element(request, shortkey=self.resWebApp.short_id, element_name="supportedfileextensions") self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(1, SupportedFileExtensions.objects.all().count()) self.assertEqual(good_extensions, SupportedFileExtensions.objects.first().value) # update good extensions url_params["element_id"] = 1 url = reverse('update_metadata_element', kwargs=url_params) updated_extensions = '.tif, .txt,.html, .yaml' post_data = {'value': updated_extensions} request = self.factory.post(url, data=post_data) request.user = self.user request.META['HTTP_REFERER'] = 'http_referer' id = SupportedFileExtensions.objects.first().id response = update_metadata_element( request, shortkey=self.resWebApp.short_id, element_name="supportedfileextensions", element_id=id) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(1, SupportedFileExtensions.objects.all().count()) self.assertEqual(updated_extensions, SupportedFileExtensions.objects.first().value) # update bad extension url = reverse('update_metadata_element', kwargs=url_params) post_data = {'value': '.tif, htm'} request = self.factory.post(url, data=post_data) request.user = self.user request.META['HTTP_REFERER'] = 'http_referer' response = update_metadata_element(request, shortkey=self.resWebApp.short_id, element_name="requesturlbase", element_id=id) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(1, SupportedFileExtensions.objects.all().count()) # ensure it did not change self.assertEqual(updated_extensions, SupportedFileExtensions.objects.first().value)
def test_aggregation_level_keys_update(self): good_url = 'https://www.google.com?' \ 'file_id=${HS_RES_ID}' \ '&res_id=${HS_RES_TYPE}' \ '&usr=${HS_USR_NAME}' \ '&fil=${HS_AGG_PATH}' \ '&main=${HS_MAIN_FILE}' post_data = {'value': good_url} url_params = {'element_name': "requesturlbaseaggregation", 'shortkey': self.resWebApp.short_id} # add url url = reverse('add_metadata_element', kwargs=url_params) request = self.factory.post(url, data=post_data) request.user = self.user request.META['HTTP_REFERER'] = 'http_referer' response = add_metadata_element(request, shortkey=self.resWebApp.short_id, element_name="requesturlbaseaggregation") self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(1, RequestUrlBaseAggregation.objects.all().count()) self.assertEqual(good_url, RequestUrlBaseAggregation.objects.first().value) # update good url url_params["element_id"] = 1 url = reverse('update_metadata_element', kwargs=url_params) updated_url = 'https://www.google.com?file_id=${HS_AGG_PATH}' post_data = {'value': updated_url} request = self.factory.post(url, data=post_data) request.user = self.user request.META['HTTP_REFERER'] = 'http_referer' id = RequestUrlBaseAggregation.objects.first().id response = update_metadata_element(request, shortkey=self.resWebApp.short_id, element_name="requesturlbaseaggregation", element_id=id) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(1, RequestUrlBaseAggregation.objects.all().count()) self.assertEqual(updated_url, RequestUrlBaseAggregation.objects.first().value) # update bad url url = reverse('update_metadata_element', kwargs=url_params) post_data = {'value': 'https://www.google.com?file_id=${BAD_KEY}'} request = self.factory.post(url, data=post_data) request.user = self.user request.META['HTTP_REFERER'] = 'http_referer' response = update_metadata_element(request, shortkey=self.resWebApp.short_id, element_name="requesturlbaseaggregation", element_id=id) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(1, RequestUrlBaseAggregation.objects.all().count()) # ensure it did not change self.assertEqual(updated_url, RequestUrlBaseAggregation.objects.first().value)
def test_file_extensions_update(self): good_extensions = '.tif, .txt,.html' post_data = {'value': good_extensions} url_params = {'element_name': "supportedfileextensions", 'shortkey': self.resWebApp.short_id} # add extensions url = reverse('add_metadata_element', kwargs=url_params) request = self.factory.post(url, data=post_data) request.user = self.user request.META['HTTP_REFERER'] = 'http_referer' response = add_metadata_element(request, shortkey=self.resWebApp.short_id, element_name="supportedfileextensions") self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(1, SupportedFileExtensions.objects.all().count()) self.assertEqual(good_extensions, SupportedFileExtensions.objects.first().value) # update good extensions url_params["element_id"] = 1 url = reverse('update_metadata_element', kwargs=url_params) updated_extensions = '.tif, .txt,.html, .yaml' post_data = {'value': updated_extensions} request = self.factory.post(url, data=post_data) request.user = self.user request.META['HTTP_REFERER'] = 'http_referer' id = SupportedFileExtensions.objects.first().id response = update_metadata_element(request, shortkey=self.resWebApp.short_id, element_name="supportedfileextensions", element_id=id) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(1, SupportedFileExtensions.objects.all().count()) self.assertEqual(updated_extensions, SupportedFileExtensions.objects.first().value) # update bad extension url = reverse('update_metadata_element', kwargs=url_params) post_data = {'value': '.tif, htm'} request = self.factory.post(url, data=post_data) request.user = self.user request.META['HTTP_REFERER'] = 'http_referer' response = update_metadata_element(request, shortkey=self.resWebApp.short_id, element_name="requesturlbase", element_id=id) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(1, SupportedFileExtensions.objects.all().count()) # ensure it did not change self.assertEqual(updated_extensions, SupportedFileExtensions.objects.first().value)
def test_CRUD_metadata(self): # here we are testing the add_metadata_element view function # There should be no keywords (subject element) now self.assertEqual(self.gen_res.metadata.subjects.count(), 0) # add keywords url_params = { 'shortkey': self.gen_res.short_id, 'element_name': 'subject' } post_data = {'value': 'kw-1, kw 2, key word'} url = reverse('add_metadata_element', kwargs=url_params) request = self.factory.post(url, data=post_data) request.user = self.user # make it a ajax request request.META['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' self.set_request_message_attributes(request) response = add_metadata_element(request, shortkey=self.gen_res.short_id, element_name='subject') self.assertEqual(response.status_code, status.HTTP_200_OK) response_dict = json.loads(response.content.decode()) self.assertEqual(response_dict['status'], 'success') self.assertEqual(response_dict['element_name'], 'subject') self.gen_res.refresh_from_db() self.assertEqual(self.gen_res.metadata.subjects.count(), 3) # here we are testing the update_metadata_element view function # update title metadata self.assertEqual(self.gen_res.metadata.title.value, 'Generic Resource Key/Value Metadata Testing') title_element = self.gen_res.metadata.title url_params = { 'shortkey': self.gen_res.short_id, 'element_name': 'title', 'element_id': title_element.id } post_data = {'value': 'Updated Resource Title'} url = reverse('update_metadata_element', kwargs=url_params) request = self.factory.post(url, data=post_data) request.user = self.user # make it a ajax request request.META['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' self.set_request_message_attributes(request) response = update_metadata_element(request, shortkey=self.gen_res.short_id, element_name='title', element_id=title_element.id) self.assertEqual(response.status_code, status.HTTP_200_OK) response_dict = json.loads(response.content.decode()) self.assertEqual(response_dict['status'], 'success') self.gen_res.refresh_from_db() self.assertEqual(self.gen_res.metadata.title.value, 'Updated Resource Title') # here we are testing the delete_metadata_element view function # first create a contributor element and then delete it # there should be no contributors now self.assertEqual(self.gen_res.metadata.contributors.count(), 0) url_params = { 'shortkey': self.gen_res.short_id, 'element_name': 'contributor' } post_data = {'name': 'John Smith', 'email': '*****@*****.**'} url = reverse('add_metadata_element', kwargs=url_params) request = self.factory.post(url, data=post_data) request.user = self.user # make it a ajax request request.META['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' self.set_request_message_attributes(request) response = add_metadata_element(request, shortkey=self.gen_res.short_id, element_name='contributor') self.assertEqual(response.status_code, status.HTTP_200_OK) response_dict = json.loads(response.content.decode()) self.assertEqual(response_dict['status'], 'success') self.assertEqual(response_dict['element_name'], 'contributor') self.gen_res.refresh_from_db() # there should be one contributor now self.assertEqual(self.gen_res.metadata.contributors.count(), 1) # now delete the contributor we created above contributor = self.gen_res.metadata.contributors.first() url_params = { 'shortkey': self.gen_res.short_id, 'element_name': 'contributor', 'element_id': contributor.id } url = reverse('delete_metadata_element', kwargs=url_params) request = self.factory.post(url, data={}) request.user = self.user request.META['HTTP_REFERER'] = 'some-url' self.set_request_message_attributes(request) self.add_session_to_request(request) response = delete_metadata_element(request, shortkey=self.gen_res.short_id, element_name='contributor', element_id=contributor.id) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(response['Location'], request.META['HTTP_REFERER']) self.gen_res.refresh_from_db() # there should be no contributors self.assertEqual(self.gen_res.metadata.contributors.count(), 0) hydroshare.delete_resource(self.gen_res.short_id)
def test_CRUD_metadata(self): # here we are testing the add_metadata_element view function # There should be no keywords (subject element) now self.assertEqual(self.gen_res.metadata.subjects.count(), 0) # add keywords url_params = {'shortkey': self.gen_res.short_id, 'element_name': 'subject'} post_data = {'value': 'kw-1, kw 2, key word'} url = reverse('add_metadata_element', kwargs=url_params) request = self.factory.post(url, data=post_data) request.user = self.user # make it a ajax request request.META['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' self.set_request_message_attributes(request) response = add_metadata_element(request, shortkey=self.gen_res.short_id, element_name='subject') self.assertEqual(response.status_code, status.HTTP_200_OK) response_dict = json.loads(response.content) self.assertEqual(response_dict['status'], 'success') self.assertEqual(response_dict['element_name'], 'subject') self.gen_res.refresh_from_db() self.assertEqual(self.gen_res.metadata.subjects.count(), 3) # here we are testing the update_metadata_element view function # update title metadata self.assertEqual(self.gen_res.metadata.title.value, 'Generic Resource Key/Value Metadata Testing') title_element = self.gen_res.metadata.title url_params = {'shortkey': self.gen_res.short_id, 'element_name': 'title', 'element_id': title_element.id} post_data = {'value': 'Updated Resource Title'} url = reverse('update_metadata_element', kwargs=url_params) request = self.factory.post(url, data=post_data) request.user = self.user # make it a ajax request request.META['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' self.set_request_message_attributes(request) response = update_metadata_element(request, shortkey=self.gen_res.short_id, element_name='title', element_id=title_element.id) self.assertEqual(response.status_code, status.HTTP_200_OK) response_dict = json.loads(response.content) self.assertEqual(response_dict['status'], 'success') self.gen_res.refresh_from_db() self.assertEqual(self.gen_res.metadata.title.value, 'Updated Resource Title') # here we are testing the delete_metadata_element view function # first create a contributor element and then delete it # there should be no contributors now self.assertEqual(self.gen_res.metadata.contributors.count(), 0) url_params = {'shortkey': self.gen_res.short_id, 'element_name': 'contributor'} post_data = {'name': 'John Smith', 'email': '*****@*****.**'} url = reverse('add_metadata_element', kwargs=url_params) request = self.factory.post(url, data=post_data) request.user = self.user # make it a ajax request request.META['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' self.set_request_message_attributes(request) response = add_metadata_element(request, shortkey=self.gen_res.short_id, element_name='contributor') self.assertEqual(response.status_code, status.HTTP_200_OK) response_dict = json.loads(response.content) self.assertEqual(response_dict['status'], 'success') self.assertEqual(response_dict['element_name'], 'contributor') self.gen_res.refresh_from_db() # there should be one contributor now self.assertEqual(self.gen_res.metadata.contributors.count(), 1) # now delete the contributor we created above contributor = self.gen_res.metadata.contributors.first() url_params = {'shortkey': self.gen_res.short_id, 'element_name': 'contributor', 'element_id': contributor.id} url = reverse('delete_metadata_element', kwargs=url_params) request = self.factory.post(url, data={}) request.user = self.user request.META['HTTP_REFERER'] = 'some-url' self.set_request_message_attributes(request) self.add_session_to_request(request) response = delete_metadata_element(request, shortkey=self.gen_res.short_id, element_name='contributor', element_id=contributor.id) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(response['Location'], request.META['HTTP_REFERER']) self.gen_res.refresh_from_db() # there should be no contributors self.assertEqual(self.gen_res.metadata.contributors.count(), 0) hydroshare.delete_resource(self.gen_res.short_id)