blob: 3c03253706b156ed490a24fa8b0ce4992b0ecc30 [file] [log] [blame]
// Copyright 2009-2013 The Apache Software Foundation
//
// 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 org.apache.tapestry5.integration.app1;
import org.apache.tapestry5.internal.TapestryInternalUtils;
import org.apache.tapestry5.test.TapestryRunnerConstants;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;
import java.net.URL;
public class AssetTests extends App1TestCase
{
@DataProvider
private Object[][] asset_data()
{
return new Object[][]{
{"icon", "src/test/app1/images/tapestry_banner.gif"},
{"button", "src/test/resources/org/apache/tapestry5/integration/app1/pages/nested/tapestry-button.png"},
{"viaContext", "src/test/app1/images/asf_logo_wide.gif"},
{"meta", "src/test/resources/META-INF/assets/tapestry.png"},
{"templatemeta", "src/test/resources/META-INF/assets/plugin.png"}};
}
@Test(dataProvider = "asset_data")
public void assets(String id, String localPath) throws Exception
{
openLinks("AssetDemo");
// Test for https://issues.apache.org/jira/browse/TAPESTRY-1935
// assertSourcePresent("<link href=\"/css/app.css\" rel=\"stylesheet\" type=\"text/css\">");
// Read the byte stream for the asset and compare to the real copy.
String assetURL = getAttribute(String.format("//img[@id='%s']/@src", id));
compareDownloadedAsset(assetURL, localPath);
}
private void compareDownloadedAsset(String assetURL, String localPath) throws Exception
{
// Strip off the leading slash
URL url = new URL(getBaseURL() + assetURL.substring(1));
byte[] downloaded = readContent(url);
File local = new File(TapestryRunnerConstants.MODULE_BASE_DIR, localPath);
byte[] actual = readContent(local.toURL());
assertEquals(downloaded, actual);
}
private byte[] readContent(URL url) throws Exception
{
InputStream is = new BufferedInputStream(url.openStream());
ByteArrayOutputStream os = new ByteArrayOutputStream();
TapestryInternalUtils.copy(is, os);
os.close();
is.close();
return os.toByteArray();
}
}