/* * #%L * Wisdom-Framework * %% * Copyright (C) 2013 - 2014 Wisdom Framework * %% * 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. * #L% */ package asset; import org.junit.Test; import org.wisdom.api.http.HeaderNames; import org.wisdom.api.utils.KnownMimeTypes; import org.wisdom.test.http.HttpResponse; import org.wisdom.test.parents.WisdomBlackBoxTest; import java.io.InputStream; import static org.assertj.core.api.Assertions.assertThat; /** * Checks asset. */ public class AssetIT extends WisdomBlackBoxTest { @Test public void testMissingAssets() throws Exception { HttpResponse<InputStream> response = get("/assets/missing").asBinary(); assertThat(response.code()).isEqualTo(NOT_FOUND); } @Test public void testThatTheAssetsDirectoryIsTheAssetListPage() throws Exception { HttpResponse<String> response = get("/assets").asString(); assertThat(response.code()).isEqualTo(OK); assertThat(response.body()).contains("Available Assets"); } @Test public void testAssets() throws Exception { HttpResponse<InputStream> response = get("/assets/empty.txt").asBinary(); assertThat(response.code()).isEqualTo(OK); // Test with another / response = get("/assets//empty.txt").asBinary(); assertThat(response.code()).isEqualTo(OK); final String etag = response.header(ETAG); assertThat(etag).isNotNull().isNotEmpty(); response = get("/assets/empty.txt").header(IF_NONE_MATCH, etag).asBinary(); assertThat(response.code()).isEqualTo(NOT_MODIFIED); response = get("/assets/empty.txt").header(IF_NONE_MATCH, etag + "-changed").asBinary(); assertThat(response.code()).isEqualTo(OK); } @Test public void testMimeType() throws Exception { HttpResponse<InputStream> response = get("/assets/test_for_mimetypes.dxf").asBinary(); assertThat(response.code()).isEqualTo(OK); assertThat(response.header(CONTENT_TYPE)).isEqualTo(KnownMimeTypes.getMimeTypeByExtension("dxf")); } /** * We have configured the asset controller to expose assets from /public on /public. */ @Test public void testPublicAssets() throws Exception { HttpResponse<String> response = get("/public/stuff/my-public-asset.js").asString(); assertThat(response.code()).isEqualTo(OK); final String etag = response.header(ETAG); assertThat(etag).isNotNull().isNotEmpty(); response = get("/public/stuff/my-public-asset.js").header(IF_NONE_MATCH, etag).asString(); assertThat(response.code()).isEqualTo(NOT_MODIFIED); response = get("/public/my-internal-asset.js").asString(); assertThat(response.code()).isEqualTo(NOT_FOUND); } /** * We have configured the asset controller to expose assets from /interns (in bundle). */ @Test public void testInternalAssets() throws Exception { HttpResponse<String> response = get("/internal/my-internal-asset.js").asString(); assertThat(response.code()).isEqualTo(OK); final String etag = response.header(ETAG); assertThat(etag).isNotNull().isNotEmpty(); response = get("/internal/my-internal-asset.js").header(IF_NONE_MATCH, etag).asString(); assertThat(response.code()).isEqualTo(NOT_MODIFIED); response = get("/internal/stuff/my-public-asset.js").asString(); assertThat(response.code()).isEqualTo(NOT_FOUND); } @Test public void testAssetListing() throws Exception { HttpResponse<String> response = get("/assets").asString(); assertThat(response.code()).isEqualTo(OK); assertThat(response.body()) .contains("/assets/empty.txt") .contains("/internal/my-internal-asset.js") .contains("/public/stuff/my-public-asset.js"); } }