Package org.apache.wicket.markup.html

Source Code of org.apache.wicket.markup.html.PackageResourceTest

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.wicket.markup.html;

import java.util.Locale;

import org.apache.wicket.Application;
import org.apache.wicket.SharedResources;
import org.apache.wicket.WicketTestCase;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.request.resource.JavaScriptPackageResource;
import org.apache.wicket.request.resource.PackageResource;
import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.request.resource.ResourceReference;
import org.apache.wicket.util.lang.Packages;
import org.junit.Before;
import org.junit.Test;

/**
* Tests for package resources.
*
* @author Eelco Hillenius
*/
public class PackageResourceTest extends WicketTestCase
{
  /** mock application object */
  public WebApplication application;

  /**
   *
   */
  @Before
  public void before()
  {
    application = tester.getApplication();
  }

  /**
   * Tests binding a single absolute package resource.
   *
   * @throws Exception
   */
  @Test
  public void bindAbsolutePackageResource() throws Exception
  {
    final SharedResources sharedResources = Application.get().getSharedResources();
    assertNotNull("resource packaged1.txt should be available as a packaged resource",
      sharedResources.get(PackageResourceTest.class, "packaged1.txt", null, null, null, true));
  }

  /**
   * Tests {@link PackageResourceGuard}.
   *
   * @throws Exception
   */
  @Test
  public void packageResourceGuard() throws Exception
  {
    PackageResourceGuard guard = new PackageResourceGuard();
    assertTrue(guard.acceptExtension("txt"));
    assertFalse(guard.acceptExtension("java"));
    assertTrue(guard.accept("foo/Bar.txt"));
    assertFalse(guard.accept("foo/Bar.java"));
    assertTrue(guard.accept(Packages.absolutePath(PackageResourceTest.class, "Bar.txt")));
    assertTrue(guard.accept(Packages.absolutePath(PackageResourceTest.class, "Bar.txt.")));
    assertTrue(guard.accept(Packages.absolutePath(PackageResourceTest.class, ".Bar.txt")));
    assertTrue(guard.accept(Packages.absolutePath(PackageResourceTest.class, ".Bar.txt.")));
    assertTrue(guard.accept(Packages.absolutePath(PackageResourceTest.class, ".Bar")));
    assertTrue(guard.accept(Packages.absolutePath(PackageResourceTest.class, ".java")));
    assertFalse(guard.accept(Packages.absolutePath(PackageResourceTest.class, "Bar.java")));
  }

  /**
   * Test lenient matching
   *
   * @throws Exception
   */
  @Test
  public void lenientPackageResourceMatching() throws Exception
  {
    ResourceReference invalidResource = new PackageResourceReference(PackageResourceTest.class,
      "i_do_not_exist.txt", Locale.ENGLISH, null, null);
    assertNotNull(
      "resource i_do_not_exist.txt SHOULD be available as a packaged resource even if it doesn't exist",
      invalidResource.getResource());

    assertTrue(PackageResource.exists(PackageResourceTest.class, "packaged1.txt", null, null,
      null));
    assertTrue(PackageResource.exists(PackageResourceTest.class, "packaged1.txt", Locale.CHINA,
      null, null));
    assertTrue(PackageResource.exists(PackageResourceTest.class, "packaged1.txt", Locale.CHINA,
      "foo", null));
    assertTrue(PackageResource.exists(PackageResourceTest.class, "packaged1.txt", null, "foo",
      null));
    assertTrue(PackageResource.exists(PackageResourceTest.class, "packaged1_en.txt", null,
      null, null));
    assertTrue(PackageResource.exists(PackageResourceTest.class, "packaged1_en_US.txt", null,
      null, null));
    assertTrue(PackageResource.exists(PackageResourceTest.class, "packaged1_en_US.txt", null,
      "foo", null));
    assertTrue(PackageResource.exists(PackageResourceTest.class, "packaged1_en_US.txt",
      Locale.US, null, null));
    assertTrue(PackageResource.exists(PackageResourceTest.class, "packaged1_en_US.txt",
      Locale.CANADA, null, null));
    assertTrue(PackageResource.exists(PackageResourceTest.class, "packaged1_en_US.txt",
      Locale.CHINA, null, null));
    assertTrue(PackageResource.exists(PackageResourceTest.class, "packaged1_foo_bar_en.txt",
      null, null, null));
    assertTrue(PackageResource.exists(PackageResourceTest.class, "packaged1_foo_bar_en_US.txt",
      null, null, null));
    assertTrue(PackageResource.exists(PackageResourceTest.class,
      "packaged1_foo_bar_en_US_MAC.txt", null, null, null));

    tester.getRequest().setUrl(tester.getRequestCycle().mapUrlFor(invalidResource, null));
    // since the resource does not exist wicket should let the handling fall through to the next
    // filter/servlet which will cause a 404 later
    assertFalse(tester.processRequest());

  }

  /**
   * Test that {@link PackageResource} writes its Content-Type header in the response
   *
   * https://issues.apache.org/jira/browse/WICKET-4119
   */
  @Test
  public void contentType()
  {
    PackageResource textResource = new PackageResource(PackageResourceTest.class,
      "packaged1.txt", null, null, null)
    {
      private static final long serialVersionUID = 1L;
    };

    tester.startResource(textResource);
    assertEquals("text/plain", tester.getLastResponse().getContentType());

    PackageResource jsResource = new PackageResource(PackageResourceTest.class, "packaged3.js",
      null, null, null)
    {
      private static final long serialVersionUID = 1L;
    };

    tester.startResource(jsResource);
    assertEquals("text/javascript", tester.getLastResponse().getContentType());
  }

  @Test
  public void textFileWithEncoding()
  {
    final String encoding = "Klingon-8859-42";
    final PackageResource resource = new PackageResource(PackageResourceTest.class,
      "packaged1.txt", null, null, null)
    {
      private static final long serialVersionUID = 1L;
    };
    resource.setTextEncoding(encoding);
    tester.startResource(resource);
    final String contentType = tester.getLastResponse().getContentType();
    assertEquals("text/plain; charset=" + encoding, contentType);
  }

  @Test
  public void javascriptFileWithEncoding()
  {
    final String encoding = "Klingon-8859-42";
    final JavaScriptPackageResource resource = new JavaScriptPackageResource(
      PackageResourceTest.class, "packaged3.js", null, null, null)
    {
      private static final long serialVersionUID = 1L;
    };
    resource.setTextEncoding(encoding);
    tester.startResource(resource);
    final String contentType = tester.getLastResponse().getContentType();
    assertEquals("text/javascript; charset=" + encoding, contentType);
  }
}
TOP

Related Classes of org.apache.wicket.markup.html.PackageResourceTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.