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");
+			}
 		}
 	}
 }