Skip to content

Commit 02c8dcf

Browse files
authored
[Entitlements] Add support for IT testing always allowed actions (#124195) (#124414)
1 parent b10cce5 commit 02c8dcf

File tree

4 files changed

+20
-13
lines changed

4 files changed

+20
-13
lines changed

libs/entitlement/qa/entitlement-test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/EntitlementTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ enum ExpectedAccess {
2121
PLUGINS,
2222
ES_MODULES_ONLY,
2323
SERVER_ONLY,
24-
ALWAYS_DENIED
24+
ALWAYS_DENIED,
25+
ALWAYS_ALLOWED
2526
}
2627

2728
ExpectedAccess expectedAccess();

libs/entitlement/qa/entitlement-test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/RestEntitlementsCheckAction.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,10 @@
5555
import javax.net.ssl.SSLContext;
5656

5757
import static java.util.Map.entry;
58+
import static org.elasticsearch.entitlement.qa.test.EntitlementTest.ExpectedAccess.ALWAYS_ALLOWED;
59+
import static org.elasticsearch.entitlement.qa.test.EntitlementTest.ExpectedAccess.ALWAYS_DENIED;
5860
import static org.elasticsearch.entitlement.qa.test.EntitlementTest.ExpectedAccess.PLUGINS;
61+
import static org.elasticsearch.entitlement.qa.test.EntitlementTest.ExpectedAccess.SERVER_ONLY;
5962
import static org.elasticsearch.entitlement.qa.test.RestEntitlementsCheckAction.CheckAction.alwaysDenied;
6063
import static org.elasticsearch.entitlement.qa.test.RestEntitlementsCheckAction.CheckAction.deniedToPlugins;
6164
import static org.elasticsearch.entitlement.qa.test.RestEntitlementsCheckAction.CheckAction.forPlugins;
@@ -65,20 +68,20 @@
6568
public class RestEntitlementsCheckAction extends BaseRestHandler {
6669
private static final Logger logger = LogManager.getLogger(RestEntitlementsCheckAction.class);
6770

68-
record CheckAction(CheckedRunnable<Exception> action, boolean isAlwaysDeniedToPlugins, Integer fromJavaVersion) {
71+
record CheckAction(CheckedRunnable<Exception> action, EntitlementTest.ExpectedAccess expectedAccess, Integer fromJavaVersion) {
6972
/**
7073
* These cannot be granted to plugins, so our test plugins cannot test the "allowed" case.
7174
*/
7275
static CheckAction deniedToPlugins(CheckedRunnable<Exception> action) {
73-
return new CheckAction(action, true, null);
76+
return new CheckAction(action, SERVER_ONLY, null);
7477
}
7578

7679
static CheckAction forPlugins(CheckedRunnable<Exception> action) {
77-
return new CheckAction(action, false, null);
80+
return new CheckAction(action, PLUGINS, null);
7881
}
7982

8083
static CheckAction alwaysDenied(CheckedRunnable<Exception> action) {
81-
return new CheckAction(action, true, null);
84+
return new CheckAction(action, ALWAYS_DENIED, null);
8285
}
8386
}
8487

@@ -125,7 +128,7 @@ static CheckAction alwaysDenied(CheckedRunnable<Exception> action) {
125128
entry("responseCache_setDefault", alwaysDenied(RestEntitlementsCheckAction::setDefaultResponseCache)),
126129
entry(
127130
"createInetAddressResolverProvider",
128-
new CheckAction(VersionSpecificNetworkChecks::createInetAddressResolverProvider, true, 18)
131+
new CheckAction(VersionSpecificNetworkChecks::createInetAddressResolverProvider, SERVER_ONLY, 18)
129132
),
130133
entry("createURLStreamHandlerProvider", alwaysDenied(RestEntitlementsCheckAction::createURLStreamHandlerProvider)),
131134
entry("createURLWithURLStreamHandler", alwaysDenied(RestEntitlementsCheckAction::createURLWithURLStreamHandler)),
@@ -235,9 +238,8 @@ private static Stream<Entry<String, CheckAction>> getTestEntries(Class<?> action
235238
}
236239
}
237240
};
238-
boolean deniedToPlugins = testAnnotation.expectedAccess() != PLUGINS;
239241
Integer fromJavaVersion = testAnnotation.fromJavaVersion() == -1 ? null : testAnnotation.fromJavaVersion();
240-
entries.add(entry(method.getName(), new CheckAction(runnable, deniedToPlugins, fromJavaVersion)));
242+
entries.add(entry(method.getName(), new CheckAction(runnable, testAnnotation.expectedAccess(), fromJavaVersion)));
241243
}
242244
return entries.stream();
243245
}
@@ -400,13 +402,17 @@ private static void receiveDatagramSocket() throws IOException {
400402
public static Set<String> getCheckActionsAllowedInPlugins() {
401403
return checkActions.entrySet()
402404
.stream()
403-
.filter(kv -> kv.getValue().isAlwaysDeniedToPlugins() == false)
405+
.filter(kv -> kv.getValue().expectedAccess().equals(PLUGINS) || kv.getValue().expectedAccess().equals(ALWAYS_ALLOWED))
404406
.map(Entry::getKey)
405407
.collect(Collectors.toSet());
406408
}
407409

408-
public static Set<String> getAllCheckActions() {
409-
return checkActions.keySet();
410+
public static Set<String> getDeniableCheckActions() {
411+
return checkActions.entrySet()
412+
.stream()
413+
.filter(kv -> kv.getValue().expectedAccess().equals(ALWAYS_ALLOWED) == false)
414+
.map(Entry::getKey)
415+
.collect(Collectors.toSet());
410416
}
411417

412418
@Override

libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsDeniedIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public EntitlementsDeniedIT(@Name("actionName") String actionName) {
2626

2727
@ParametersFactory
2828
public static Iterable<Object[]> data() {
29-
return RestEntitlementsCheckAction.getAllCheckActions().stream().map(action -> new Object[] { action }).toList();
29+
return RestEntitlementsCheckAction.getDeniableCheckActions().stream().map(action -> new Object[] { action }).toList();
3030
}
3131

3232
@Override

libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsDeniedNonModularIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public EntitlementsDeniedNonModularIT(@Name("actionName") String actionName) {
2626

2727
@ParametersFactory
2828
public static Iterable<Object[]> data() {
29-
return RestEntitlementsCheckAction.getAllCheckActions().stream().map(action -> new Object[] { action }).toList();
29+
return RestEntitlementsCheckAction.getDeniableCheckActions().stream().map(action -> new Object[] { action }).toList();
3030
}
3131

3232
@Override

0 commit comments

Comments
 (0)