Skip to content

Commit 18ba781

Browse files
authored
OLMIS-8140: Added endpoint for fetching auth users (needed for user i… (#21)
* OLMIS-8140: Added endpoint for fetching auth users (needed for user import) * OLMIS-8140: Added endpoint test * OLMIS-8140: Changed returned list of User to list of UserDto
1 parent 8324ef4 commit 18ba781

File tree

5 files changed

+77
-5
lines changed

5 files changed

+77
-5
lines changed

src/integration-test/java/org/openlmis/auth/web/UserControllerIntegrationTest.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import com.google.common.collect.ImmutableList;
4444
import com.jayway.restassured.response.ValidatableResponse;
4545
import guru.nidi.ramltester.junit.RamlMatchers;
46+
import io.restassured.mapper.TypeRef;
4647
import java.time.ZonedDateTime;
4748
import java.util.Arrays;
4849
import java.util.HashSet;
@@ -92,9 +93,9 @@ public class UserControllerIntegrationTest extends BaseWebIntegrationTest {
9293
private static final String CHANGE_PASS_URL = RESOURCE_URL + "/changePassword";
9394
private static final String RESET_TOKEN_PASS_URL = RESOURCE_URL + "/passwordResetToken";
9495
private static final String LOGOUT_URL = RESOURCE_URL + "/logout";
95-
9696
private static final String TOKEN_URL = "/api/oauth/token";
9797
private static final String PASS_FIELD = "newPassword";
98+
private static final String CONTENT_TYPE_HEADER = "Content-Type";
9899

99100
@Autowired
100101
private UserRepository userRepository;
@@ -389,7 +390,7 @@ public void shouldSaveUsers() {
389390
List<UserDto> requestBody = Arrays.asList(user1, user2);
390391

391392
UserAuthDetailsResponseDto response = startRequest(USER_TOKEN)
392-
.header("Content-Type", "application/json")
393+
.header(CONTENT_TYPE_HEADER, APPLICATION_JSON_VALUE)
393394
.body(requestBody)
394395
.given()
395396
.post(BATCH_RESOURCE_URL)
@@ -424,7 +425,7 @@ public void shouldNotSaveUsersWithEmptyUsername() {
424425
List<UserDto> requestBody = Arrays.asList(convertToDto(savedUser1), convertToDto(savedUser2));
425426

426427
UserAuthDetailsResponseDto response = startRequest(USER_TOKEN)
427-
.header("Content-Type", "application/json")
428+
.header(CONTENT_TYPE_HEADER, APPLICATION_JSON_VALUE)
428429
.body(requestBody)
429430
.given()
430431
.post(BATCH_RESOURCE_URL)
@@ -451,7 +452,7 @@ public void shouldDeleteAuthDetails() {
451452
idsToRemove.add(savedUser.getId());
452453

453454
startRequest(USER_TOKEN)
454-
.header("Content-Type", "application/json")
455+
.header(CONTENT_TYPE_HEADER, APPLICATION_JSON_VALUE)
455456
.body(idsToRemove)
456457
.given()
457458
.delete(BATCH_RESOURCE_URL);
@@ -460,6 +461,21 @@ public void shouldDeleteAuthDetails() {
460461
assertNull(userAfterRemoving);
461462
}
462463

464+
@Test
465+
public void shouldGetAuthUsers() {
466+
List<UserDto> actual = startRequest(USER_TOKEN)
467+
.header(CONTENT_TYPE_HEADER, APPLICATION_JSON_VALUE)
468+
.when()
469+
.get(BATCH_RESOURCE_URL)
470+
.then()
471+
.statusCode(200)
472+
.extract()
473+
.body()
474+
.as(new TypeRef<List<UserDto>>() {}.getTypeAsClass());
475+
476+
assertEquals(1, actual.size());
477+
}
478+
463479
private ValidatableResponse passwordReset(String password, String token) {
464480
return passwordReset(DummyUserMainDetailsDto.USERNAME, password, token);
465481
}

src/main/java/org/openlmis/auth/dto/UserDto.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,17 @@ public final class UserDto implements User.Importer, User.Exporter {
3636
private String password;
3737
private Boolean enabled;
3838
private boolean lockedOut;
39+
40+
/**
41+
* Creates UserDto object with given params.
42+
*
43+
* @param id user id
44+
* @param username username
45+
* @param enabled is user enabled
46+
*/
47+
public UserDto(UUID id, String username, Boolean enabled) {
48+
this.id = id;
49+
this.username = username;
50+
this.enabled = enabled;
51+
}
3952
}

src/main/java/org/openlmis/auth/service/UserService.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import java.util.Set;
2323
import java.util.UUID;
2424
import java.util.stream.Collectors;
25+
import java.util.stream.StreamSupport;
26+
2527
import org.openlmis.auth.domain.User;
2628
import org.openlmis.auth.dto.SaveBatchResultDto;
2729
import org.openlmis.auth.dto.UserAuthDetailsResponseDto;
@@ -100,6 +102,17 @@ public SaveBatchResultDto<UserAuthDetailsResponseDto.UserAuthResponse> saveAuthU
100102
return new SaveBatchResultDto<>(successfulResults, failedResults);
101103
}
102104

105+
/**
106+
* Gets user auth details.
107+
*
108+
* @return user auth details
109+
*/
110+
@Transactional
111+
public List<User> findAll() {
112+
return StreamSupport.stream(userRepository.findAll().spliterator(), false)
113+
.collect(Collectors.toList());
114+
}
115+
103116
/**
104117
* Deletes user auth details.
105118
*

src/main/java/org/openlmis/auth/web/UserController.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.util.Optional;
2828
import java.util.Set;
2929
import java.util.UUID;
30+
import java.util.stream.Collectors;
3031

3132
import org.openlmis.auth.domain.PasswordResetToken;
3233
import org.openlmis.auth.domain.User;
@@ -63,6 +64,7 @@
6364
import org.springframework.validation.Validator;
6465
import org.springframework.web.bind.WebDataBinder;
6566
import org.springframework.web.bind.annotation.DeleteMapping;
67+
import org.springframework.web.bind.annotation.GetMapping;
6668
import org.springframework.web.bind.annotation.InitBinder;
6769
import org.springframework.web.bind.annotation.PathVariable;
6870
import org.springframework.web.bind.annotation.RequestBody;
@@ -297,12 +299,28 @@ public UUID generatePasswordResetToken(
297299
return token.getId();
298300
}
299301

302+
/**
303+
* Gets all user auth details.
304+
*
305+
* @return all auth user details dto objects
306+
*/
307+
@GetMapping(value = "/users/auth/batch")
308+
@ResponseStatus(HttpStatus.OK)
309+
@ResponseBody
310+
public List<UserDto> getAllAuthUsers() {
311+
List<User> users = userService.findAll();
312+
313+
return users.stream()
314+
.map(user -> new UserDto(user.getId(), user.getUsername(), user.getEnabled()))
315+
.collect(Collectors.toList());
316+
}
317+
300318
/**
301319
* Deletes auth users.
302320
*
303321
* @param userIds user ids for which auth users will be deleted
304322
*/
305-
@DeleteMapping(value = "users/auth/batch")
323+
@DeleteMapping(value = "/users/auth/batch")
306324
@ResponseStatus(HttpStatus.OK)
307325
public void deleteAuthUsersByIds(@RequestBody Set<UUID> userIds) {
308326
userService.deleteByUserIds(userIds);

src/test/java/org/openlmis/auth/service/UserServiceTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,15 @@
1515

1616
package org.openlmis.auth.service;
1717

18+
import static org.junit.Assert.assertEquals;
1819
import static org.mockito.BDDMockito.given;
1920
import static org.mockito.Matchers.any;
2021
import static org.mockito.Mockito.mock;
2122
import static org.mockito.Mockito.verify;
2223
import static org.mockito.Mockito.when;
2324

25+
import java.util.Arrays;
26+
import java.util.List;
2427
import java.util.Optional;
2528
import java.util.UUID;
2629
import org.junit.Before;
@@ -88,4 +91,13 @@ public void shouldUpdateExistingUser() {
8891
verify(oldUser).updateFrom(request);
8992
}
9093

94+
@Test
95+
public void shouldFindAllAuthUsers() {
96+
when(userRepository.findAll()).thenReturn(Arrays.asList(new User(), new User()));
97+
98+
List<User> result = userService.findAll();
99+
100+
assertEquals(2, result.size());
101+
verify(userRepository).findAll();
102+
}
91103
}

0 commit comments

Comments
 (0)