@Test public void testDiscoverFileResources() throws Throwable { UiService service = new UiService(); service.setSelfLink("/"); Arguments args = new Arguments(); args.resourceSandbox = Paths .get("src/main/resources/ui/com/vmware/admiral/UiService/container-identicons"); VerificationHost vh = VerificationHost.create(args); service.setHost(vh); Map<Path, String> discoverUiResources = service.discoverUiResources( Paths.get("./"), service); assertFalse(discoverUiResources.isEmpty()); }
@Override public void handleGet(Operation get) { if (isEmbedded == null) { // ConfigurationUtil.getConfigProperty(this, ConfigurationUtil.EMBEDDED_MODE_PROPERTY, // (embedded) -> { // isEmbedded = Boolean.valueOf(embedded); // handleGet(get); // }); // return; // TODO - the code above should be used instead but for some reason the UI components // may get initialized before the configuration service is fully initialized. isEmbedded = ConfigurationUtil.isEmbedded(); } if (!isEmbedded) { // Avoid clickjacking attacks, by ensuring that content is not embedded. get.addResponseHeader(ConfigurationUtil.UI_FRAME_OPTIONS_HEADER, "DENY"); } if (redirectToLoginOrIndex(getHost(), get)) { return; } super.handleGet(get); }
@Override public void handleStart(Operation startPost) { super.handleStart(startPost); startForwardingService(UriUtils.buildUriPath(SELF_LINK, "assets/i18n/base"), UriUtils.buildUriPath(ManagementUriParts.UI_OG_SERVICE, "messages/admiral")); startForwardingService(UriUtils.buildUriPath(SELF_LINK, LOGIN_PATH, "assets/i18n/base"), UriUtils.buildUriPath(ManagementUriParts.UI_OG_SERVICE, "messages/admiral")); startForwardingService(UriUtils.buildUriPath(SELF_LINK, LOGIN_PATH, "assets/i18n"), UriUtils.buildUriPath(SELF_LINK, "assets/i18n")); String loginServicePath = UriUtils.buildUriPath(SELF_LINK, LOGIN_PATH); if (!loginServicePath.endsWith(UriUtils.URI_PATH_CHAR)) { loginServicePath += UriUtils.URI_PATH_CHAR; } String uiServicePath = ManagementUriParts.UI_SERVICE; if (!uiServicePath.endsWith(UriUtils.URI_PATH_CHAR)) { uiServicePath += UriUtils.URI_PATH_CHAR; } startForwardingService(loginServicePath, uiServicePath); // TODO: remove after new UI is active in CS startRedirectService(UriUtils.buildUriPath(SELF_LINK, "/index-embedded.html"), UriUtils.buildUriPath(ManagementUriParts.UI_OG_SERVICE, "/index-embedded.html")); }
@Test public void testRedirect() { UiService service = new UiService(); service.setSelfLink("/sample"); service.setHost(new VerificationHost()); AtomicBoolean completionCalled = new AtomicBoolean(); service.handleGet(new Operation().setUri(UriUtils.buildUri("http://localhost/sample")) .setCompletion((o, e) -> { assertEquals("/sample/", o.getResponseHeader(Operation.LOCATION_HEADER)); completionCalled.set(true); })); assertTrue(completionCalled.get()); }
@Test public void testDiscoverFileResourcesOnStart() throws Throwable { UiService service = new UiService(); service.setSelfLink("/"); Arguments args = new Arguments(); args.resourceSandbox = Paths.get("src/main/resources/"); VerificationHost vh = VerificationHost.create(args); service.setHost(vh); Operation start = new Operation().setUri(UriUtils.buildUri("/")); service.handleStart(start); assertEquals(Operation.STATUS_CODE_OK, start.getStatusCode()); }
@Test public void testRedirectToBase() { UiService service = new UiService(); service.setSelfLink("/"); VerificationHost vh = new VerificationHost(); vh.setAuthorizationEnabled(true); vh.setAuthorizationContext(createAuthorizationContext(true)); service.setHost(vh); AtomicBoolean completionCalled = new AtomicBoolean(); service.handleGet(new Operation().setUri(UriUtils.buildUri("http://localhost/login/")) .setCompletion((o, e) -> { assertEquals("/", o.getResponseHeader(Operation.LOCATION_HEADER)); completionCalled.set(true); })); assertTrue(completionCalled.get()); }
@Test public void testRedirectToLogin() { UiService service = new UiService(); service.setSelfLink("/"); VerificationHost vh = new VerificationHost(); vh.setAuthorizationEnabled(true); vh.setAuthorizationContext(createAuthorizationContext(false)); service.setHost(vh); AtomicBoolean completionCalled = new AtomicBoolean(); service.handleGet(new Operation().setUri(UriUtils.buildUri("http://localhost/sample")) .setCompletion((o, e) -> { assertEquals("/login/", o.getResponseHeader(Operation.LOCATION_HEADER)); completionCalled.set(true); })); assertTrue(completionCalled.get()); }
@Test public void testForwardIndexHtmlWithXFrameOptions() { UiService service = new UiService(); service.setSelfLink("/"); VerificationHost vh = new VerificationHost() { @Override public void sendRequest(Operation op) { if (op.getUri().getPath().equals("/index.html")) { op.setBody("OK"); op.complete(); } else { op.fail(Operation.STATUS_CODE_NOT_FOUND); } } }; service.setHost(vh); AtomicBoolean completionCalled = new AtomicBoolean(); service.handleGet(new Operation().setUri(UriUtils.buildUri("http://localhost/")) .setCompletion((o, e) -> { assertEquals("OK", o.getBodyRaw()); assertEquals("DENY", o.getResponseHeader(ConfigurationUtil.UI_FRAME_OPTIONS_HEADER)); completionCalled.set(true); })); assertTrue(completionCalled.get()); }
@Test public void testForwardIndexHtmlWithoutXFrameOptions() { UiService service = new UiService(); service.setSelfLink("/"); VerificationHost vh = new VerificationHost() { @Override service.setHost(vh); service.handleGet(new Operation().setUri(UriUtils.buildUri("http://localhost/")) .setCompletion((o, e) -> { assertEquals("OK", o.getBodyRaw());