Skip to content

Commit 0e0fdf5

Browse files
authored
[Entitlements] Add support for IT testing always allowed actions (#124195) (#124416)
1 parent e2e62d5 commit 0e0fdf5

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)),
@@ -233,9 +236,8 @@ private static Stream<Entry<String, CheckAction>> getTestEntries(Class<?> action
233236
}
234237
}
235238
};
236-
boolean deniedToPlugins = testAnnotation.expectedAccess() != PLUGINS;
237239
Integer fromJavaVersion = testAnnotation.fromJavaVersion() == -1 ? null : testAnnotation.fromJavaVersion();
238-
entries.add(entry(method.getName(), new CheckAction(runnable, deniedToPlugins, fromJavaVersion)));
240+
entries.add(entry(method.getName(), new CheckAction(runnable, testAnnotation.expectedAccess(), fromJavaVersion)));
239241
}
240242
return entries.stream();
241243
}
@@ -398,13 +400,17 @@ private static void receiveDatagramSocket() throws IOException {
398400
public static Set<String> getCheckActionsAllowedInPlugins() {
399401
return checkActions.entrySet()
400402
.stream()
401-
.filter(kv -> kv.getValue().isAlwaysDeniedToPlugins() == false)
403+
.filter(kv -> kv.getValue().expectedAccess().equals(PLUGINS) || kv.getValue().expectedAccess().equals(ALWAYS_ALLOWED))
402404
.map(Entry::getKey)
403405
.collect(Collectors.toSet());
404406
}
405407

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

410416
@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)