AbstractBaseVerifyPdfTestCase.java :  » Testing » webtest » com » canoo » webtest » plugins » pdftest » Java Open Source

Java Open Source » Testing » webtest 
webtest » com » canoo » webtest » plugins » pdftest » AbstractBaseVerifyPdfTestCase.java
// Copyright  2002-2005 Canoo Engineering AG, Switzerland.
package com.canoo.webtest.plugins.pdftest;

import java.io.IOException;
import java.net.URL;
import java.util.Collections;
import java.util.List;

import com.canoo.webtest.boundary.FileBoundary;
import com.canoo.webtest.boundary.UrlBoundary;
import com.canoo.webtest.plugins.pdftest.htmlunit.PDFEncryptionPermission;
import com.canoo.webtest.plugins.pdftest.htmlunit.PDFPage;
import com.canoo.webtest.plugins.pdftest.htmlunit.pdfbox.PdfBoxPDFPage;
import com.canoo.webtest.self.ContextStub;
import com.canoo.webtest.steps.BaseStepTestCase;
import com.canoo.webtest.steps.Step;
import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.SubmitMethod;
import com.gargoylesoftware.htmlunit.WebResponse;
import com.gargoylesoftware.htmlunit.WebResponseData;
import com.gargoylesoftware.htmlunit.WebResponseImpl;

/**
 * @author Etienne Studer
 * @author Marc Guillemot
 */
public abstract class AbstractBaseVerifyPdfTestCase extends BaseStepTestCase
{
  private PDFPage pdfPageStub;

  public void testNoCurrentResponse() throws IOException {
        assertStepRejectsNullResponse(getMinimallyConfiguredStep());
    }
    
    protected void tearDown() throws Exception {
      final Page page = getContext().getCurrentResponse();
      if (page != null)
        page.cleanUp();
      if (pdfPageStub != null)
        pdfPageStub.cleanUp();
      super.tearDown();
    }
    
    /**
     * Gets an instance of the step under test with minimal configuration
     * allowing verifyParameters() to be successfull.
     * @return default is same as getStep()
     */
    protected Step getMinimallyConfiguredStep() {
    return getStep();
  }

  /**
     * Creates a context with the default file for pdf tests
     * @see com.canoo.webtest.steps.BaseStepTestCase#createContext()
     */
    protected ContextStub createContext()
    {
      return new PdfContextStub(PdfTestResources.DEFAULT_FILE);
    }

    public void testNonPdf() throws IOException {
        final Step step = getMinimallyConfiguredStep();
        getContext().setDefaultResponse("", "text/plain");
        assertErrorOnExecute(step, "Current response is not a PDF page but has following mime type text/plain", "");
    }

    protected PDFPage getPDFPageStub() {
      if (pdfPageStub == null)
        pdfPageStub = createPDFPageStub();
      
      return pdfPageStub;
    }
      
    private PDFPage createPDFPageStub() {
      final byte[] pdfBytes = FileBoundary.getBytes(PdfTestResources.DEFAULT_FILE);
      final WebResponseData data = new WebResponseData(pdfBytes, 200, "OK", Collections.EMPTY_LIST);
      final URL url = UrlBoundary.tryCreateUrl(ContextStub.SOME_BASE_URL);
      final WebResponse webResp = new WebResponseImpl(data, url, SubmitMethod.GET, 1);
        return new PdfBoxPDFPage(webResp, null)
        {
          public boolean isEncrypted() {
                return true;
            }

            public String getText(String s1, String s2, String s3, String s4) {
                throw new RuntimeException("Dummy Error");
            }

            public List getBookmarks() {
                throw new RuntimeException("Dummy Error");
            }

            public List getLinks() {
                throw new RuntimeException("Dummy Error");
            }

          public boolean hasPermission(final PDFEncryptionPermission permission) {
                throw new RuntimeException("Dummy Error");
            }
        };
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.