Author: scottbw
Date: Mon Mar 28 13:38:38 2011
New Revision: 1086227

URL: http://svn.apache.org/viewvc?rev=1086227&view=rev
Log:
Added catch points for bad parameters in the Whitelist controller, and added a 
set of functional tests to check we have correct behaviour

Added:
    
incubator/wookie/trunk/src-tests/org/apache/wookie/tests/functional/WhiteListControllerTest.java
Modified:
    
incubator/wookie/trunk/src/org/apache/wookie/controller/WhiteListController.java

Added: 
incubator/wookie/trunk/src-tests/org/apache/wookie/tests/functional/WhiteListControllerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src-tests/org/apache/wookie/tests/functional/WhiteListControllerTest.java?rev=1086227&view=auto
==============================================================================
--- 
incubator/wookie/trunk/src-tests/org/apache/wookie/tests/functional/WhiteListControllerTest.java
 (added)
+++ 
incubator/wookie/trunk/src-tests/org/apache/wookie/tests/functional/WhiteListControllerTest.java
 Mon Mar 28 13:38:38 2011
@@ -0,0 +1,216 @@
+/*
+ *  Licensed 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.wookie.tests.functional;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.methods.DeleteMethod;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.junit.Test;
+
+public class WhiteListControllerTest extends AbstractControllerTest {
+       
+       private static final String WHITELIST_SERVICE_URL_VALID = 
TEST_SERVER_LOCATION+"whitelist";
+
+       @Test
+       public void getEntriesUnauthorized(){
+               try {
+               HttpClient client = new HttpClient();
+               GetMethod get = new GetMethod(WHITELIST_SERVICE_URL_VALID);
+               client.executeMethod(get);
+               int code = get.getStatusCode();
+               assertEquals(401, code);
+           }
+           catch (Exception e) {
+               e.printStackTrace();
+               fail("get failed");
+           }
+       }
+       
+       @Test
+       public void getEntries(){
+               try {
+               HttpClient client = new HttpClient();
+               GetMethod get = new GetMethod(WHITELIST_SERVICE_URL_VALID);
+                       setAuthenticationCredentials(client);
+               client.executeMethod(get);
+               int code = get.getStatusCode();
+               assertEquals(200, code);
+           }
+           catch (Exception e) {
+               e.printStackTrace();
+               fail("get failed");
+           }
+       }
+       
+       @Test
+       public void addEntry(){
+               try {
+               HttpClient client = new HttpClient();
+               PostMethod post = new PostMethod(WHITELIST_SERVICE_URL_VALID);
+                       setAuthenticationCredentials(client);
+               post.setParameter("url", "http://test.apache.org";);
+               client.executeMethod(post);
+               int code = post.getStatusCode();
+               assertEquals(201, code);
+           }
+           catch (Exception e) {
+               e.printStackTrace();
+               fail("post failed");
+           }   
+               try {
+               HttpClient client = new HttpClient();
+               GetMethod get = new GetMethod(WHITELIST_SERVICE_URL_VALID);
+                       setAuthenticationCredentials(client);
+               client.executeMethod(get);
+               int code = get.getStatusCode();
+               assertEquals(200, code);
+               
assertTrue(get.getResponseBodyAsString().contains("http://test.apache.org";));
+           }
+           catch (Exception e) {
+               e.printStackTrace();
+               fail("get failed");
+           }
+       }
+       
+       @Test
+       public void removeEntry(){
+               String id = null;
+               try {
+               HttpClient client = new HttpClient();
+               GetMethod get = new GetMethod(WHITELIST_SERVICE_URL_VALID);
+                       setAuthenticationCredentials(client);
+               get.setRequestHeader("Content-type", "application/json");
+               client.executeMethod(get);
+               int code = get.getStatusCode();
+               assertEquals(200, code);
+               
assertTrue(get.getResponseBodyAsString().contains("http://test.apache.org";));
+               // Now find the ID and delete it
+               JSONObject obj = new JSONObject(get.getResponseBodyAsString());
+               JSONArray entries = obj.getJSONArray("entries");
+               for (int i=0;i<entries.length();i++){
+                       JSONObject entry = entries.getJSONObject(i);
+                       if 
(entry.getString("url").equals("http://test.apache.org";)) id = 
entry.getString("id");
+               }
+               }
+           catch (Exception e) {
+               e.printStackTrace();
+               fail("get failed");
+           }
+               try {
+               HttpClient client = new HttpClient();
+               DeleteMethod del = new 
DeleteMethod(WHITELIST_SERVICE_URL_VALID+"/"+id);
+                       setAuthenticationCredentials(client);
+               client.executeMethod(del);
+               int code = del.getStatusCode();
+               assertEquals(200, code);
+           }
+           catch (Exception e) {
+               e.printStackTrace();
+               fail("delete failed");
+           }
+               try {
+               HttpClient client = new HttpClient();
+               GetMethod get = new GetMethod(WHITELIST_SERVICE_URL_VALID);
+               get.setRequestHeader("Content-type", "application/json");
+                       setAuthenticationCredentials(client);
+               client.executeMethod(get);
+               int code = get.getStatusCode();
+               assertEquals(200, code);
+               System.out.println(get.getResponseBodyAsString());
+               
assertFalse(get.getResponseBodyAsString().contains("http://test.apache.org";));
+           }
+           catch (Exception e) {
+               e.printStackTrace();
+               fail("get failed");
+           }
+       }
+       
+       @Test
+       public void removeNonExistantEntry(){
+               try {
+               HttpClient client = new HttpClient();
+               DeleteMethod del = new 
DeleteMethod(WHITELIST_SERVICE_URL_VALID+"/99999999");
+                       setAuthenticationCredentials(client);
+               client.executeMethod(del);
+               int code = del.getStatusCode();
+               assertEquals(404, code);
+           }
+           catch (Exception e) {
+               e.printStackTrace();
+               fail("delete failed");
+           }   
+       }
+       
+       @Test
+       public void addEntryNoUrl(){
+               try {
+               HttpClient client = new HttpClient();
+               PostMethod post = new PostMethod(WHITELIST_SERVICE_URL_VALID);
+                       setAuthenticationCredentials(client);
+               client.executeMethod(post);
+               int code = post.getStatusCode();
+               assertEquals(400, code);
+           }
+           catch (Exception e) {
+               e.printStackTrace();
+               fail("post failed");
+           }   
+       }
+       
+       @Test
+       public void addEntryInvalidUrl(){
+               try {
+               HttpClient client = new HttpClient();
+               PostMethod post = new PostMethod(WHITELIST_SERVICE_URL_VALID);
+               post.setParameter("url", "I AM NOT A URL");
+                       setAuthenticationCredentials(client);
+               client.executeMethod(post);
+               int code = post.getStatusCode();
+               assertEquals(400, code);
+           }
+           catch (Exception e) {
+               e.printStackTrace();
+               fail("post failed");
+           }   
+       }
+       
+       @Test
+       public void addDuplicateEntry(){
+               try {
+               HttpClient client = new HttpClient();
+               PostMethod post = new PostMethod(WHITELIST_SERVICE_URL_VALID);
+                       setAuthenticationCredentials(client);
+               post.setParameter("url", "http://test.apache.org";);
+               client.executeMethod(post);
+               int code = post.getStatusCode();
+               assertEquals(201, code);
+               client.executeMethod(post);
+               code = post.getStatusCode();
+               assertEquals(409, code);
+           }
+           catch (Exception e) {
+               e.printStackTrace();
+               fail("post failed");
+           }
+       }
+
+}

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/controller/WhiteListController.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/controller/WhiteListController.java?rev=1086227&r1=1086226&r2=1086227&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/controller/WhiteListController.java
 (original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/controller/WhiteListController.java
 Mon Mar 28 13:38:38 2011
@@ -26,6 +26,7 @@ import org.apache.wookie.exceptions.Reso
 import org.apache.wookie.exceptions.ResourceNotFoundException;
 import org.apache.wookie.exceptions.UnauthorizedAccessException;
 import org.apache.wookie.helpers.WhitelistHelper;
+import org.apache.wookie.w3c.util.IRIValidator;
 
 /**
  * Controller for Whitelist entries
@@ -56,7 +57,11 @@ public class WhiteListController extends
                
                String url = request.getParameter("url");
                if (url == null || url.trim().length() == 0) throw new 
InvalidParametersException();
+               if (!IRIValidator.isValidIRI(url)) throw new 
InvalidParametersException();
                IPersistenceManager persistenceManager = 
PersistenceManagerFactory.getPersistenceManager();
+               // Check for duplicates
+               IWhitelist[] matches = 
persistenceManager.findByValue(IWhitelist.class, "fUrl", url);
+               if (matches.length != 0) throw new 
ResourceDuplicationException();
                IWhitelist entry = 
persistenceManager.newInstance(IWhitelist.class);
                entry.setfUrl(url);
                return persistenceManager.save(entry);


Reply via email to