From 3b7502709c487c8699ad8847c84a990e67e5b4dc Mon Sep 17 00:00:00 2001
From: lpapadopoulos <lpapadopoulos@ubitech.eu>
Date: Tue, 9 Apr 2024 15:00:04 +0300
Subject: [PATCH] tmf 674 api enhancements + new test

---
 .../gsm674/api/GeographicSiteManagementApi.java  |  2 +-
 .../GeographicSiteManagementApiController.java   | 16 +++++++++++++++-
 .../GeographicSiteManagementService.java         |  6 ++++--
 ...eographicSiteManagementApiControllerTest.java | 15 +++++++++++----
 .../GeographicSiteManagementServiceTest.java     |  5 ++---
 5 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/src/main/java/org/etsi/osl/tmf/gsm674/api/GeographicSiteManagementApi.java b/src/main/java/org/etsi/osl/tmf/gsm674/api/GeographicSiteManagementApi.java
index c2661e8..c50b604 100644
--- a/src/main/java/org/etsi/osl/tmf/gsm674/api/GeographicSiteManagementApi.java
+++ b/src/main/java/org/etsi/osl/tmf/gsm674/api/GeographicSiteManagementApi.java
@@ -170,7 +170,7 @@ public interface GeographicSiteManagementApi {
             produces = { "application/json" },
             consumes = { "application/json" },
             method = RequestMethod.GET)
-    default ResponseEntity<GeographicSite> retrieveGeographicSite() {
+    default ResponseEntity<GeographicSite> retrieveGeographicSite(@Parameter(description = "Identifier of the Geographic site",required=true) @PathVariable("id") String id) {
         if(getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
             if (getAcceptHeader().get().contains("application/json")) {
                 try {
diff --git a/src/main/java/org/etsi/osl/tmf/gsm674/api/GeographicSiteManagementApiController.java b/src/main/java/org/etsi/osl/tmf/gsm674/api/GeographicSiteManagementApiController.java
index fb9fade..23f1be2 100644
--- a/src/main/java/org/etsi/osl/tmf/gsm674/api/GeographicSiteManagementApiController.java
+++ b/src/main/java/org/etsi/osl/tmf/gsm674/api/GeographicSiteManagementApiController.java
@@ -27,7 +27,7 @@ public class GeographicSiteManagementApiController implements GeographicSiteMana
         this.geographicSiteManagementService = geographicSiteManagementService;
     }
 
-//    @PreAuthorize("hasAnyAuthority('ROLE_USER')" )
+    @PreAuthorize("hasAnyAuthority('ROLE_USER')" )
     @Override
     public ResponseEntity<List<GeographicSite>> listGeographicSite() {
 
@@ -41,6 +41,20 @@ public class GeographicSiteManagementApiController implements GeographicSiteMana
         }
     }
 
+    @PreAuthorize("hasAnyAuthority('ROLE_USER')" )
+    @Override
+    public ResponseEntity<GeographicSite> retrieveGeographicSite(@PathVariable("id") String id) {
+
+
+        try {
+            return new ResponseEntity<>(geographicSiteManagementService.findGeographicSiteByUUID(id), HttpStatus.OK);
+
+        } catch (Exception e) {
+            log.error(COULD_NOT_SERIALIZE, e);
+            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+        }
+    }
+
     @PreAuthorize("hasAnyAuthority('ROLE_USER')" )
     @Override
     public ResponseEntity<GeographicSite> createGeographicSite(
diff --git a/src/main/java/org/etsi/osl/tmf/gsm674/reposervices/GeographicSiteManagementService.java b/src/main/java/org/etsi/osl/tmf/gsm674/reposervices/GeographicSiteManagementService.java
index 68a3ead..3b36430 100644
--- a/src/main/java/org/etsi/osl/tmf/gsm674/reposervices/GeographicSiteManagementService.java
+++ b/src/main/java/org/etsi/osl/tmf/gsm674/reposervices/GeographicSiteManagementService.java
@@ -31,8 +31,10 @@ public class GeographicSiteManagementService {
         return (List<GeographicSite>) geographicSiteManagementRepository.findAll();
     }
 
-    public Optional<GeographicSite> findGeographicSiteByUUID(String uuid){
-        return geographicSiteManagementRepository.findByUuid(uuid);
+    public GeographicSite findGeographicSiteByUUID(String uuid){
+        Optional<GeographicSite> gs=geographicSiteManagementRepository.findByUuid(uuid);
+        return gs.orElse(null);
+
     }
 
    public GeographicSite createGeographicSite(GeographicSite geographicSite){
diff --git a/src/test/java/org/etsi/osl/services/api/gsm674/GeographicSiteManagementApiControllerTest.java b/src/test/java/org/etsi/osl/services/api/gsm674/GeographicSiteManagementApiControllerTest.java
index cdbb474..04878fd 100644
--- a/src/test/java/org/etsi/osl/services/api/gsm674/GeographicSiteManagementApiControllerTest.java
+++ b/src/test/java/org/etsi/osl/services/api/gsm674/GeographicSiteManagementApiControllerTest.java
@@ -16,6 +16,8 @@ import org.springframework.http.ResponseEntity;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.ArgumentMatchers.any;
@@ -52,12 +54,17 @@ class GeographicSiteManagementApiControllerTest {
     }
 
     @Test
-    void throwExceptionTestWhenRetrieveGeographicSites(){
-        when(service.findAllGeographicSites()).thenThrow(RuntimeException.class);
-        ResponseEntity<GeographicSite> response = controller.retrieveGeographicSite();
-        assertEquals(HttpStatus.NOT_IMPLEMENTED, response.getStatusCode());
+    void testFetchGeographicSite() {
+        GeographicSite site = new GeographicSite();
+        // Add test data to sites list
+        when(service.findGeographicSiteByUUID("123")).thenReturn(site);
+
+        ResponseEntity<GeographicSite> response = controller.retrieveGeographicSite("123");
 
+        assertEquals(HttpStatus.OK, response.getStatusCode());
+        assertEquals(site, response.getBody());
     }
+
     @Test
     void testCreateGeographicSite() {
         GeographicSite site = new GeographicSite();
diff --git a/src/test/java/org/etsi/osl/services/api/gsm674/GeographicSiteManagementServiceTest.java b/src/test/java/org/etsi/osl/services/api/gsm674/GeographicSiteManagementServiceTest.java
index 7c7952d..0ffbb2c 100644
--- a/src/test/java/org/etsi/osl/services/api/gsm674/GeographicSiteManagementServiceTest.java
+++ b/src/test/java/org/etsi/osl/services/api/gsm674/GeographicSiteManagementServiceTest.java
@@ -49,10 +49,9 @@ class GeographicSiteManagementServiceTest {
         GeographicSite site = new GeographicSite();
         when(repository.findByUuid(uuid)).thenReturn(Optional.of(site));
 
-        Optional<GeographicSite> result = service.findGeographicSiteByUUID(uuid);
+        GeographicSite result = service.findGeographicSiteByUUID(uuid);
 
-        assertTrue(result.isPresent());
-        assertEquals(site, result.get());
+        assertEquals(site, result);
     }
 
     @Test
-- 
GitLab