diff options
Diffstat (limited to 'ufund-api/src')
3 files changed, 50 insertions, 21 deletions
diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java index 12fb0a9..075878a 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java @@ -1,6 +1,7 @@  package com.ufund.api.ufundapi.controller;  import java.io.IOException; +import java.util.List;  import java.util.Map;  import java.util.logging.Level;  import java.util.logging.Logger; @@ -189,12 +190,22 @@ public class CupboardController {       * @return OK if successful, other statuses if failure       */      @PutMapping("/checkout") -    public ResponseEntity<Object> checkoutNeeds(@RequestBody Map<String, Integer> data, @RequestHeader("jelly-api-key") String key) { -        int needID = data.get("needID"); -        int checkoutAmount = data.get("amount"); -        LOG.log(Level.INFO, "PUT /need/checkout body={0}", data); +    public ResponseEntity<Object> checkoutNeeds(@RequestBody List<Map<String, Integer>> data, @RequestHeader("jelly-api-key") String key) { +        LOG.log(Level.INFO, "PUT /cupboard/checkout body={0}", data);          try { -            cupboardService.checkoutNeed(needID, checkoutAmount, key); +            authService.keyIsValid(key); + +            for (Map<String, Integer> map : data) { +                int needID = map.get("needID"); +                if (cupboardService.getNeed(needID) == null) { +                    return new ResponseEntity<>("One or more need is invalid, please refresh.", HttpStatus.BAD_REQUEST); +                } +            } +            for (Map<String, Integer> map : data) { +                int needID = map.get("needID"); +                int checkoutAmount = map.get("quantity"); +                cupboardService.checkoutNeed(needID, checkoutAmount, key); +            }              return new ResponseEntity<>(HttpStatus.OK);          } catch (IllegalArgumentException ex) {              LOG.log(Level.WARNING, ex.getLocalizedMessage()); diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java index c6e622c..6953276 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java @@ -108,7 +108,7 @@ public class UserController {          try {              authService.keyHasAccessToCupboard(key); -            int count = userService.getUserCount(); +            String count = String.valueOf(userService.getUserCount());              return new ResponseEntity<>(count, HttpStatus.OK);          } catch (IllegalAccessException ex) {              LOG.log(Level.WARNING, ex.getLocalizedMessage()); diff --git a/ufund-api/src/test/java/com/ufund/api/ufundapi/controller/CupboardControllerTest.java b/ufund-api/src/test/java/com/ufund/api/ufundapi/controller/CupboardControllerTest.java index 8572ec6..7ea4455 100644 --- a/ufund-api/src/test/java/com/ufund/api/ufundapi/controller/CupboardControllerTest.java +++ b/ufund-api/src/test/java/com/ufund/api/ufundapi/controller/CupboardControllerTest.java @@ -1,6 +1,7 @@  package com.ufund.api.ufundapi.controller;  import java.io.IOException; +import java.util.List;  import java.util.Map;  import static java.util.Map.entry; @@ -418,12 +419,14 @@ public class CupboardControllerTest {      @Test      public void checkoutNeeds() throws IOException, IllegalAccessException { +        when(mockCupboardService.getNeed(0)).thenReturn(new Need("name", "image", "location", 0, 10, GoalType.MONETARY, true, "a"));          doNothing().when(mockCupboardService).checkoutNeed(0, 20, key); - -        Map<String, Integer> needMap = Map.ofEntries( -                entry("needID", 0), -                entry("amount", 20) +        var needMap = List.of( +                Map.ofEntries( +                        entry("needID", 0), +                        entry("quantity", 20) +                )          );          var res = cupboardController.checkoutNeeds(needMap, key); @@ -435,9 +438,15 @@ public class CupboardControllerTest {      public void checkoutNeedsBadRequest() throws IOException, IllegalAccessException {          doThrow(new IllegalArgumentException()).when(mockCupboardService).checkoutNeed(0, 20, key); -        Map<String, Integer> needMap = Map.ofEntries( -                entry("needID", 0), -                entry("amount", 20) +        var needMap = List.of( +                Map.ofEntries( +                        entry("needID", 0), +                        entry("quantity", 20) +                ), +                Map.ofEntries( +                        entry("needID", 2), +                        entry("quantity", 30) +                )          );          var res = cupboardController.checkoutNeeds(needMap, key); @@ -447,11 +456,17 @@ public class CupboardControllerTest {      @Test      public void checkoutNeedsUnauthorized() throws IOException, IllegalAccessException { -        doThrow(new IllegalAccessException()).when(mockCupboardService).checkoutNeed(0, 20, key); - -        Map<String, Integer> needMap = Map.ofEntries( -                entry("needID", 0), -                entry("amount", 20) +        doThrow(new IllegalAccessException()).when(mockAuthService).keyIsValid(key); + +        var needMap = List.of( +                Map.ofEntries( +                        entry("needID", 0), +                        entry("quantity", 20) +                ), +                Map.ofEntries( +                        entry("needID", 2), +                        entry("quantity", 30) +                )          );          var res = cupboardController.checkoutNeeds(needMap, key); @@ -461,11 +476,14 @@ public class CupboardControllerTest {      @Test      public void checkoutNeedsInternalError() throws IOException, IllegalAccessException { +        when(mockCupboardService.getNeed(0)).thenReturn(new Need("name", "image", "location", 0, 10, GoalType.MONETARY, true, "a"));          doThrow(new IOException()).when(mockCupboardService).checkoutNeed(0, 20, key); -        Map<String, Integer> needMap = Map.ofEntries( -                entry("needID", 0), -                entry("amount", 20) +        var needMap = List.of( +                Map.ofEntries( +                        entry("needID", 0), +                        entry("quantity", 20) +                )          );          var res = cupboardController.checkoutNeeds(needMap, key);  | 
