Package ro.isdc.wro.model.resource.processor

Source Code of ro.isdc.wro.model.resource.processor.TestCssUrlAuthorizationProcessor

/*
* Copyright (c) 2008. All rights reserved.
*/
package ro.isdc.wro.model.resource.processor;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;

import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.Mockito;

import ro.isdc.wro.config.Context;
import ro.isdc.wro.model.group.processor.Injector;
import ro.isdc.wro.model.resource.Resource;
import ro.isdc.wro.model.resource.processor.impl.css.CssUrlAuthorizationProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.CssUrlRewritingProcessor;
import ro.isdc.wro.util.WroTestUtils;


/**
* Test for {@link ro.isdc.wro.model.resource.processor.impl.css.CssUrlAuthorizationProcessor} class.
*
* @author Greg Pendlebury
* @created Created on June 10, 2014 Adapted from
*          {@link ro.isdc.wro.model.resource.processor.TestCssUrlRewritingProcessor}
* @author Alex Objelean
*/
public class TestCssUrlAuthorizationProcessor {
  private CssUrlRewritingProcessor rewriter;
  private CssUrlAuthorizationProcessor processor;

  private static final String CSS_INPUT_NAME = "cssUrlRewriting.css";
  private static final String WRO_URL_PREFIX = "[WRO-PREFIX]?id=";

  @BeforeClass
  public static void onBeforeClass() {
    assertEquals(0, Context.countActive());
  }

  @AfterClass
  public static void onAfterClass() {
    assertEquals(0, Context.countActive());
  }

  @Before
  public void setUp() {
    Context.set(Context.standaloneContext());
    final Injector injector = WroTestUtils.createInjector();

    rewriter = new CssUrlRewritingProcessor() {
      @Override
      protected String getUrlPrefix() {
        return WRO_URL_PREFIX;
      }
    };
    injector.inject(rewriter);

    processor = new CssUrlAuthorizationProcessor() {
      @Override
      protected String getUrlPrefix() {
        return WRO_URL_PREFIX;
      }
    };
    injector.inject(processor);
  }

  @After
  public void tearDown() {
    Context.unset();
  }

  @Test
  public void testBasics()
      throws Exception {
    final String resourceUri = "classpath:" + CSS_INPUT_NAME;
    WroTestUtils.compareProcessedResourceContents(resourceUri, "classpath:cssUrlRewriting-classpath-outcome.css",
        new ResourcePostProcessor() {
          public void process(final Reader reader, final Writer writer)
              throws IOException {
            // Sample URLs that the CSS URL rewriter does not authorize... make sure we still don't:
            final String testUrl = "http://www.google.com/";

            // Run the CSS rewriter with a proxy
            final StringWriter writerProxy = new StringWriter();
            rewriter.process(createMockResource(resourceUri), reader, writerProxy);
            final String rewrittenOutput = writerProxy.toString();
            assertFalse("Unexpected URL is already authorized", processor.isUriAllowed(testUrl));

            // Then run the authorization processor
            final StringReader readerProxy = new StringReader(rewrittenOutput);
            processor.process(readerProxy, writer);
            assertEquals("Authorization processor should never alter content", rewrittenOutput,
                writer.toString());
            assertFalse("URL should not be authorized", processor.isUriAllowed(testUrl));
          }
        });
  }

  /**
   * @param resourceUri
   *          the resource should return.
   * @return mocked {@link ro.isdc.wro.model.resource.Resource} object.
   */
  private Resource createMockResource(final String resourceUri) {
    final Resource resource = Mockito.mock(Resource.class);
    Mockito.when(resource.getUri()).thenReturn(resourceUri);
    return resource;
  }
}
TOP

Related Classes of ro.isdc.wro.model.resource.processor.TestCssUrlAuthorizationProcessor

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.