@Test
  public void testBasicURLWithNonExistingImageRewriting() {

    // Set the properties
    Properties props = new Properties();
    config = new JawrConfig("css", props);
    ServletContext servletContext = new MockServletContext();
    config.setContext(servletContext);
    config.setServletMapping("/css");
    config.setCharsetName("UTF-8");
    addGeneratorRegistryToConfig(config, "css");
    status =
        new BundleProcessingStatus(
            BundleProcessingStatus.BUNDLE_PROCESSING_TYPE, bundle, rsHandler, config);

    // Set up the Image servlet Jawr config
    props = new Properties();
    JawrConfig imgServletJawrConfig = new JawrConfig(JawrConstant.BINARY_TYPE, props);
    addGeneratorRegistryToConfig(imgServletJawrConfig, JawrConstant.BINARY_TYPE);

    BinaryResourcesHandler imgRsHandler =
        new BinaryResourcesHandler(imgServletJawrConfig, rsHandler, null);
    servletContext.setAttribute(JawrConstant.BINARY_CONTEXT_ATTRIBUTE, imgRsHandler);
    // basic test
    StringBuffer data = new StringBuffer("background-image:url(../../../../images/someImage.gif);");
    // the image is at /images
    String filePath = "/css/folder/subfolder/subfolder/someCSS.css";
    // Expected: goes 1 back for servlet mapping, 1 back for prefix, 1 back for the id having a
    // subdir path.
    String expectedURL = "background-image:url(../../../images/someImage.gif);";
    status.setLastPathAdded(filePath);

    String result = processor.postProcessBundle(status, data).toString();
    assertEquals("URL was not rewritten properly", expectedURL, result);
  }
  @Test
  public void testURLImgClasspathCssRewriting() {

    // Set the properties
    Properties props = new Properties();
    props.setProperty(JawrConfig.JAWR_CSS_CLASSPATH_HANDLE_IMAGE, "true");
    config = new JawrConfig("css", props);
    ServletContext servletContext = new MockServletContext();
    config.setContext(servletContext);
    config.setServletMapping("/css");
    config.setCharsetName("UTF-8");
    addGeneratorRegistryToConfig(config, "css");

    // Set up the Image servlet Jawr config
    props = new Properties();
    JawrConfig imgServletJawrConfig = new JawrConfig(JawrConstant.BINARY_TYPE, props);
    GeneratorRegistry generatorRegistry =
        addGeneratorRegistryToConfig(imgServletJawrConfig, JawrConstant.BINARY_TYPE);
    generatorRegistry.setResourceReaderHandler(rsHandler);
    imgServletJawrConfig.setServletMapping("/cssImg/");
    BinaryResourcesHandler imgRsHandler =
        new BinaryResourcesHandler(imgServletJawrConfig, rsHandler, null);
    servletContext.setAttribute(JawrConstant.BINARY_CONTEXT_ATTRIBUTE, imgRsHandler);

    status =
        new BundleProcessingStatus(
            BundleProcessingStatus.BUNDLE_PROCESSING_TYPE, bundle, null, config);

    // Css data
    StringBuffer data = new StringBuffer("background-image:url(jar:style/images/logo.png);");

    // Css path
    String filePath = "style/default/assets/someCSS.css";

    // Expected: goes 3 back to the context path, then add the CSS image servlet mapping,
    // then go to the image path
    // the image is at classPath:/style/images/someImage.gif
    String expectedURL =
        "background-image:url(../../../cssImg/jar_cb3015770054/style/images/logo.png);";
    status.setLastPathAdded(filePath);

    String result = processor.postProcessBundle(status, data).toString();
    assertEquals("URL was not rewritten properly", expectedURL, result);
  }
  @SuppressWarnings("unchecked")
  @Before
  public void setUp() throws Exception {
    // Bundle path (full url would be: /servletMapping/prefix/css/bundle.css
    final String bundlePath = "/css/bundle.css";
    // Bundle url prefix
    final String urlPrefix = "/v00";

    when(rsHandler.getResourceAsStream(Matchers.anyString()))
        .thenAnswer(
            new Answer<InputStream>() {

              @Override
              public InputStream answer(InvocationOnMock invocation) throws Throwable {
                String resourceName = (String) invocation.getArguments()[0];
                if (resourceName.equals("jar:style/images/logo.png")) {
                  return new ByteArrayInputStream("Fake value".getBytes());
                }

                throw new ResourceNotFoundException(resourceName);
              }
            });

    when(bundle.getId()).thenReturn(bundlePath);
    when(bundle.getURLPrefix(Matchers.anyMap())).thenReturn(urlPrefix);

    config = new JawrConfig("css", new Properties());
    ServletContext servletContext = new MockServletContext();
    config.setContext(servletContext);
    config.setServletMapping("/js");
    config.setCharsetName("UTF-8");
    status =
        new BundleProcessingStatus(
            BundleProcessingStatus.BUNDLE_PROCESSING_TYPE, bundle, null, config);
    addGeneratorRegistryToConfig(config, "js");
    status.setLastPathAdded("/css/someCSS.css");
    processor = new CSSURLPathRewriterPostProcessor();
  }