Package org.apache.sling.commons.testing.integration

# Class HttpTestBase

java.lang.Object
junit.framework.Assert
junit.framework.TestCase
org.apache.sling.commons.testing.integration.HttpTestBase

All Implemented Interfaces:
  `junit.framework.Test`

Direct Known Subclasses:
  `HttpTest`

public class HttpTestBase extends junit.framework.TestCase
Base class for HTTP-based Sling Launchpad integration tests

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`protected class`
`HttpTestBase.TestNode`
Class that creates a test node under the given parentPath, and stores useful values for testing.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`CONTENT_TYPE_CSS`
`static final String`
`CONTENT_TYPE_DONTCARE`
Means "don't care about Content-Type" in getContent(...) methods
`static final String`
`CONTENT_TYPE_HTML`
`static final String`
`CONTENT_TYPE_JS`
`static final String`
`CONTENT_TYPE_JSON`
`static final String`
`CONTENT_TYPE_PLAIN`
`static final String`
`CONTENT_TYPE_XML`
`static final String`
`DEFAULT_EXT`
`static final String`
`DEFAULT_READINESS_MEDIA_TYPE`
`static final String`
`EXECUTE_RESOURCE_TYPE`
`static final String`
`HTTP_BASE_URL`
`static final String`
`HTTP_METHOD_GET`
`static final String`
`HTTP_METHOD_POST`
`static final String`
`HTTP_URL`
`protected org.apache.commons.httpclient.HttpClient`
`httpClient`
`static final int`
`MAX_READY_URL_INDEX`
`static final String`
`PROPERTY_SKIP_STARTUP_CHECK`
If this system property is set, the startup check is skipped.
`static final String`
`READINESS_MEDIA_TYPE_PROP`
`static final int`
`READY_TIMEOUT_SECONDS`
`static final String`
`READY_URL_PROP_PREFIX`
`static final String`
`SERVLET_CONTEXT`
`static final String`
`SLING_POST_SERVLET_CREATE_SUFFIX`
`static final String`
`SLING_RESOURCE_TYPE`
`static final String`
`TEST_PATH`
base path for test files
`protected SlingIntegrationTestClient`
`testClient`
`protected final List<String>`
`urlsToDelete`
URLs stored here are deleted in tearDown
`static final String`
`WEBDAV_BASE_URL`

## Constructor Summary

Constructors
Constructor
Description
`HttpTestBase()`

## Method Summary

Modifier and Type
Method
Description
`org.apache.commons.httpclient.HttpMethod`
`assertHttpStatus(String urlString, int expectedStatusCode)`
Verify that given URL returns expectedStatusCode
`org.apache.commons.httpclient.HttpMethod`
`assertHttpStatus(String urlString, int expectedStatusCode, String assertMessage)`
Verify that given URL returns expectedStatusCode
`void`
`assertJavascript(String expectedOutput, String jsonData, String code)`
`void`
`assertJavascript(String expectedOutput, String jsonData, String code, String testInfo)`
Evaluate given code using given jsonData as the "data" object
`org.apache.commons.httpclient.HttpMethod`
`assertPostStatus(String url, int expectedStatusCode, List<org.apache.commons.httpclient.NameValuePair> postParams, String assertMessage)`
Execute a POST request and check status
`String`
`executeScript(String localFilename)`
Upload script, execute with no parameters and return content
`String`
`executeScript(String localFilename, List<org.apache.commons.httpclient.NameValuePair> params)`
Upload script, execute with given parameters (optional) and return content
`String`
`getContent(String url, String expectedContentType)`
retrieve the contents of given URL and assert its content type (default to HTTP GET method)
`String`
`getContent(String url, String expectedContentType, List<org.apache.commons.httpclient.NameValuePair> params)`
retrieve the contents of given URL and assert its content type (default to HTTP GET method)
`String`
`getContent(String url, String expectedContentType, List<org.apache.commons.httpclient.NameValuePair> params, int expectedStatusCode)`
retrieve the contents of given URL and assert its content type (default to HTTP GET method)
`String`
`getContent(String url, String expectedContentType, List<org.apache.commons.httpclient.NameValuePair> params, int expectedStatusCode, String httpMethod)`
retrieve the contents of given URL and assert its content type
`org.apache.commons.httpclient.Credentials`
`getDefaultCredentials()`
Generate default credentials used for HTTP requests.
`static String`
`getResponseBodyAsStream(org.apache.commons.httpclient.HttpMethodBase m, int maxLength)`
Return m's response body as a string, optionally limiting the length that we read
`boolean`
`isBundleVersionAtLeast(String bundleSymbolicName, String version)`
Returns true if the bundle version deployed on the Sling instance is present and at least of the specified version
`static String`
`removeEndingSlash(String str)`
`final void`
`setReadinessContentType(String extension, String contentTypePrefix)`
Set the extension and content-type prefix to use for GET requests that check Sling readiness
`protected void`
`setUp()`
`protected boolean`
`slingServerReady()`
Return true if able to create and retrieve a node on server
`protected void`
`tearDown()`
`String`
`uploadTestScript(String scriptPath, String localFilename, String filenameOnServer)`
upload rendering test script, and return its URL for future deletion
`protected void`
`waitForSlingStartup()`
On the server side, initialization of Sling bundles is done asynchronously once the webapp is started.

### Methods inherited from class junit.framework.TestCase

`assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, createResult, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, runTest, setName, toString`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### PROPERTY_SKIP_STARTUP_CHECK

public static final String PROPERTY_SKIP_STARTUP_CHECK
If this system property is set, the startup check is skipped.

See Also:
  - Constant Field Values

### HTTP_URL

public static final String HTTP_URL

### HTTP_BASE_URL

public static final String HTTP_BASE_URL

### WEBDAV_BASE_URL

public static final String WEBDAV_BASE_URL

### SERVLET_CONTEXT

public static final String SERVLET_CONTEXT

### READINESS_MEDIA_TYPE_PROP

public static final String READINESS_MEDIA_TYPE_PROP

See Also:
  - Constant Field Values

### DEFAULT_READINESS_MEDIA_TYPE

public static final String DEFAULT_READINESS_MEDIA_TYPE

See Also:
  - Constant Field Values

### READY_URL_PROP_PREFIX

public static final String READY_URL_PROP_PREFIX

See Also:
  - Constant Field Values

### MAX_READY_URL_INDEX

public static final int MAX_READY_URL_INDEX

See Also:
  - Constant Field Values

### TEST_PATH

public static final String TEST_PATH
base path for test files

See Also:
  - Constant Field Values

### HTTP_METHOD_GET

public static final String HTTP_METHOD_GET

See Also:
  - Constant Field Values

### HTTP_METHOD_POST

public static final String HTTP_METHOD_POST

See Also:
  - Constant Field Values

### CONTENT_TYPE_HTML

public static final String CONTENT_TYPE_HTML

See Also:
  - Constant Field Values

### CONTENT_TYPE_XML

public static final String CONTENT_TYPE_XML

See Also:
  - Constant Field Values

### CONTENT_TYPE_PLAIN

public static final String CONTENT_TYPE_PLAIN

See Also:
  - Constant Field Values

### CONTENT_TYPE_JSON

public static final String CONTENT_TYPE_JSON

See Also:
  - Constant Field Values

### CONTENT_TYPE_JS

public static final String CONTENT_TYPE_JS

See Also:
  - Constant Field Values

### CONTENT_TYPE_CSS

public static final String CONTENT_TYPE_CSS

See Also:
  - Constant Field Values

### SLING_RESOURCE_TYPE

public static final String SLING_RESOURCE_TYPE

See Also:
  - Constant Field Values

### SLING_POST_SERVLET_CREATE_SUFFIX

public static final String SLING_POST_SERVLET_CREATE_SUFFIX

See Also:
  - Constant Field Values

### DEFAULT_EXT

public static final String DEFAULT_EXT

See Also:
  - Constant Field Values

### EXECUTE_RESOURCE_TYPE

public static final String EXECUTE_RESOURCE_TYPE

### READY_TIMEOUT_SECONDS

public static final int READY_TIMEOUT_SECONDS

### testClient

protected SlingIntegrationTestClient testClient

### httpClient

protected org.apache.commons.httpclient.HttpClient httpClient

### CONTENT_TYPE_DONTCARE

public static final String CONTENT_TYPE_DONTCARE
Means "don't care about Content-Type" in getContent(...) methods

See Also:
  - Constant Field Values

### urlsToDelete

protected final List<String> urlsToDelete
URLs stored here are deleted in tearDown

## Constructor Details

### HttpTestBase

public HttpTestBase()

## Method Details

### removeEndingSlash

public static String removeEndingSlash(String str)

### setUp

protected void setUp() throws Exception

Overrides:
  `setUp` in class `junit.framework.TestCase`
Throws:
  `Exception`

### getDefaultCredentials

public org.apache.commons.httpclient.Credentials getDefaultCredentials()
Generate default credentials used for HTTP requests.

### tearDown

protected void tearDown() throws Exception

Overrides:
  `tearDown` in class `junit.framework.TestCase`
Throws:
  `Exception`

### waitForSlingStartup

protected void waitForSlingStartup() throws Exception
On the server side, initialization of Sling bundles is done asynchronously once the webapp is started. This method checks that everything's ready on the server side, by calling an URL that requires the SlingPostServlet and the JCR repository to work correctly.

Throws:
  `Exception`

### slingServerReady

protected boolean slingServerReady() throws Exception
Return true if able to create and retrieve a node on server

Throws:
  `Exception`

### assertHttpStatus

public org.apache.commons.httpclient.HttpMethod assertHttpStatus(String urlString, int expectedStatusCode, String assertMessage) throws IOException
Verify that given URL returns expectedStatusCode

Returns:
  the HttpMethod executed
Throws:
  `IOException`

### assertHttpStatus

public org.apache.commons.httpclient.HttpMethod assertHttpStatus(String urlString, int expectedStatusCode) throws IOException
Verify that given URL returns expectedStatusCode

Returns:
  the HttpMethod executed
Throws:
  `IOException`

### assertPostStatus

public org.apache.commons.httpclient.HttpMethod assertPostStatus(String url, int expectedStatusCode, List<org.apache.commons.httpclient.NameValuePair> postParams, String assertMessage) throws IOException
Execute a POST request and check status

Returns:
  the HttpMethod executed
Throws:
  `IOException`

### getContent

public String getContent(String url, String expectedContentType) throws IOException
retrieve the contents of given URL and assert its content type (default to HTTP GET method)

Throws:
  `IOException`

### getContent

public String getContent(String url, String expectedContentType, List<org.apache.commons.httpclient.NameValuePair> params) throws IOException
retrieve the contents of given URL and assert its content type (default to HTTP GET method)

Throws:
  `IOException`

### getContent

public String getContent(String url, String expectedContentType, List<org.apache.commons.httpclient.NameValuePair> params, int expectedStatusCode) throws IOException
retrieve the contents of given URL and assert its content type (default to HTTP GET method)

Parameters:
  `expectedContentType` - use CONTENT_TYPE_DONTCARE if must not be checked
Throws:
  `IOException`
  `org.apache.commons.httpclient.HttpException`

### getContent

public String getContent(String url, String expectedContentType, List<org.apache.commons.httpclient.NameValuePair> params, int expectedStatusCode, String httpMethod) throws IOException
retrieve the contents of given URL and assert its content type

Parameters:
  `expectedContentType` - use CONTENT_TYPE_DONTCARE if must not be checked
  `httpMethod` - supports just GET and POST methods
Throws:
  `IOException`
  `org.apache.commons.httpclient.HttpException`

### uploadTestScript

public String uploadTestScript(String scriptPath, String localFilename, String filenameOnServer) throws IOException
upload rendering test script, and return its URL for future deletion

Throws:
  `IOException`

### executeScript

public String executeScript(String localFilename) throws Exception
Upload script, execute with no parameters and return content

Throws:
  `Exception`

### executeScript

public String executeScript(String localFilename, List<org.apache.commons.httpclient.NameValuePair> params) throws Exception
Upload script, execute with given parameters (optional) and return content

Throws:
  `Exception`

### assertJavascript

public void assertJavascript(String expectedOutput, String jsonData, String code) throws IOException

Throws:
  `IOException`

### assertJavascript

public void assertJavascript(String expectedOutput, String jsonData, String code, String testInfo) throws IOException
Evaluate given code using given jsonData as the "data" object

Throws:
  `IOException`

### getResponseBodyAsStream

public static String getResponseBodyAsStream(org.apache.commons.httpclient.HttpMethodBase m, int maxLength) throws IOException
Return m's response body as a string, optionally limiting the length that we read

Parameters:
  `maxLength` - if 0, no limit
Throws:
  `IOException`

### setReadinessContentType

public final void setReadinessContentType(String extension, String contentTypePrefix)
Set the extension and content-type prefix to use for GET requests that check Sling readiness

### isBundleVersionAtLeast

public boolean isBundleVersionAtLeast(String bundleSymbolicName, String version) throws IOException
Returns true if the bundle version deployed on the Sling instance is present and at least of the specified version

Parameters:
  `bundleSymbolicName` - the bundle name to check
  `version` - the minimal version of the bundle that should be deployed
Returns:
  true if the bundle is deployed with the specified version, false if it is not deployed or the version it too old
Throws:
  `IOException`