diff --git a/flow-client/src/main/resources/META-INF/resources/frontend/VaadinDevmodeGizmo.ts b/flow-client/src/main/resources/META-INF/frontend/VaadinDevmodeGizmo.ts similarity index 100% rename from flow-client/src/main/resources/META-INF/resources/frontend/VaadinDevmodeGizmo.ts rename to flow-client/src/main/resources/META-INF/frontend/VaadinDevmodeGizmo.ts diff --git a/flow-client/tsconfig.json b/flow-client/tsconfig.json index 6ab25133171..d7cb1bddc07 100644 --- a/flow-client/tsconfig.json +++ b/flow-client/tsconfig.json @@ -13,12 +13,12 @@ "noUnusedLocals": true, "noUnusedParameters": true, "experimentalDecorators": true, - "outDir": "target/classes/META-INF/resources/frontend", + "outDir": "target/classes/META-INF/frontend", "declaration": true, "skipLibCheck": true }, "include": [ - "src/main/resources/META-INF/resources/frontend/**/*.ts" + "src/main/resources/META-INF/frontend/**/*.ts" ], "exclude": [] } diff --git a/flow-tests/test-root-context/src/test/java/com/vaadin/flow/ClientResourceIT.java b/flow-tests/test-root-context/src/test/java/com/vaadin/flow/ClientResourceIT.java new file mode 100644 index 00000000000..a95c7111b4e --- /dev/null +++ b/flow-tests/test-root-context/src/test/java/com/vaadin/flow/ClientResourceIT.java @@ -0,0 +1,49 @@ +/* + * Copyright 2000-2021 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.flow; + +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; + +import org.junit.Assert; +import org.junit.Test; + +import com.vaadin.flow.testutil.ChromeBrowserTest; + +public class ClientResourceIT extends ChromeBrowserTest { + + @Test + public void clientResourcesAreNotExposed() throws IOException { + assertResourceIsUnavailable("frontend/VaadinDevmodeGizmo.js.map"); + assertResourceIsUnavailable("frontend/VaadinDevmodeGizmo.d.ts"); + assertResourceIsUnavailable("frontend/VaadinDevmodeGizmo.js"); + assertResourceIsUnavailable("frontend/VaadinDevmodeGizmo.ts"); + } + + private void assertResourceIsUnavailable(String path) throws IOException { + URL url = getResourceURL(path); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + int responseCode = connection.getResponseCode(); + Assert.assertEquals(HttpURLConnection.HTTP_NOT_FOUND, responseCode); + } + + private URL getResourceURL(String path) throws MalformedURLException { + String url = getRootURL() + "/" + path; + return new URL(url); + } +}