|
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