Skip to content

Commit 933c92f

Browse files
authored
Merge pull request #13 from TAMULib/sprint2-b03258-dynamic-shortlist
Sprint2 b03258 dynamic shortlist
2 parents 71223d8 + b83c70a commit 933c92f

3 files changed

Lines changed: 43 additions & 7 deletions

File tree

src/main/java/edu/tamu/app/controller/ServiceController.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,26 @@
66
import static edu.tamu.framework.enums.BusinessValidationType.EXISTS;
77
import static edu.tamu.framework.enums.BusinessValidationType.NONEXISTS;
88
import static edu.tamu.framework.enums.BusinessValidationType.UPDATE;
9+
import static edu.tamu.app.enums.AppRole.ROLE_ANONYMOUS;
10+
import static edu.tamu.app.enums.AppRole.ROLE_USER;
911

1012
import org.springframework.beans.factory.annotation.Autowired;
1113
import org.springframework.messaging.simp.SimpMessagingTemplate;
1214
import org.springframework.web.bind.annotation.RestController;
1315

16+
import edu.tamu.app.model.AppUser;
1417
import edu.tamu.app.model.Service;
18+
import edu.tamu.app.model.repo.AppUserRepo;
1519
import edu.tamu.app.model.repo.ServiceRepo;
1620
import edu.tamu.app.service.SystemMonitorService;
21+
import edu.tamu.framework.aspect.annotation.ApiCredentials;
1722
import edu.tamu.framework.aspect.annotation.ApiMapping;
1823
import edu.tamu.framework.aspect.annotation.ApiValidatedModel;
1924
import edu.tamu.framework.aspect.annotation.ApiValidation;
2025
import edu.tamu.framework.aspect.annotation.ApiVariable;
2126
import edu.tamu.framework.aspect.annotation.Auth;
2227
import edu.tamu.framework.model.ApiResponse;
28+
import edu.tamu.framework.model.Credentials;
2329

2430
@RestController
2531
@ApiMapping("/service")
@@ -34,6 +40,9 @@ public class ServiceController {
3440
@Autowired
3541
private SystemMonitorService systemMonitorService;
3642

43+
@Autowired
44+
private AppUserRepo userRepo;
45+
3746
@ApiMapping("/all")
3847
@Auth(role="ROLE_ANONYMOUS")
3948
public ApiResponse getAllServices() {
@@ -56,23 +65,32 @@ public ApiResponse getService(@ApiVariable Long id) {
5665
@ApiMapping("/create")
5766
@Auth(role = "ROLE_SERVICE_MANAGER")
5867
@ApiValidation(business = { @ApiValidation.Business(value = CREATE), @ApiValidation.Business(value = EXISTS) })
59-
public ApiResponse createService(@ApiValidatedModel Service service) {
68+
public ApiResponse createService(@ApiValidatedModel Service service, @ApiCredentials Credentials credentials) {
6069
service = serviceRepo.create(service.getName(), service.getStatus(), service.getIsAuto(), service.getIsPublic(), service.getOnShortList(), service.getServiceUrl(), service.getDescription());
6170
simpMessagingTemplate.convertAndSend("/channel/service", new ApiResponse(SUCCESS, serviceRepo.findAll()));
62-
systemMonitorService.updateAll();
71+
sendStatusUpdate(service, credentials);
6372
return new ApiResponse(SUCCESS, service);
6473
}
6574

6675
@ApiMapping("/update")
6776
@Auth(role = "ROLE_SERVICE_MANAGER")
6877
@ApiValidation(business = { @ApiValidation.Business(value = UPDATE), @ApiValidation.Business(value = NONEXISTS) })
69-
public ApiResponse updateService(@ApiValidatedModel Service service) {
78+
public ApiResponse updateService(@ApiValidatedModel Service service, @ApiCredentials Credentials credentials) {
7079
service = serviceRepo.save(service);
7180
simpMessagingTemplate.convertAndSend("/channel/service/" + service.getId(), new ApiResponse(SUCCESS, service));
72-
systemMonitorService.updateAll();
81+
sendStatusUpdate(service, credentials);
7382
return new ApiResponse(SUCCESS, service);
7483
}
7584

85+
private void sendStatusUpdate(Service service, Credentials credentials) {
86+
AppUser user = userRepo.findByUin(credentials.getUin());
87+
if (user.getRole() == ROLE_ANONYMOUS || user.getRole() == ROLE_USER) {
88+
simpMessagingTemplate.convertAndSend("/channel/status/overall-public", new ApiResponse(SUCCESS, systemMonitorService.getOverallStatusPublic()));
89+
} else {
90+
simpMessagingTemplate.convertAndSend("/channel/status/overall-full", new ApiResponse(SUCCESS, systemMonitorService.getOverallStatus()));
91+
}
92+
}
93+
7694
@ApiMapping("/remove")
7795
@Auth(role = "ROLE_SERVICE_MANAGER")
7896
@ApiValidation(business = { @ApiValidation.Business(value = DELETE), @ApiValidation.Business(value = NONEXISTS) })

src/main/java/edu/tamu/app/service/SystemMonitorService.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,5 +79,4 @@ protected Status getServiceStatus(String serviceUrl) throws MalformedURLExceptio
7979
List<Map<String,String>> mappedStatusResponse = objectMapper.readValue(rawStatusResponse, new TypeReference<List<Map<String, String>>>(){});
8080
return Status.valueOf(mappedStatusResponse.get(0).get("service").toUpperCase());
8181
}
82-
8382
}

src/test/java/controller/ServiceControllerTest.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,14 @@
2323

2424
import edu.tamu.app.controller.ServiceController;
2525
import edu.tamu.app.enums.Status;
26+
import edu.tamu.app.model.AppUser;
27+
import edu.tamu.app.model.OverallStatus;
2628
import edu.tamu.app.model.Service;
29+
import edu.tamu.app.model.repo.AppUserRepo;
2730
import edu.tamu.app.model.repo.ServiceRepo;
31+
import edu.tamu.app.service.SystemMonitorService;
2832
import edu.tamu.framework.model.ApiResponse;
33+
import edu.tamu.framework.model.Credentials;
2934

3035
@ActiveProfiles("test")
3136
@RunWith(SpringRunner.class)
@@ -50,6 +55,8 @@ public class ServiceControllerTest {
5055

5156
protected static ApiResponse response;
5257

58+
protected static AppUser user = new AppUser("123456789");
59+
5360
@Mock
5461
protected ServiceRepo serviceRepo;
5562

@@ -59,9 +66,21 @@ public class ServiceControllerTest {
5966
@InjectMocks
6067
protected ServiceController serviceController;
6168

69+
@Mock
70+
protected static Credentials credentials;
71+
72+
@Mock
73+
protected AppUserRepo userRepo;
74+
75+
@Mock
76+
protected SystemMonitorService systemMonitorService;
77+
6278
@Before
6379
public void setUp() {
6480
MockitoAnnotations.initMocks(this);
81+
when(credentials.getUin()).thenReturn("123456789");
82+
when(userRepo.findByUin(any(String.class))).thenReturn(user);
83+
when(systemMonitorService.getOverallStatus()).thenReturn(new OverallStatus(edu.tamu.app.enums.OverallMessageType.SUCCESS, "Success"));
6584
when(serviceRepo.findAll()).thenReturn(mockServiceList);
6685
when(serviceRepo.findByIsPublic(true)).thenReturn(mockPublicServiceList);
6786
when(serviceRepo.findOne(any(Long.class))).thenReturn(TEST_SERVICE1);
@@ -109,15 +128,15 @@ public void testService() {
109128

110129
@Test
111130
public void testCreate() {
112-
response = serviceController.createService(TEST_SERVICE1);
131+
response = serviceController.createService(TEST_SERVICE1, credentials);
113132
assertEquals("Not sucessful at creating Service", SUCCESS, response.getMeta().getType());
114133
Service service = (Service) response.getPayload().get("Service");
115134
assertEquals("Incorrect service returned", TEST_SERVICE1.getName(), service.getName());
116135
}
117136

118137
@Test
119138
public void testUpdate() {
120-
response = serviceController.updateService(TEST_MODIFIED_SERVICE1);
139+
response = serviceController.updateService(TEST_MODIFIED_SERVICE1, credentials);
121140
assertEquals("Not successful at updating service", SUCCESS, response.getMeta().getType());
122141
Service service = (Service) response.getPayload().get("Service");
123142
assertEquals("Service name was not properly updated", TEST_MODIFIED_SERVICE1.getName(), service.getName());

0 commit comments

Comments
 (0)