Author: scottbw
Date: Tue May 11 19:18:22 2010
New Revision: 943234

URL: http://svn.apache.org/viewvc?rev=943234&view=rev
Log:
Added conformance tests for W3C WARP, and made some changes to the validation 
of <access> elements in order to pass them.

Added:
    
incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/Access.java
Modified:
    
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/impl/AccessEntity.java

Added: 
incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/Access.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/Access.java?rev=943234&view=auto
==============================================================================
--- 
incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/Access.java
 (added)
+++ 
incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/Access.java
 Tue May 11 19:18:22 2010
@@ -0,0 +1,185 @@
+/*
+ *  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.w3c.test;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
+import org.apache.wookie.w3c.W3CWidget;
+import org.apache.wookie.w3c.W3CWidgetFactory;
+import org.apache.wookie.w3c.exceptions.BadManifestException;
+import org.apache.wookie.w3c.exceptions.BadWidgetZipFileException;
+import org.apache.wookie.w3c.exceptions.InvalidContentTypeException;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * Test cases for W3C WARP conformance
+ *
+ */
+public class Access {
+       
+       private static final String prefix = 
"http://dev.w3.org/2006/waf/widgets-access/test-suite/test-cases/";;
+       
+        static File download;
+        static File output;
+       
+       @BeforeClass
+       public static void setup() throws IOException{
+               download = File.createTempFile("wookie-download", "wgt");
+               output = File.createTempFile("wookie-output", "tmp");
+       }
+       
+       @AfterClass
+       public static void tearDown(){
+               download.delete();
+               output.delete();
+       }
+       
+       private W3CWidget downloadWidget(String url) throws 
InvalidContentTypeException, BadWidgetZipFileException, BadManifestException, 
Exception{
+               return downloadWidget(url, true);
+       }
+       
+       private W3CWidget downloadWidget(String url, boolean ignoreContentType) 
throws InvalidContentTypeException, BadWidgetZipFileException, 
BadManifestException, Exception{
+               W3CWidgetFactory fac = new W3CWidgetFactory();
+               fac.setLocalPath("http:localhost/widgets");
+               fac.setFeatures(new String[]{"feature:a9bb79c1"});
+               fac.setEncodings(new String[]{"UTF-8", 
"ISO-8859-1","Windows-1252"});
+               if (download.exists()) download.delete();
+               if (output.exists()) output.delete();
+               output.mkdir();
+               fac.setOutputDirectory(output.getAbsolutePath());
+               return fac.parse(new URL(url),ignoreContentType);
+       }
+       
+       public W3CWidget processWidgetNoErrors(String url){
+               try {
+                       return downloadWidget(url);
+               } catch (Exception e) {
+                       e.printStackTrace();
+                       fail();
+                       return null;
+               }
+       }
+
+       @Test
+       public void fa(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-6/000/fa.wgt");
+               assertEquals(0, widget.getAccessList().size());
+       }
+       
+       @Test
+       public void ga(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-7/000/ga.wgt");
+               assertEquals(1, widget.getAccessList().size());
+               assertEquals("*", widget.getAccessList().get(0).getOrigin());
+       }       
+       
+       @Test
+       public void gb(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-7/001/gb.wgt");
+               assertEquals(1, widget.getAccessList().size());
+               assertEquals("*", widget.getAccessList().get(0).getOrigin());
+       }       
+       
+       @Test
+       public void ha(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-8/000/ha.wgt");
+               assertEquals(0, widget.getAccessList().size());
+       }       
+
+       @Test
+       public void hb(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-8/001/hb.wgt");
+               assertEquals(1, widget.getAccessList().size());
+               assertEquals("pass://pass", 
widget.getAccessList().get(0).getOrigin());
+       }
+       
+       @Test
+       public void hc(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-8/002/hc.wgt");
+               assertEquals(1, widget.getAccessList().size());
+               assertEquals("pass://pass", 
widget.getAccessList().get(0).getOrigin());
+       }
+       
+       @Test
+       public void hd(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-8/003/hd.wgt");
+               assertEquals(0, widget.getAccessList().size());
+       }
+       
+       @Test
+       public void he(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-8/004/he.wgt");
+               assertEquals(0, widget.getAccessList().size());
+       }
+       
+       @Test
+       public void hf(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-8/005/hf.wgt");
+               assertEquals(0, widget.getAccessList().size());
+       }
+       
+       @Test
+       public void hg(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-8/006/hg.wgt");
+               assertEquals(1, widget.getAccessList().size());
+               assertEquals("http://w3.org";, 
widget.getAccessList().get(0).getOrigin());
+       }
+       
+       @Test
+       public void hh(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-8/007/hh.wgt");
+               assertEquals(0, widget.getAccessList().size());
+       }
+       
+       @Test
+       public void hi(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-8/008/hi.wgt");
+               assertEquals(0, widget.getAccessList().size());
+       }
+       
+       @Test
+       public void hj(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-8/009/hj.wgt");
+               assertEquals(0, widget.getAccessList().size());
+       }
+       
+       @Test
+       public void ia(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-9/000/ia.wgt");
+               assertEquals(1, widget.getAccessList().size());
+               assertEquals("http://w3.org";, 
widget.getAccessList().get(0).getOrigin());
+               assertEquals(true, 
widget.getAccessList().get(0).hasSubDomains());
+       }
+       
+       @Test
+       public void ib(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-9/001/ib.wgt");
+               assertEquals(1, widget.getAccessList().size());
+               assertEquals("http://w3.org";, 
widget.getAccessList().get(0).getOrigin());
+               assertEquals(false, 
widget.getAccessList().get(0).hasSubDomains());
+       }
+       
+       @Test
+       public void ic(){
+               W3CWidget widget = 
processWidgetNoErrors(prefix+"ta-9/002/ic.wgt");
+               assertEquals(0, widget.getAccessList().size());
+       }
+
+}

Modified: 
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/impl/AccessEntity.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/impl/AccessEntity.java?rev=943234&r1=943233&r2=943234&view=diff
==============================================================================
--- 
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/impl/AccessEntity.java
 (original)
+++ 
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/impl/AccessEntity.java
 Tue May 11 19:18:22 2010
@@ -70,6 +70,7 @@ public class AccessEntity implements IAc
                        
processSubdomains(element.getAttribute(IW3CXMLConfiguration.SUBDOMAINS_ATTRIBUTE));
                } catch (Exception e) {
                        fSubDomains = false;
+                       fOrigin = null;
                }                       
        }
 
@@ -82,6 +83,9 @@ public class AccessEntity implements IAc
                URI uri = new URI(fOrigin);
                if (uri.getHost() == null) throw new Exception("origin has no 
host");
                if (uri.getUserInfo()!=null) throw new Exception("origin has 
userinfo");
+               if (uri.getPath()!=null && uri.getPath().length()>0) throw new 
Exception("origin has path information");
+               if (uri.getFragment()!=null) throw new Exception("origin has 
fragment information");
+               if (uri.getQuery()!=null) throw new Exception("origin has query 
information");
                URI processedURI = new 
URI(uri.getScheme(),null,uri.getHost(),uri.getPort(),null,null,null);
                fOrigin = processedURI.toString();
        }
@@ -94,7 +98,11 @@ public class AccessEntity implements IAc
        private void processSubdomains(Attribute attr) throws Exception{
                if (attr != null){
                        String subDomains = 
UnicodeUtils.normalizeSpaces(attr.getValue());
-                       fSubDomains = Boolean.valueOf(subDomains);
+                       if 
(subDomains.equals("true")||subDomains.equals("false")){
+                               fSubDomains = Boolean.valueOf(subDomains);
+                       } else {
+                               throw new Exception("subdomains is not a valid 
boolean value");
+                       }
                }
        }
 }


Reply via email to