|
112 | 112 | import static org.elasticsearch.cluster.metadata.DataStreamTestHelper.newInstance;
|
113 | 113 | import static org.elasticsearch.test.ActionListenerUtils.anyActionListener;
|
114 | 114 | import static org.elasticsearch.test.TestMatchers.throwableWithMessage;
|
| 115 | +import static org.elasticsearch.xpack.core.security.authz.IndicesAndAliasesResolverField.NO_INDICES_OR_ALIASES_ARRAY; |
115 | 116 | import static org.elasticsearch.xpack.core.security.test.TestRestrictedIndices.RESTRICTED_INDICES;
|
116 | 117 | import static org.elasticsearch.xpack.security.authz.AuthorizedIndicesTests.getRequestInfo;
|
117 | 118 | import static org.elasticsearch.xpack.security.support.SecuritySystemIndices.SECURITY_MAIN_ALIAS;
|
118 | 119 | import static org.hamcrest.CoreMatchers.containsString;
|
119 | 120 | import static org.hamcrest.CoreMatchers.instanceOf;
|
120 | 121 | import static org.hamcrest.CoreMatchers.is;
|
121 | 122 | import static org.hamcrest.CoreMatchers.notNullValue;
|
| 123 | +import static org.hamcrest.CoreMatchers.sameInstance; |
122 | 124 | import static org.hamcrest.Matchers.arrayContaining;
|
123 | 125 | import static org.hamcrest.Matchers.arrayContainingInAnyOrder;
|
124 | 126 | import static org.hamcrest.Matchers.contains;
|
@@ -811,6 +813,29 @@ public void testResolveWildcardsStrictExpand() {
|
811 | 813 | );
|
812 | 814 | }
|
813 | 815 |
|
| 816 | + public void testResolveMultipleTimesDoesNotOverwriteExpressions() { |
| 817 | + SearchRequest request = new SearchRequest("barbaz", "foofoo*"); |
| 818 | + request.indicesOptions(IndicesOptions.fromOptions(false, true, true, false)); |
| 819 | + List<String> indices = resolveIndices(request, buildAuthorizedIndices(user, TransportSearchAction.TYPE.name())).getLocal(); |
| 820 | + String[] replacedIndices = new String[] { "barbaz", "foofoobar", "foofoo" }; |
| 821 | + assertThat(indices, hasSize(replacedIndices.length)); |
| 822 | + assertThat(request.indices().length, equalTo(replacedIndices.length)); |
| 823 | + assertThat(indices, hasItems(replacedIndices)); |
| 824 | + assertThat(request.indices(), arrayContainingInAnyOrder(replacedIndices)); |
| 825 | + ResolvedIndexExpressions actual = request.getResolvedIndexExpressions(); |
| 826 | + assertThat(actual, is(notNullValue())); |
| 827 | + assertThat( |
| 828 | + actual.expressions(), |
| 829 | + contains( |
| 830 | + resolvedIndexExpression("barbaz", Set.of("barbaz"), CONCRETE_RESOURCE_UNAUTHORIZED), |
| 831 | + resolvedIndexExpression("foofoo*", Set.of("foofoobar", "foofoo"), SUCCESS) |
| 832 | + ) |
| 833 | + ); |
| 834 | + request.indices(NO_INDICES_OR_ALIASES_ARRAY); |
| 835 | + resolveIndices(request, buildAuthorizedIndices(user, TransportSearchAction.TYPE.name())); |
| 836 | + assertThat(actual, sameInstance(request.getResolvedIndexExpressions())); |
| 837 | + } |
| 838 | + |
814 | 839 | public void testResolveWildcardsExpandOpenAndClosedIgnoreUnavailable() {
|
815 | 840 | SearchRequest request = new SearchRequest("barbaz", "foofoo*");
|
816 | 841 | request.indicesOptions(IndicesOptions.fromOptions(true, randomBoolean(), true, true));
|
@@ -1812,7 +1837,7 @@ public void testResolveAliasesWildcardsGetAliasesRequestNoAuthorizedIndices() {
|
1812 | 1837 | request.aliases("bar*");
|
1813 | 1838 | request.indices("*bar");
|
1814 | 1839 | resolveIndices(request, buildAuthorizedIndices(user, GetAliasesAction.NAME));
|
1815 |
| - assertThat(request.aliases(), arrayContaining(IndicesAndAliasesResolverField.NO_INDICES_OR_ALIASES_ARRAY)); |
| 1840 | + assertThat(request.aliases(), arrayContaining(NO_INDICES_OR_ALIASES_ARRAY)); |
1816 | 1841 | }
|
1817 | 1842 |
|
1818 | 1843 | public void testResolveAliasesExclusionWildcardsGetAliasesRequest() {
|
@@ -1869,7 +1894,7 @@ public void testResolveAliasesAllGetAliasesRequestNoAuthorizedIndices() {
|
1869 | 1894 | ResolvedIndices resolvedIndices = resolveIndices(request, buildAuthorizedIndices(userNoIndices, GetAliasesAction.NAME));
|
1870 | 1895 | assertThat(resolvedIndices.getLocal(), contains("non_existing"));
|
1871 | 1896 | assertThat(Arrays.asList(request.indices()), contains("non_existing"));
|
1872 |
| - assertThat(request.aliases(), arrayContaining(IndicesAndAliasesResolverField.NO_INDICES_OR_ALIASES_ARRAY)); |
| 1897 | + assertThat(request.aliases(), arrayContaining(NO_INDICES_OR_ALIASES_ARRAY)); |
1873 | 1898 | }
|
1874 | 1899 |
|
1875 | 1900 | /**
|
|
0 commit comments