You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2010/02/23 20:00:15 UTC

svn commit: r915484 - /sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/TypeHintTest.java

Author: justin
Date: Tue Feb 23 19:00:15 2010
New Revision: 915484

URL: http://svn.apache.org/viewvc?rev=915484&view=rev
Log:
SLING-1333 - adding integration test for reference and weak reference type hints

Added:
    sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/TypeHintTest.java

Added: sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/TypeHintTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/TypeHintTest.java?rev=915484&view=auto
==============================================================================
--- sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/TypeHintTest.java (added)
+++ sling/trunk/launchpad/testing/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/post/TypeHintTest.java Tue Feb 23 19:00:15 2010
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.sling.launchpad.webapp.integrationtest.servlets.post;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.sling.commons.json.JSONObject;
+import org.apache.sling.commons.testing.integration.HttpTestBase;
+import org.apache.sling.servlets.post.SlingPostConstants;
+
+/**
+ * Integration test of type hints in the post servlet.
+ */
+public class TypeHintTest extends HttpTestBase {
+    public static final String TEST_BASE_PATH = "/sling-tests";
+    private String postUrl;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        postUrl = HTTP_BASE_URL + TEST_BASE_PATH + "/" + System.currentTimeMillis();
+    }
+
+    public void testReferenceTypes() throws Exception {
+        final Map<String, String> props = new HashMap<String, String>();
+        props.put("a", "");
+        props.put("jcr:mixinTypes", "mix:referenceable");
+
+        final String createdNodeUrl = testClient.createNode(postUrl + SlingPostConstants.DEFAULT_CREATE_SUFFIX, props);
+        String uuid = getProperty(createdNodeUrl, "jcr:uuid");
+        String path = getPath(createdNodeUrl);
+
+        props.clear();
+        props.put("a", path);
+        props.put("a@TypeHint", "Reference");
+        props.put("b", path);
+        props.put("b@TypeHint", "WeakReference");
+        final String referencingNodeUrl = testClient.createNode(postUrl + SlingPostConstants.DEFAULT_CREATE_SUFFIX, props);
+
+        String refCreatedValue = getProperty(referencingNodeUrl, "a");
+        String weakrefCreatedValue = getProperty(referencingNodeUrl, "b");
+
+        assertEquals(uuid, refCreatedValue);
+        assertEquals(uuid, weakrefCreatedValue);
+    }
+
+    private String getPath(String url) {
+        return url.substring(HTTP_BASE_URL.length());
+    }
+
+    private String getProperty(String url, String name) throws Exception {
+        String content = getContent(url + ".json", CONTENT_TYPE_JSON);
+        JSONObject jo = new JSONObject(content);
+        return jo.getString(name);
+    }
+}