|
@@ -19,11 +19,11 @@ import org.elasticsearch.xpack.core.security.action.profile.GetProfileAction;
|
|
|
import org.elasticsearch.xpack.core.security.action.profile.GetProfileRequest;
|
|
|
import org.elasticsearch.xpack.core.security.action.profile.GetProfilesResponse;
|
|
|
import org.elasticsearch.xpack.core.security.action.profile.Profile;
|
|
|
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesAction;
|
|
|
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesRequest;
|
|
|
-import org.elasticsearch.xpack.core.security.action.profile.SearchProfilesResponse;
|
|
|
import org.elasticsearch.xpack.core.security.action.profile.SetProfileEnabledAction;
|
|
|
import org.elasticsearch.xpack.core.security.action.profile.SetProfileEnabledRequest;
|
|
|
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesAction;
|
|
|
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesRequest;
|
|
|
+import org.elasticsearch.xpack.core.security.action.profile.SuggestProfilesResponse;
|
|
|
import org.elasticsearch.xpack.core.security.action.profile.UpdateProfileDataAction;
|
|
|
import org.elasticsearch.xpack.core.security.action.profile.UpdateProfileDataRequest;
|
|
|
import org.elasticsearch.xpack.core.security.action.user.PutUserAction;
|
|
@@ -235,7 +235,7 @@ public class ProfileIntegTests extends AbstractProfileIntegTestCase {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- public void testSearchProfiles() {
|
|
|
+ public void testSuggestProfiles() {
|
|
|
final String nativeRacUserPasswordHash = new String(getFastStoredHashAlgoForTests().hash(NATIVE_RAC_USER_PASSWORD));
|
|
|
final Map<String, String> users = Map.of(
|
|
|
"user_foo",
|
|
@@ -258,31 +258,31 @@ public class ProfileIntegTests extends AbstractProfileIntegTestCase {
|
|
|
doActivateProfile(key, NATIVE_RAC_USER_PASSWORD);
|
|
|
});
|
|
|
|
|
|
- final SearchProfilesResponse.ProfileHit[] profiles1 = doSearch("");
|
|
|
+ final SuggestProfilesResponse.ProfileHit[] profiles1 = doSuggest("");
|
|
|
assertThat(extractUsernames(profiles1), equalTo(users.keySet()));
|
|
|
|
|
|
- final SearchProfilesResponse.ProfileHit[] profiles2 = doSearch(randomFrom("super admin", "admin super"));
|
|
|
+ final SuggestProfilesResponse.ProfileHit[] profiles2 = doSuggest(randomFrom("super admin", "admin super"));
|
|
|
assertThat(extractUsernames(profiles2), equalTo(Set.of("user_bar", "user_qux")));
|
|
|
|
|
|
// Prefix match on full name
|
|
|
- final SearchProfilesResponse.ProfileHit[] profiles3 = doSearch("ver");
|
|
|
+ final SuggestProfilesResponse.ProfileHit[] profiles3 = doSuggest("ver");
|
|
|
assertThat(extractUsernames(profiles3), equalTo(Set.of("user_foo", "user_baz")));
|
|
|
|
|
|
// Prefix match on the username
|
|
|
- final SearchProfilesResponse.ProfileHit[] profiles4 = doSearch("user");
|
|
|
+ final SuggestProfilesResponse.ProfileHit[] profiles4 = doSuggest("user");
|
|
|
assertThat(extractUsernames(profiles4), equalTo(users.keySet()));
|
|
|
// Documents scored higher are those with matches in more fields
|
|
|
assertThat(extractUsernames(Arrays.copyOfRange(profiles4, 0, 2)), equalTo(Set.of("user_foo", "user_baz")));
|
|
|
|
|
|
// Match of different terms on different fields
|
|
|
- final SearchProfilesResponse.ProfileHit[] profiles5 = doSearch(randomFrom("admin very", "very admin"));
|
|
|
+ final SuggestProfilesResponse.ProfileHit[] profiles5 = doSuggest(randomFrom("admin very", "very admin"));
|
|
|
assertThat(extractUsernames(profiles5), equalTo(users.keySet()));
|
|
|
|
|
|
// Match email
|
|
|
- final SearchProfilesResponse.ProfileHit[] profiles6 = doSearch(randomFrom("fooem", "fooemail"));
|
|
|
+ final SuggestProfilesResponse.ProfileHit[] profiles6 = doSuggest(randomFrom("fooem", "fooemail"));
|
|
|
assertThat(extractUsernames(profiles6), equalTo(Set.of("user_foo")));
|
|
|
|
|
|
- final SearchProfilesResponse.ProfileHit[] profiles7 = doSearch("example.org");
|
|
|
+ final SuggestProfilesResponse.ProfileHit[] profiles7 = doSuggest("example.org");
|
|
|
assertThat(extractUsernames(profiles7), equalTo(users.keySet()));
|
|
|
}
|
|
|
|
|
@@ -301,7 +301,7 @@ public class ProfileIntegTests extends AbstractProfileIntegTestCase {
|
|
|
assertThat(getProfileIndexResponse().getIndices(), not(hasItemInArray(INTERNAL_SECURITY_PROFILE_INDEX_8)));
|
|
|
|
|
|
// Search returns empty result
|
|
|
- final SearchProfilesResponse.ProfileHit[] profiles1 = doSearch("");
|
|
|
+ final SuggestProfilesResponse.ProfileHit[] profiles1 = doSuggest("");
|
|
|
assertThat(profiles1, emptyArray());
|
|
|
|
|
|
// Ensure index does not exist
|
|
@@ -331,7 +331,7 @@ public class ProfileIntegTests extends AbstractProfileIntegTestCase {
|
|
|
public void testSetEnabled() {
|
|
|
final Profile profile1 = doActivateProfile(RAC_USER_NAME, TEST_PASSWORD_SECURE_STRING);
|
|
|
|
|
|
- final SearchProfilesResponse.ProfileHit[] profileHits1 = doSearch(RAC_USER_NAME);
|
|
|
+ final SuggestProfilesResponse.ProfileHit[] profileHits1 = doSuggest(RAC_USER_NAME);
|
|
|
assertThat(profileHits1, arrayWithSize(1));
|
|
|
assertThat(profileHits1[0].profile().uid(), equalTo(profile1.uid()));
|
|
|
|
|
@@ -344,7 +344,7 @@ public class ProfileIntegTests extends AbstractProfileIntegTestCase {
|
|
|
client().execute(SetProfileEnabledAction.INSTANCE, setProfileEnabledRequest1).actionGet();
|
|
|
|
|
|
// No longer visible to search
|
|
|
- final SearchProfilesResponse.ProfileHit[] profileHits2 = doSearch(RAC_USER_NAME);
|
|
|
+ final SuggestProfilesResponse.ProfileHit[] profileHits2 = doSuggest(RAC_USER_NAME);
|
|
|
assertThat(profileHits2, emptyArray());
|
|
|
|
|
|
// But can still direct get
|
|
@@ -359,7 +359,7 @@ public class ProfileIntegTests extends AbstractProfileIntegTestCase {
|
|
|
WriteRequest.RefreshPolicy.IMMEDIATE
|
|
|
);
|
|
|
client().execute(SetProfileEnabledAction.INSTANCE, setProfileEnabledRequest2).actionGet();
|
|
|
- final SearchProfilesResponse.ProfileHit[] profileHits3 = doSearch(RAC_USER_NAME);
|
|
|
+ final SuggestProfilesResponse.ProfileHit[] profileHits3 = doSuggest(RAC_USER_NAME);
|
|
|
assertThat(profileHits3, arrayWithSize(1));
|
|
|
assertThat(profileHits3[0].profile().uid(), equalTo(profile1.uid()));
|
|
|
|
|
@@ -375,17 +375,17 @@ public class ProfileIntegTests extends AbstractProfileIntegTestCase {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- private SearchProfilesResponse.ProfileHit[] doSearch(String query) {
|
|
|
- final SearchProfilesRequest searchProfilesRequest = new SearchProfilesRequest(Set.of(), query, 10);
|
|
|
- final SearchProfilesResponse searchProfilesResponse = client().execute(SearchProfilesAction.INSTANCE, searchProfilesRequest)
|
|
|
+ private SuggestProfilesResponse.ProfileHit[] doSuggest(String query) {
|
|
|
+ final SuggestProfilesRequest suggestProfilesRequest = new SuggestProfilesRequest(Set.of(), query, 10);
|
|
|
+ final SuggestProfilesResponse suggestProfilesResponse = client().execute(SuggestProfilesAction.INSTANCE, suggestProfilesRequest)
|
|
|
.actionGet();
|
|
|
- assertThat(searchProfilesResponse.getTotalHits().relation, is(TotalHits.Relation.EQUAL_TO));
|
|
|
- return searchProfilesResponse.getProfileHits();
|
|
|
+ assertThat(suggestProfilesResponse.getTotalHits().relation, is(TotalHits.Relation.EQUAL_TO));
|
|
|
+ return suggestProfilesResponse.getProfileHits();
|
|
|
}
|
|
|
|
|
|
- private Set<String> extractUsernames(SearchProfilesResponse.ProfileHit[] profileHits) {
|
|
|
+ private Set<String> extractUsernames(SuggestProfilesResponse.ProfileHit[] profileHits) {
|
|
|
return Arrays.stream(profileHits)
|
|
|
- .map(SearchProfilesResponse.ProfileHit::profile)
|
|
|
+ .map(SuggestProfilesResponse.ProfileHit::profile)
|
|
|
.map(Profile::user)
|
|
|
.map(Profile.ProfileUser::username)
|
|
|
.collect(Collectors.toUnmodifiableSet());
|