You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wookie.apache.org by sc...@apache.org on 2010/05/11 21:18:23 UTC
svn commit: r943234 - in /incubator/wookie/trunk/parser/java:
src-test/org/apache/wookie/w3c/test/Access.java
src/org/apache/wookie/w3c/impl/AccessEntity.java
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");
+ }
}
}
}