1717import org .elasticsearch .test .ESTestCase ;
1818
1919import static org .hamcrest .Matchers .contains ;
20+ import static org .hamcrest .Matchers .containsString ;
2021import static org .hamcrest .Matchers .equalTo ;
2122import static org .hamcrest .Matchers .greaterThan ;
2223import static org .hamcrest .Matchers .hasSize ;
24+ import static org .hamcrest .Matchers .is ;
2325import static org .hamcrest .Matchers .notNullValue ;
2426
2527public class TestProjectResolversTests extends ESTestCase {
@@ -37,17 +39,42 @@ public void testAllProjects() {
3739 public void testSingleProject () {
3840 final ProjectId projectId = randomUniqueProjectId ();
3941 final ProjectResolver projectResolver = TestProjectResolvers .singleProject (projectId );
42+ assertThat (projectResolver .supportsMultipleProjects (), is (true ));
4043 assertThat (projectResolver .getProjectId (), equalTo (projectId ));
4144
4245 ClusterState state = buildClusterState (projectId , randomIntBetween (0 , 10 ));
4346 assertThat (projectResolver .getProjectMetadata (state ), notNullValue ());
4447 }
4548
46- public void testSingleProjectOnly_getProjectIdAndMetadata () {
49+ public void testSingleProjectOnly () {
50+ final ProjectResolver projectResolver = TestProjectResolvers .singleProjectOnly ();
51+ assertThat (projectResolver .supportsMultipleProjects (), is (false ));
52+ final var projectId = projectResolver .getProjectId ();
53+
54+ ClusterState state = buildClusterState (projectId , 0 );
55+ assertThat (projectResolver .getProjectMetadata (state ), notNullValue ());
56+
57+ final IllegalStateException e = expectThrows (
58+ IllegalStateException .class ,
59+ () -> projectResolver .getProjectMetadata (buildClusterState (projectId , randomIntBetween (1 , 10 )))
60+ );
61+ assertThat (e .getMessage (), containsString ("Cluster has multiple projects" ));
62+ }
63+
64+ public void testDefaultProjectOnly () {
65+ final ProjectResolver projectResolver = TestProjectResolvers .DEFAULT_PROJECT_ONLY ;
66+ assertThat (projectResolver .supportsMultipleProjects (), is (false ));
67+ assertThat (projectResolver .getProjectId (), equalTo (ProjectId .DEFAULT ));
68+
69+ ClusterState state = buildClusterState (ProjectId .DEFAULT , 0 );
70+ assertThat (projectResolver .getProjectMetadata (state ), notNullValue ());
71+ }
72+
73+ public void testMustExecuteFirst_getProjectIdAndMetadata () {
4774 final ProjectId projectId = randomUniqueProjectId ();
4875 final ClusterState state = buildClusterState (projectId );
4976
50- final ProjectResolver projectResolver = TestProjectResolvers .singleProjectOnly ();
77+ final ProjectResolver projectResolver = TestProjectResolvers .mustExecuteFirst ();
5178 expectThrows (UnsupportedOperationException .class , projectResolver ::getProjectId );
5279 expectThrows (UnsupportedOperationException .class , () -> projectResolver .getProjectMetadata (state ));
5380
@@ -57,9 +84,9 @@ public void testSingleProjectOnly_getProjectIdAndMetadata() {
5784 });
5885 }
5986
60- public void testSingleProjectOnly_getProjectIds () {
87+ public void testMustExecuteFirst_getProjectIds () {
6188 {
62- final ProjectResolver projectResolver = TestProjectResolvers .singleProjectOnly ();
89+ final ProjectResolver projectResolver = TestProjectResolvers .mustExecuteFirst ();
6390 final ProjectId projectId = randomUniqueProjectId ();
6491 ClusterState state = buildClusterState (projectId );
6592 assertThat (state .metadata ().projects ().values (), hasSize (1 ));
@@ -71,7 +98,7 @@ public void testSingleProjectOnly_getProjectIds() {
7198 });
7299 }
73100 {
74- final ProjectResolver projectResolver = TestProjectResolvers .singleProjectOnly ();
101+ final ProjectResolver projectResolver = TestProjectResolvers .mustExecuteFirst ();
75102 final ProjectId projectId = randomUniqueProjectId ();
76103 ClusterState state = buildClusterState (projectId , randomIntBetween (1 , 10 ));
77104 assertThat (state .metadata ().projects ().values ().size (), greaterThan (1 ));
0 commit comments