This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.testing.sling-mock-1.1.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit a6e7c1a84902e7c990c482c3361fc0ec3a63275a Author: Stefan Seifert <[email protected]> AuthorDate: Mon Oct 13 14:32:45 2014 +0000 SLING-4042 move all mock projects to mocks/ subdirectory git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/sling-mock@1631416 13f79535-47bb-0310-9956-ffa450edef68 --- pom.xml | 2 +- src/site/markdown/index.md | 67 -------------- src/site/markdown/resource-resolver-types.md | 53 ----------- src/site/markdown/usage-content-loader.md | 59 ------------ src/site/markdown/usage-mocks.md | 130 --------------------------- 5 files changed, 1 insertion(+), 310 deletions(-) diff --git a/pom.xml b/pom.xml index d4ce536..f314611 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,7 @@ <groupId>org.apache.sling</groupId> <artifactId>sling</artifactId> <version>22</version> - <relativePath>../../parent/pom.xml</relativePath> + <relativePath>../../../parent/pom.xml</relativePath> </parent> <artifactId>org.apache.sling.testing.sling-mock</artifactId> diff --git a/src/site/markdown/index.md b/src/site/markdown/index.md deleted file mode 100644 index 407ab8b..0000000 --- a/src/site/markdown/index.md +++ /dev/null @@ -1,67 +0,0 @@ -## About Sling Mocks - -Mock implementation of selected Sling APIs. - - -### Maven Dependency - -```xml -<dependency> - <groupId>org.apache.sling</groupId> - <artifactId>org.apache.sling.testing.sling-mock</artifactId> - <version>1.0.0-SNAPHOT</version> -</dependency> -``` - -### Documentation - -* [Sling Mocks Usage][usage-mocks] -* [Content Loader Usage][usage-content-loader] -* [API Documentation][apidocs] -* [Changelog][changelog] - - -### Implemented mock features - -The mock implementation supports: - -* `ResourceResolver` implementation for reading and writing resource data using the Sling Resource API - * Backed by a [mocked][jcr-mock] or real Jackrabbit JCR implementation - * Uses the productive [Sling JCR resource provider implementation][jcr-resource] internally to do the Resource-JCR mapping - * Alternatively the non-JCR mock implementation provided by the - [Sling resourceresolver-mock implementation][resourceresolver-mock] can be used -* `AdpaterManager` implementation for registering adapter factories and resolving adaptions - * The implementation is thread-safe so it can be used in parallel running unit tests -* `SlingScriptHelper` implementation providing access to mocked request/response objects and supports getting - OSGi services from the [mocked OSGi][osgi-mock] environment. -* Implementations of the servlet-related Sling API classes like `SlingHttpServletRequest` and `SlingHttpServletRequest` - * It is possible to set request data to simulate a certian Sling HTTP request -* Additional services like `MockModelAdapterFactory` and `MimeTypeService` - -[osgi-mock]: http://sling.apache.org/testing/osgi-mock/ -[jcr-mock]: http://sling.apache.org/testing/jcr-mock/ -[jcr-resource]: http://svn.apache.org/repos/asf/sling/trunk/bundles/jcr/resource -[resourceresolver-mock]: http://svn.eu.apache.org/repos/asf/sling/trunk/testing/resourceresolver-moc - -The following features are *not supported*: - -* It is not possible (nor intended) to really execute sling components/scripts and render their results. - * The goal is to test supporting classes in Sling context, not the sling components/scripts themselves - -See [Sling Mocks Usage][usage-mocks]. - - -### Additional features - -Additional features provided: - -* `ContentLoader` supports importing JSON data and binary data into the mock resource hierarchy to easily - prepare a test fixture consisting of a hierarchy of resources and properties. - * The same JSON format can be used that is provided by the Sling GET servlet for output - -See [Content Loader Usage][usage-content-loader]. - -[usage-mocks]: usage-mocks.html -[usage-content-loader]: usage-content-loader.html -[apidocs]: apidocs/ -[changelog]: changes-report.html diff --git a/src/site/markdown/resource-resolver-types.md b/src/site/markdown/resource-resolver-types.md deleted file mode 100644 index 3cacb49..0000000 --- a/src/site/markdown/resource-resolver-types.md +++ /dev/null @@ -1,53 +0,0 @@ -## Resource Resolver Types - -The Sling Mocks resource resolver implementation supports different "types" of adapters for the mocks. -Depending on the type an underlying JCR repository is used or not, and the data ist stored in-memory or in a real -repository. - -This pages lists all resource resolver types currently supported. - -### RESOURCERESOLVER_MOCK (default) - -* Simulates an In-Memory resource tree, does not provide adaptions to JCR API. -* Based on the [Sling resourceresolver-mock implementation][resourceresolver-mock] implementation -* You can use it to make sure the code you want to test does not contain references to JCR API. -* Behaves slightly different from JCR resource mapping e.g. handling binary and date values. -* This resource resolver type is very fast because data is stored in memory and no JCR mapping is applied. - -### JCR_MOCK - -* Based on the [JCR Mocks][jcr-mock] implementation -* Uses the productive [Sling JCR resource provider implementation][jcr-resource] internally to do the Resource-JCR mapping -* Is quite fast because data is stored only in-memory - -### JCR_JACKRABBIT - -* Uses a real JCR Jackrabbit implementation (not Oak) as provided by [sling/commons/testing][sling-comons-testing] -* Full JCR/Sling features supported e.g. observations manager, transactions, versioning -* Uses the productive [Sling JCR resource provider implementation][jcr-resource] internally to do the Resource-JCR mapping -* Takes some seconds for startup on the first access -* All node types that are used when reading/writing data have to be registered - -_Warnings/Remarks_ - -* The repository is not cleared for each unit test, so make sure us use a unique node path for each unit test. -* To import Sling content you have to fully register all node types required for the data -* The [sling/commons/testing][sling-comons-testing] dependency introduces a lot of further dependencies from - jackrabbit and others, be careful that they do not conflict and are imported in the right order in your test project - -To use this type you have to declare an additional dependency in your test project: - -```xml -<dependency> - <groupId>org.apache.sling</groupId> - <artifactId>org.apache.sling.testing.sling-mock-jackrabbit</artifactId> - <version>1.0.0-SNAPHOT</version> - <scope>test</scope> -</dependency> -``` - - -[jcr-mock]: http://sling.apache.org/testing/jcr-mock/ -[jcr-resource]: http://svn.apache.org/repos/asf/sling/trunk/bundles/jcr/resource -[resourceresolver-mock]: http://svn.eu.apache.org/repos/asf/sling/trunk/testing/resourceresolver-moc -[sling-comons-testing]: http://svn.apache.org/repos/asf/sling/trunk/bundles/commons/testing diff --git a/src/site/markdown/usage-content-loader.md b/src/site/markdown/usage-content-loader.md deleted file mode 100644 index 8d88146..0000000 --- a/src/site/markdown/usage-content-loader.md +++ /dev/null @@ -1,59 +0,0 @@ -## Usage - -### Import resource data from JSON file in classpath - -With the `ContentLoader` it is possible to import structured resource and property data from a JSON file stored -in the classpath beneath the unit tests. This data can be used as text fixture for unit tests. - -Example JSON data: - -```json -{ - "jcr:primaryType": "app:Page", - "jcr:content": { - "jcr:primaryType": "app:PageContent", - "jcr:title": "English", - "app:template": "/apps/sample/templates/homepage", - "sling:resourceType": "sample/components/homepage", - "jcr:createdBy": "admin", - "jcr:created": "Thu Aug 07 2014 16:32:59 GMT+0200", - "par": { - "jcr:primaryType": "nt:unstructured", - "sling:resourceType": "foundation/components/parsys", - "colctrl": { - "jcr:primaryType": "nt:unstructured", - "layout": "2;colctrl-lt0", - "sling:resourceType": "foundation/components/parsys/colctrl" - } - } - } -} -``` - -Example code to import the JSON data: - -```java -ResourceResolver resolver = MockSling.newResourceResolver(); -ContentLoader contentLoader = new ContentLoader(resolver); -contentLoader.json("/sample-data.json", "/content/sample/en"); -``` - -This codes creates a new resource at `/content/sample/en` (and - if not existent - the parent resources) and -imports the JSON data to this node. It can be accessed using the Sling Resource or JCR API afterwards. - - -### Import binary data from file in classpath - -With the `ContentLoader` it is possible to import a binary file stored in the classpath beneath the unit tests. -The data is stored usig a nt:file/nt:resource or nt:resource node type. - -Example code to import a binary file: - -```java -ResourceResolver resolver = MockSling.newResourceResolver(); -ContentLoader contentLoader = new ContentLoader(resolver); -contentLoader.binaryFile("/sample-file.gif", "/content/binary/sample-file.gif"); -``` - -This codes creates a new resource at `/content/binary/sample-file.gif` (and - if not existent - the parent -resources) and imports the binary data to a jcr:content subnode. diff --git a/src/site/markdown/usage-mocks.md b/src/site/markdown/usage-mocks.md deleted file mode 100644 index a942c09..0000000 --- a/src/site/markdown/usage-mocks.md +++ /dev/null @@ -1,130 +0,0 @@ -## Usage - -The factory class `MockSling` allows to instantiate the different mock implementations. - -### Sling Resource Resolver - -Example: - -```java -// get a resource resolver -ResourceResolver resolver = MockSling.newResourceResolver(); - -// get a resource resolver backed by a specific repository type -ResourceResolver resolver = MockSling.newResourceResolver(ResourceResolverType.JCR_MOCK); -``` -The following types are supported currently: [Resource Resolver Types](resource-resolver-types.html) - -### Adapter Factories - -You can register your own or existing adapter factories to support adaptions e.g. for classes extending `SlingAdaptable`. - -Example: - -```java -// register adapter factory -BundleContext bundleContext = MockOsgi.newBundleContext(); -MockSling.setAdapterManagerBundleContext(bundleContext); -bundleContext.registerService(myAdapterFactory); - -// test adaption -MyClass object = resource.adaptTo(MyClass.class); - -// cleanup after unit test -MockSling.clearAdapterManagerBundleContext(); -``` - -Make sure you clean up the adapter manager bundle association after running the unit test otherwise it can -interfere with the following tests. If you use the `SlingContext` Junit rule this is done automatically for you. - - -### SlingScriptHelper - -Example: - -```java -// get script helper -SlingScriptHelper scriptHelper = MockSling.newSlingScriptHelper(); - -// get request -SlingHttpServletRequest request = scriptHelper.getRequest(); - -// get service -MyService object = scriptHelper.getService(MyService.class); -``` - -To support getting OSGi services you have to register them via the `BundleContext` interface of the -[JCR Mocks][jcr-mock] before. You can use an alternative factory method for the `SlingScriptHelper` providing -existing instances of request, response and bundle context. - - -### SlingHttpServletRequest - -Example for preparing a sling request with custom request data: - -```java -// prepare sling request -ResourceResolver resourceResolver = MockSling.newResourceResolver(); -MockSlingHttpServletRequest request = new MockSlingHttpServletRequest(resourceResolver); - -// simulate query string -request.setQueryString("param1=aaa¶m2=bbb"); - -// alternative - set query parameters as map -request.setParameterMap(ImmutableMap.<String,Object>builder() - .put("param1", "aaa") - .put("param2", "bbb") - .build()); - -// set current resource -request.setResource(resourceResolver.getResource("/content/sample")); - -// set sling request path info properties -MockRequestPathInfo requestPathInfo = (MockRequestPathInfo)request.getRequestPathInfo(); -requestPathInfo.setSelectorString("selector1.selector2"); -requestPathInfo.setExtension("html"); - -// set method -request.setMethod(HttpConstants.METHOD_POST); - -// set attributes -request.setAttribute("attr1", "value1"); - -// set headers -request.addHeader("header1", "value1"); - -// set cookies -request.addCookie(new Cookie("cookie1", "value1")); -``` - -### SlingHttpServletResponse - -Example for preparing a sling response which can collect the data that was written to it: - -```java -// prepare sling response -MockSlingHttpServletResponse response = new MockSlingHttpServletResponse(); - -// execute your unit test code that writes to the response... - -// validate status code -assertEquals(HttpServletResponse.SC_OK, response.getStatus()); - -// validate content type and content length -assertEquals("text/plain;charset=UTF-8", response.getContentType()); -assertEquals(CharEncoding.UTF_8, response.getCharacterEncoding()); -assertEquals(55, response.getContentLength()); - -// validate headers -assertTrue(response.containsHeader("header1")); -assertEquals("5", response.getHeader("header2")); - -// validate response body as string -assertEquals(TEST_CONTENT, response.getOutputAsString()); - -// validate response body as binary data -assertArrayEquals(TEST_DATA, response.getOutput()); -``` - - -[jcr-mock]: http://sling.apache.org/testing/jcr-mock/ -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
