Skip to content

Commit

Permalink
[Fixes #12124] Fix broken tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mattiagiupponi committed Apr 30, 2024
1 parent aa13c5f commit 7737447
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 18 deletions.
10 changes: 5 additions & 5 deletions geonode/assets/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,11 +105,11 @@ def create_asset_and_link_dict(resource, values: dict, clone_files=True):
resource,
values["owner"],
values["files"],
title=values.get("data_title", None),
description=values.get("description", None),
link_type=values.get("link_type", None),
extension=values.get("extension", None),
asset_type=values.get("data_type", None),
title=values.pop("data_title", None),
description=values.pop("description", None),
link_type=values.pop("link_type", None),
extension=values.pop("extension", None),
asset_type=values.pop("data_type", None),
clone_files=clone_files,
)

Expand Down
7 changes: 7 additions & 0 deletions geonode/geoserver/tests/test_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import os
import base64
import shutil
from django.test import override_settings
import gisdata
import requests

Expand Down Expand Up @@ -54,8 +55,14 @@ def tearDown(self) -> None:
return super().tearDown()

@on_ogc_backend(geoserver.BACKEND_PACKAGE)
@override_settings(ASYNC_SIGNALS=False, FILE_UPLOAD_DIRECTORY_PERMISSIONS=0o777, FILE_UPLOAD_PERMISSIONS=0o7777)
def test_revise_resource_value_in_append_should_add_expected_rows_in_the_catalog(self):
layer = Dataset.objects.get(name=self.sut.name)
gs_layer = self.cat.get_layer("san_andres_y_providencia_water")
if gs_layer is None:
_gs_import_session_info = self.geoserver_manager._execute_resource_import(
layer, list(self.files_as_dict.values()), self.user, action_type="create"
)
_gs_import_session_info = self.geoserver_manager._execute_resource_import(
layer, list(self.files_as_dict.values()), self.user, action_type="append"
)
Expand Down
13 changes: 8 additions & 5 deletions geonode/resource/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import copy
import typing
import logging
import itertools

from uuid import uuid1, uuid4
from abc import ABCMeta, abstractmethod
Expand Down Expand Up @@ -337,7 +338,7 @@ def create(self, uuid: str, /, resource_type: typing.Optional[object] = None, de
with transaction.atomic():
_resource.set_missing_info()
_resource = self._concrete_resource_manager.create(
uuid, resource_type=resource_type, defaults=defaults
uuid, resource_type=resource_type, defaults=resource_dict
)
_resource.save()
resourcebase_post_save(_resource.get_real_instance())
Expand Down Expand Up @@ -458,16 +459,18 @@ def ingest(
) -> ResourceBase:
instance = None
to_update = defaults.copy()
to_update_with_files = {**to_update, **{"files": files}}
try:
with transaction.atomic():
if resource_type == Document:
if "name" in to_update:
to_update.pop("name")
instance = self.create(uuid, resource_type=Document, defaults=to_update)
instance = self.create(uuid, resource_type=Document, defaults=to_update_with_files)
elif resource_type == Dataset:
logger.warning(f"Will not create a Dataset without any file. Values: {defaults}")
if files:
instance = self.create(uuid, resource_type=Dataset, defaults=to_update)
instance = self.create(uuid, resource_type=Dataset, defaults=to_update_with_files)
else:
logger.warning(f"Will not create a Dataset without any file. Values: {defaults}")

if instance:
instance = self._concrete_resource_manager.ingest(
Expand Down Expand Up @@ -558,7 +561,7 @@ def copy(
to_update = {}

if not isinstance(instance.get_real_instance(), (Map, GeoApp)):
files = [link.asset.location for link in links]
files = list(itertools.chain.from_iterable([link.asset.location for link in links]))
if files:
to_update = {"files": files}

Expand Down
17 changes: 15 additions & 2 deletions geonode/resource/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,15 @@ def _copy_assert_resource(res, title):

# copy with documents
res = self.rm.ingest(
dt_files, resource_type=Document, defaults={"title": "relief_san_andres", "owner": self.user}
dt_files,
resource_type=Document,
defaults={
"title": "relief_san_andres",
"owner": self.user,
"extension": "tif",
"data_title": "relief_san_andres",
"data_type": "tif",
},
)
self.assertTrue(isinstance(res, Document))
_copy_assert_resource(res, "Testing Document 2")
Expand All @@ -157,7 +165,12 @@ def _copy_assert_resource(res, title):
res = self.rm.ingest(
dt_files,
resource_type=Dataset,
defaults={"owner": self.user, "title": "Testing Dataset"},
defaults={
"owner": self.user,
"title": "Testing Dataset",
"data_title": "relief_san_andres",
"data_type": "tif",
},
)
self.assertTrue(isinstance(res, Dataset))
_copy_assert_resource(res, "Testing Dataset 2")
Expand Down
7 changes: 5 additions & 2 deletions geonode/resource/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -243,10 +243,13 @@ def update_resource(
]

to_update.update(defaults)
resource_dict = { # TODO: cleanup params and dicts
k: v for k, v in to_update.items() if k not in ("data_title", "data_type", "description", "files", "link_type")
}
try:
instance.get_real_concrete_instance_class().objects.filter(id=instance.id).update(**to_update)
instance.get_real_concrete_instance_class().objects.filter(id=instance.id).update(**resource_dict)
except Exception as e:
logger.error(f"{e} - {to_update}")
logger.error(f"{e} - {resource_dict}")
raise

# Check for "remote services" availability
Expand Down
28 changes: 26 additions & 2 deletions geonode/security/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,11 @@
import json
import base64
import logging
import os
import requests
import importlib
import mock
import gisdata

from requests.auth import HTTPBasicAuth
from tastypie.test import ResourceTestCaseMixin
Expand All @@ -39,7 +41,9 @@
from guardian.shortcuts import assign_perm, get_anonymous_user

from geonode import geoserver
from geonode.geoserver.helpers import geofence, gf_utils
from geonode.geoserver.helpers import geofence, gf_utils, gs_catalog
from geonode.geoserver.manager import GeoServerResourceManager
from geonode.layers.utils import get_files
from geonode.maps.models import Map
from geonode.layers.models import Dataset
from geonode.documents.models import Document
Expand Down Expand Up @@ -741,8 +745,19 @@ def test_perm_specs_synchronization(self):
@on_ogc_backend(geoserver.BACKEND_PACKAGE)
def test_dataset_permissions(self):
# Test permissions on a layer
files = os.path.join(gisdata.GOOD_DATA, "vector/san_andres_y_providencia_poi.shp")
files_as_dict, self.tmpdir = get_files(files)

bobby = get_user_model().objects.get(username="bobby")
layer = create_single_dataset("san_andres_y_providencia_poi")
layer = create_single_dataset(
"san_andres_y_providencia_poi",
{
"owner": self.user,
"title": "Testing Dataset",
"data_title": "relief_san_andres",
"data_type": "tif",
},
)
layer = resource_manager.update(
layer.uuid, instance=layer, notify=False, vals=dict(owner=bobby, workspace=settings.DEFAULT_WORKSPACE)
)
Expand Down Expand Up @@ -773,6 +788,15 @@ def test_dataset_permissions(self):
perm_spec = {"users": {"AnonymousUser": []}, "groups": []}
layer.set_permissions(perm_spec)

gs_layer = gs_catalog.get_layer("3Asan_andres_y_providencia_poi")
if gs_layer is None:
GeoServerResourceManager()._execute_resource_import(
layer,
list(files_as_dict.values()),
get_user_model().objects.get(username="admin"),
action_type="create",
)

url = (
f"{settings.GEOSERVER_LOCATION}ows?"
"LAYERS=geonode%3Asan_andres_y_providencia_poi&STYLES="
Expand Down
2 changes: 0 additions & 2 deletions geonode/tests/csw.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,6 @@ def test_csw_outputschema_dc(self):

csw = get_catalogue()



# search for 'san_andres_y_providencia_location', output as Dublin Core
dataset_query_like = PropertyIsLike("csw:AnyText", "%san_andres_y_providencia_location%")
csw.catalogue.getrecords2(
Expand Down

0 comments on commit 7737447

Please sign in to comment.