mirror of https://github.com/halo-dev/halo
Handle ghost users in user retrieval logic
parent
bdbbbdf3af
commit
0b275dfe81
|
@ -105,7 +105,15 @@ public class UserServiceImpl implements UserService {
|
||||||
var options = ListOptions.builder()
|
var options = ListOptions.builder()
|
||||||
.andQuery(QueryFactory.in("metadata.name", nameSet))
|
.andQuery(QueryFactory.in("metadata.name", nameSet))
|
||||||
.build();
|
.build();
|
||||||
return client.listAll(User.class, options, defaultSort());
|
return client.listAll(User.class, options, defaultSort())
|
||||||
|
.collectMap(u -> u.getMetadata().getName())
|
||||||
|
.map(map -> {
|
||||||
|
var ghost = map.get(GHOST_USER_NAME);
|
||||||
|
return names.stream()
|
||||||
|
.map(name -> map.getOrDefault(name, ghost))
|
||||||
|
.toList();
|
||||||
|
})
|
||||||
|
.flatMapMany(Flux::fromIterable);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -22,6 +22,7 @@ import static org.mockito.Mockito.when;
|
||||||
import static run.halo.app.extension.GroupVersionKind.fromExtension;
|
import static run.halo.app.extension.GroupVersionKind.fromExtension;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import org.junit.jupiter.api.DisplayName;
|
import org.junit.jupiter.api.DisplayName;
|
||||||
import org.junit.jupiter.api.Nested;
|
import org.junit.jupiter.api.Nested;
|
||||||
|
@ -46,6 +47,7 @@ import run.halo.app.core.user.service.RoleService;
|
||||||
import run.halo.app.core.user.service.SignUpData;
|
import run.halo.app.core.user.service.SignUpData;
|
||||||
import run.halo.app.core.user.service.UserPostCreatingHandler;
|
import run.halo.app.core.user.service.UserPostCreatingHandler;
|
||||||
import run.halo.app.core.user.service.UserPreCreatingHandler;
|
import run.halo.app.core.user.service.UserPreCreatingHandler;
|
||||||
|
import run.halo.app.core.user.service.UserService;
|
||||||
import run.halo.app.event.user.PasswordChangedEvent;
|
import run.halo.app.event.user.PasswordChangedEvent;
|
||||||
import run.halo.app.extension.ListOptions;
|
import run.halo.app.extension.ListOptions;
|
||||||
import run.halo.app.extension.Metadata;
|
import run.halo.app.extension.Metadata;
|
||||||
|
@ -108,6 +110,19 @@ class UserServiceImplTest {
|
||||||
verify(client, times(1)).get(eq(User.class), eq("faker"));
|
verify(client, times(1)).get(eq(User.class), eq("faker"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldGetGhostsIfUsersContainDeleted() {
|
||||||
|
var fakeUser1 = createUser("fake-user1", "fake-password");
|
||||||
|
var fakeUser2 = createUser("fake-user2", "fake-password");
|
||||||
|
var ghost = createUser(UserService.GHOST_USER_NAME, "fake-password");
|
||||||
|
when(client.listAll(eq(User.class), any(ListOptions.class), any(Sort.class)))
|
||||||
|
.thenReturn(Flux.just(fakeUser1, fakeUser2, ghost));
|
||||||
|
userService.getUsersOrGhosts(List.of("fake-user1", "deleted-user", "fake-user2"))
|
||||||
|
.as(StepVerifier::create)
|
||||||
|
.expectNext(fakeUser1, ghost, fakeUser2)
|
||||||
|
.verifyComplete();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void shouldUpdatePasswordIfUserFoundInExtension() {
|
void shouldUpdatePasswordIfUserFoundInExtension() {
|
||||||
var fakeUser = new User();
|
var fakeUser = new User();
|
||||||
|
@ -228,16 +243,20 @@ class UserServiceImplTest {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
User createUser(String password) {
|
User createUser(String username, String password) {
|
||||||
var user = new User();
|
var user = new User();
|
||||||
Metadata metadata = new Metadata();
|
Metadata metadata = new Metadata();
|
||||||
metadata.setName("fake-user");
|
metadata.setName(username);
|
||||||
user.setMetadata(metadata);
|
user.setMetadata(metadata);
|
||||||
user.setSpec(new User.UserSpec());
|
user.setSpec(new User.UserSpec());
|
||||||
user.getSpec().setPassword(password);
|
user.getSpec().setPassword(password);
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
User createUser(String password) {
|
||||||
|
return createUser("fake-user", password);
|
||||||
|
}
|
||||||
|
|
||||||
@Nested
|
@Nested
|
||||||
class GrantRolesTest {
|
class GrantRolesTest {
|
||||||
|
|
||||||
|
@ -496,4 +515,5 @@ class UserServiceImplTest {
|
||||||
.expectNext(true)
|
.expectNext(true)
|
||||||
.verifyComplete();
|
.verifyComplete();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue