| 
55 | 55 | import javax.net.ssl.SSLContext;  | 
56 | 56 | 
 
  | 
57 | 57 | 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;  | 
58 | 60 | import static org.elasticsearch.entitlement.qa.test.EntitlementTest.ExpectedAccess.PLUGINS;  | 
 | 61 | +import static org.elasticsearch.entitlement.qa.test.EntitlementTest.ExpectedAccess.SERVER_ONLY;  | 
59 | 62 | import static org.elasticsearch.entitlement.qa.test.RestEntitlementsCheckAction.CheckAction.alwaysDenied;  | 
60 | 63 | import static org.elasticsearch.entitlement.qa.test.RestEntitlementsCheckAction.CheckAction.deniedToPlugins;  | 
61 | 64 | import static org.elasticsearch.entitlement.qa.test.RestEntitlementsCheckAction.CheckAction.forPlugins;  | 
 | 
65 | 68 | public class RestEntitlementsCheckAction extends BaseRestHandler {  | 
66 | 69 |     private static final Logger logger = LogManager.getLogger(RestEntitlementsCheckAction.class);  | 
67 | 70 | 
 
  | 
68 |  | -    record CheckAction(CheckedRunnable<Exception> action, boolean isAlwaysDeniedToPlugins, Integer fromJavaVersion) {  | 
 | 71 | +    record CheckAction(CheckedRunnable<Exception> action, EntitlementTest.ExpectedAccess expectedAccess, Integer fromJavaVersion) {  | 
69 | 72 |         /**  | 
70 | 73 |          * These cannot be granted to plugins, so our test plugins cannot test the "allowed" case.  | 
71 | 74 |          */  | 
72 | 75 |         static CheckAction deniedToPlugins(CheckedRunnable<Exception> action) {  | 
73 |  | -            return new CheckAction(action, true, null);  | 
 | 76 | +            return new CheckAction(action, SERVER_ONLY, null);  | 
74 | 77 |         }  | 
75 | 78 | 
 
  | 
76 | 79 |         static CheckAction forPlugins(CheckedRunnable<Exception> action) {  | 
77 |  | -            return new CheckAction(action, false, null);  | 
 | 80 | +            return new CheckAction(action, PLUGINS, null);  | 
78 | 81 |         }  | 
79 | 82 | 
 
  | 
80 | 83 |         static CheckAction alwaysDenied(CheckedRunnable<Exception> action) {  | 
81 |  | -            return new CheckAction(action, true, null);  | 
 | 84 | +            return new CheckAction(action, ALWAYS_DENIED, null);  | 
82 | 85 |         }  | 
83 | 86 |     }  | 
84 | 87 | 
 
  | 
@@ -125,7 +128,7 @@ static CheckAction alwaysDenied(CheckedRunnable<Exception> action) {  | 
125 | 128 |             entry("responseCache_setDefault", alwaysDenied(RestEntitlementsCheckAction::setDefaultResponseCache)),  | 
126 | 129 |             entry(  | 
127 | 130 |                 "createInetAddressResolverProvider",  | 
128 |  | -                new CheckAction(VersionSpecificNetworkChecks::createInetAddressResolverProvider, true, 18)  | 
 | 131 | +                new CheckAction(VersionSpecificNetworkChecks::createInetAddressResolverProvider, SERVER_ONLY, 18)  | 
129 | 132 |             ),  | 
130 | 133 |             entry("createURLStreamHandlerProvider", alwaysDenied(RestEntitlementsCheckAction::createURLStreamHandlerProvider)),  | 
131 | 134 |             entry("createURLWithURLStreamHandler", alwaysDenied(RestEntitlementsCheckAction::createURLWithURLStreamHandler)),  | 
@@ -235,9 +238,8 @@ private static Stream<Entry<String, CheckAction>> getTestEntries(Class<?> action  | 
235 | 238 |                     }  | 
236 | 239 |                 }  | 
237 | 240 |             };  | 
238 |  | -            boolean deniedToPlugins = testAnnotation.expectedAccess() != PLUGINS;  | 
239 | 241 |             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)));  | 
241 | 243 |         }  | 
242 | 244 |         return entries.stream();  | 
243 | 245 |     }  | 
@@ -400,13 +402,17 @@ private static void receiveDatagramSocket() throws IOException {  | 
400 | 402 |     public static Set<String> getCheckActionsAllowedInPlugins() {  | 
401 | 403 |         return checkActions.entrySet()  | 
402 | 404 |             .stream()  | 
403 |  | -            .filter(kv -> kv.getValue().isAlwaysDeniedToPlugins() == false)  | 
 | 405 | +            .filter(kv -> kv.getValue().expectedAccess().equals(PLUGINS) || kv.getValue().expectedAccess().equals(ALWAYS_ALLOWED))  | 
404 | 406 |             .map(Entry::getKey)  | 
405 | 407 |             .collect(Collectors.toSet());  | 
406 | 408 |     }  | 
407 | 409 | 
 
  | 
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());  | 
410 | 416 |     }  | 
411 | 417 | 
 
  | 
412 | 418 |     @Override  | 
 | 
0 commit comments