|
11 | 11 | import org.elasticsearch.action.admin.indices.mapping.put.TransportAutoPutMappingAction; |
12 | 12 | import org.elasticsearch.action.admin.indices.mapping.put.TransportPutMappingAction; |
13 | 13 | import org.elasticsearch.action.search.TransportSearchAction; |
| 14 | +import org.elasticsearch.action.support.IndexComponentSelector; |
14 | 15 | import org.elasticsearch.cluster.metadata.AliasMetadata; |
15 | 16 | import org.elasticsearch.cluster.metadata.DataStream; |
16 | 17 | import org.elasticsearch.cluster.metadata.DataStreamTestHelper; |
@@ -757,6 +758,75 @@ public void testResourceAuthorizedPredicateAnd() { |
757 | 758 | assertThat(predicate.test(concreteIndexD), is(true)); |
758 | 759 | } |
759 | 760 |
|
| 761 | + public void testResourceAuthorizedPredicateAndWithFailures() { |
| 762 | + IndicesPermission.IsResourceAuthorizedPredicate predicate1 = new IndicesPermission.IsResourceAuthorizedPredicate( |
| 763 | + StringMatcher.of("c", "a"), |
| 764 | + StringMatcher.of("e", "f"), |
| 765 | + StringMatcher.of("b", "d") |
| 766 | + ); |
| 767 | + IndicesPermission.IsResourceAuthorizedPredicate predicate2 = new IndicesPermission.IsResourceAuthorizedPredicate( |
| 768 | + StringMatcher.of("c", "b"), |
| 769 | + StringMatcher.of("a", "f", "g"), |
| 770 | + StringMatcher.of("a", "d") |
| 771 | + ); |
| 772 | + Metadata.Builder mb = Metadata.builder( |
| 773 | + DataStreamTestHelper.getClusterStateWithDataStreams( |
| 774 | + List.of( |
| 775 | + Tuple.tuple("a", 1), |
| 776 | + Tuple.tuple("b", 1), |
| 777 | + Tuple.tuple("c", 1), |
| 778 | + Tuple.tuple("d", 1), |
| 779 | + Tuple.tuple("e", 1), |
| 780 | + Tuple.tuple("f", 1) |
| 781 | + ), |
| 782 | + List.of(), |
| 783 | + Instant.now().toEpochMilli(), |
| 784 | + builder().build(), |
| 785 | + 1 |
| 786 | + ).getMetadata() |
| 787 | + ); |
| 788 | + DataStream dataStreamA = mb.dataStream("a"); |
| 789 | + DataStream dataStreamB = mb.dataStream("b"); |
| 790 | + DataStream dataStreamC = mb.dataStream("c"); |
| 791 | + DataStream dataStreamD = mb.dataStream("d"); |
| 792 | + DataStream dataStreamE = mb.dataStream("e"); |
| 793 | + DataStream dataStreamF = mb.dataStream("f"); |
| 794 | + IndexAbstraction concreteIndexA = concreteIndexAbstraction("a"); |
| 795 | + IndexAbstraction concreteIndexB = concreteIndexAbstraction("b"); |
| 796 | + IndexAbstraction concreteIndexC = concreteIndexAbstraction("c"); |
| 797 | + IndexAbstraction concreteIndexD = concreteIndexAbstraction("d"); |
| 798 | + IndexAbstraction concreteIndexE = concreteIndexAbstraction("e"); |
| 799 | + IndexAbstraction concreteIndexF = concreteIndexAbstraction("f"); |
| 800 | + IndicesPermission.IsResourceAuthorizedPredicate predicate = predicate1.and(predicate2); |
| 801 | + assertThat(predicate.test(dataStreamA), is(false)); |
| 802 | + assertThat(predicate.test(dataStreamB), is(false)); |
| 803 | + assertThat(predicate.test(dataStreamC), is(true)); |
| 804 | + assertThat(predicate.test(dataStreamD), is(false)); |
| 805 | + assertThat(predicate.test(dataStreamE), is(false)); |
| 806 | + assertThat(predicate.test(dataStreamF), is(false)); |
| 807 | + |
| 808 | + assertThat(predicate.test(dataStreamA, IndexComponentSelector.FAILURES), is(false)); |
| 809 | + assertThat(predicate.test(dataStreamB, IndexComponentSelector.FAILURES), is(false)); |
| 810 | + assertThat(predicate.test(dataStreamC, IndexComponentSelector.FAILURES), is(false)); |
| 811 | + assertThat(predicate.test(dataStreamD, IndexComponentSelector.FAILURES), is(false)); |
| 812 | + assertThat(predicate.test(dataStreamE, IndexComponentSelector.FAILURES), is(false)); |
| 813 | + assertThat(predicate.test(dataStreamF, IndexComponentSelector.FAILURES), is(true)); |
| 814 | + |
| 815 | + assertThat(predicate.test(concreteIndexA), is(true)); |
| 816 | + assertThat(predicate.test(concreteIndexB), is(true)); |
| 817 | + assertThat(predicate.test(concreteIndexC), is(true)); |
| 818 | + assertThat(predicate.test(concreteIndexD), is(true)); |
| 819 | + assertThat(predicate.test(concreteIndexE), is(false)); |
| 820 | + assertThat(predicate.test(concreteIndexF), is(false)); |
| 821 | + |
| 822 | + assertThat(predicate.test(concreteIndexA, IndexComponentSelector.FAILURES), is(false)); |
| 823 | + assertThat(predicate.test(concreteIndexB, IndexComponentSelector.FAILURES), is(false)); |
| 824 | + assertThat(predicate.test(concreteIndexC, IndexComponentSelector.FAILURES), is(false)); |
| 825 | + assertThat(predicate.test(concreteIndexD, IndexComponentSelector.FAILURES), is(false)); |
| 826 | + assertThat(predicate.test(concreteIndexE, IndexComponentSelector.FAILURES), is(false)); |
| 827 | + assertThat(predicate.test(concreteIndexF, IndexComponentSelector.FAILURES), is(true)); |
| 828 | + } |
| 829 | + |
760 | 830 | private static IndexAbstraction concreteIndexAbstraction(String name) { |
761 | 831 | return new IndexAbstraction.ConcreteIndex( |
762 | 832 | IndexMetadata.builder(name).settings(indexSettings(IndexVersion.current(), 1, 0)).build() |
|
0 commit comments