Skip to content

Commit 5a75399

Browse files
committed
Added a check for at least one recipient and more tests.
1 parent 2457660 commit 5a75399

File tree

3 files changed

+61
-1
lines changed

3 files changed

+61
-1
lines changed

server/src/main/java/com/objectcomputing/checkins/services/kudos/KudosServicesImpl.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,12 @@ public Kudos update(KudosUpdateDTO kudos) {
163163
throw new PermissionException(NOT_AUTHORIZED_MSG);
164164
}
165165

166+
if (kudos.getRecipientMembers() == null ||
167+
kudos.getRecipientMembers().isEmpty()) {
168+
throw new BadArgException(
169+
"Kudos must contain at least one recipient");
170+
}
171+
166172
// Begin modifying the existing kudos to reflect desired changes.
167173
existingKudos.setMessage(kudos.getMessage());
168174

server/src/test/java/com/objectcomputing/checkins/services/kudos/KudosControllerTest.java

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -634,4 +634,56 @@ void testUpdateKudos(boolean supplyTeam, boolean publiclyVisible) {
634634
}
635635
}
636636

637+
@Test
638+
void testUpdateKudosNoPermission() {
639+
// Create a kudos
640+
final Kudos kudos = testCreateKudos(false, true);
641+
642+
KudosUpdateDTO proposed = new KudosUpdateDTO(kudos.getId(),
643+
kudos.getMessage(),
644+
false, recipientMembers);
645+
final HttpRequest<KudosUpdateDTO> request =
646+
HttpRequest.PUT("", proposed).basicAuth(other.getWorkEmail(),
647+
MEMBER_ROLE);
648+
final HttpClientResponseException responseException =
649+
assertThrows(HttpClientResponseException.class,
650+
() -> client.exchange(request, Kudos.class));
651+
652+
assertEquals(HttpStatus.FORBIDDEN, responseException.getStatus());
653+
}
654+
655+
@Test
656+
void testUpdateKudosAdminPermission() {
657+
// Create a kudos
658+
final Kudos kudos = testCreateKudos(false, true);
659+
660+
KudosUpdateDTO proposed = new KudosUpdateDTO(kudos.getId(),
661+
kudos.getMessage(),
662+
false, recipientMembers);
663+
final HttpRequest<KudosUpdateDTO> request =
664+
HttpRequest.PUT("", proposed).basicAuth(admin.getWorkEmail(),
665+
ADMIN_ROLE);
666+
final HttpResponse<Kudos> response = client.exchange(request,
667+
Kudos.class);
668+
assertEquals(HttpStatus.OK, response.getStatus());
669+
}
670+
671+
@Test
672+
void testUpdateKudosNoMembers() {
673+
// Create a kudos
674+
final Kudos kudos = testCreateKudos(false, true);
675+
676+
final List<MemberProfile> members = new ArrayList<>();
677+
KudosUpdateDTO proposed = new KudosUpdateDTO(kudos.getId(),
678+
kudos.getMessage(),
679+
false, members);
680+
final HttpRequest<KudosUpdateDTO> request =
681+
HttpRequest.PUT("", proposed).basicAuth(senderWorkEmail,
682+
MEMBER_ROLE);
683+
final HttpClientResponseException responseException =
684+
assertThrows(HttpClientResponseException.class,
685+
() -> client.exchange(request, Kudos.class));
686+
687+
assertEquals(HttpStatus.BAD_REQUEST, responseException.getStatus());
688+
}
637689
}

web-ui/src/components/kudos_card/KudosCard.jsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,9 @@ const KudosCard = ({ kudos, includeActions, includeEdit, onKudosAction }) => {
344344
Cancel
345345
</Button>
346346
<Button onClick={updateKudosCallback}
347-
disabled={kudosMessage.trim().length == 0} autoFocus>
347+
disabled={kudosMessage.trim().length == 0 ||
348+
kudosRecipientMembers.length == 0}
349+
autoFocus>
348350
Save
349351
</Button>
350352
</DialogActions>

0 commit comments

Comments
 (0)