diff --git a/CHANGES.md b/CHANGES.md
index 2373142..9d6ee02 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -3,7 +3,7 @@
## 0.10 (unreleased)
-- Nothing changed yet.
+- Added gmw/gmn/upload/import
## 0.9 (2024-04-23)
diff --git a/api/tests/test_bro_import.py b/api/tests/test_bro_import.py
index c8a1dcc..3fc86e2 100644
--- a/api/tests/test_bro_import.py
+++ b/api/tests/test_bro_import.py
@@ -1,8 +1,8 @@
import pytest
from django.conf import settings
-from requests.exceptions import RequestException
+from requests.exceptions import HTTPError, RequestException
-from api.bro_import import bulk_import
+from api.bro_import import bulk_import, object_import
from api.tests import fixtures
organisation = fixtures.organisation
@@ -44,3 +44,63 @@ def test_fetch_bro_ids_fail(mocker, bulk_importer):
with pytest.raises(bulk_import.FetchBROIDsError):
bulk_importer._fetch_bro_ids("url.com")
+
+
+@pytest.fixture
+def gmn_object_importer(organisation):
+ return object_import.GMNObjectImporter(
+ bro_domain="GMN", bro_id="GMN1234567890", data_owner=organisation.uuid
+ )
+
+
+@pytest.mark.django_db
+def test_object_importer_create_download_url(gmn_object_importer):
+ url = gmn_object_importer._create_download_url()
+
+ assert (
+ url
+ == f"{settings.BRO_UITGIFTE_SERVICE_URL}/gm/gmn/v1/objects/GMN1234567890?fullHistory=nee"
+ )
+
+
+@pytest.mark.django_db
+def test_object_importer_download_xml(mocker, gmn_object_importer):
+ expected_content = b"fake_data"
+ mock_get = mocker.patch("requests.get")
+ mock_response = mocker.Mock()
+ mock_response.raise_for_status = mocker.Mock()
+ mock_response.content = expected_content
+ mock_get.return_value = mock_response
+
+ # Test
+ url = "https://example.com/data.xml"
+ result = gmn_object_importer._download_xml(url)
+
+ # Assert
+ assert result == expected_content
+
+
+@pytest.mark.django_db
+def test_download_xml_http_error(mocker, gmn_object_importer):
+ # Setup
+ mock_get = mocker.patch("requests.get")
+ mock_response = mocker.Mock()
+ mock_response.raise_for_status.side_effect = HTTPError("Error occurred")
+ mock_get.return_value = mock_response
+
+ # Test
+ url = "https://example.com/data.xml"
+
+ # Assert that an HTTPError is raised
+ with pytest.raises(HTTPError):
+ gmn_object_importer._download_xml(url)
+
+
+@pytest.mark.django_db
+def test_convert_xml_to_json(gmn_object_importer):
+ xml = b"fake_data"
+ expected_json = {"xml": "fake_data"}
+
+ json_data = gmn_object_importer._convert_xml_to_json(xml)
+
+ assert json_data == expected_json
diff --git a/api/tests/test_bro_upload.py b/api/tests/test_bro_upload.py
index 309fe33..1b38aa7 100644
--- a/api/tests/test_bro_upload.py
+++ b/api/tests/test_bro_upload.py
@@ -1,6 +1,6 @@
import pytest
-from api.bro_upload import delivery
+from api.bro_upload import delivery, utils
expected_xml_str = """