Author: bago
Date: Tue Oct 6 17:52:22 2009
New Revision: 822375
URL: http://svn.apache.org/viewvc?rev=822375&view=rev
Log:
Some more test for the main library.
Added:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MessageTest.java
(with props)
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MockPublicKeyRecordRetriever.java
(with props)
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MultiplexingPublicKeyRecordRetrieverTest.java
(with props)
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/PublicKeyRecordTest.java
(with props)
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/QPTest.java
(with props)
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/SignatureRecordImplTest.java
(with props)
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/SignatureRecordTest.java
(with props)
Added:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MessageTest.java
URL:
http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MessageTest.java?rev=822375&view=auto
==============================================================================
---
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MessageTest.java
(added)
+++
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MessageTest.java
Tue Oct 6 17:52:22 2009
@@ -0,0 +1,132 @@
+/****************************************************************
+ * 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.james.jdkim;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.james.mime4j.MimeException;
+import org.apache.james.mime4j.field.UnstructuredField;
+
+public class MessageTest extends TestCase {
+
+ public void testMessage() throws IOException, MimeException {
+ String m = "";
+ new Message(new ByteArrayInputStream(m.getBytes()));
+ }
+
+ public void testMessageInputStream() throws IOException, MimeException {
+ String m = "Subject: test\r\n\r\nbody";
+ new Message(new ByteArrayInputStream(m.getBytes()));
+ }
+
+ public void testGetBodyInputStream() throws IOException, MimeException {
+ String text = "Subject: test\r\n\r\nbody";
+ Message m = new Message(new
ByteArrayInputStream(text.getBytes()));
+ InputStream is = m.getBodyInputStream();
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ byte[] buff = new byte[200];
+ int read;
+ while ((read = is.read(buff)) > 0) {
+ bos.write(buff, 0, read);
+ }
+ assertEquals("body", new String(bos.toByteArray()));
+ }
+
+ public void testAddField() throws MimeException {
+ Message m = new Message();
+ m.addField(UnstructuredField.parse("Subject: test\r\n"));
+ m.addField(UnstructuredField.parse("Subject: test2\r\n"));
+ String f = m.getField("Subject");
+ assertEquals("Subject: test\r\n", f);
+ }
+
+ public void testGetFields() throws MimeException {
+ Message m = new Message();
+ m.addField(UnstructuredField.parse("Subject: test\r\n"));
+ m.addField(UnstructuredField.parse("Subject: test2\r\n"));
+ m.addField(UnstructuredField.parse("From: test2\r\n"));
+ List f = m.getFields();
+ List expects = new LinkedList();
+ expects.add("Subject: test\r\n");
+ expects.add("Subject: test2\r\n");
+ expects.add("From: test2\r\n");
+ for (Iterator i = f.iterator(); i.hasNext(); ) {
+ String field = (String) i.next();
+ assertTrue(expects.remove(field));
+ }
+ assertEquals(0, expects.size());
+ }
+
+ /*
+ public void testGetField() throws MimeException, IOException {
+ String text = "Subject: test\r\n\r\nbody";
+ Headers m = new Message(new
ByteArrayInputStream(text.getBytes()));
+ Field f = m.getField("Subject");
+ assertEquals(" test", f.getBody());
+ }
+ */
+
+ public void testGetFieldsString() throws MimeException {
+ Message m = new Message();
+ m.addField(UnstructuredField.parse("Subject: test\r\n"));
+ m.addField(UnstructuredField.parse("subject: test2\r\n"));
+ m.addField(UnstructuredField.parse("From: test2\r\n"));
+ List f = m.getFields("Subject");
+ List expects = new LinkedList();
+ expects.add("Subject: test\r\n");
+ expects.add("subject: test2\r\n");
+ for (Iterator i = f.iterator(); i.hasNext(); ) {
+ String field = (String) i.next();
+ assertTrue(expects.remove(field));
+ }
+ assertEquals(0, expects.size());
+ }
+
+ public void testIterator() throws MimeException {
+ Message m = new Message();
+ m.addField(UnstructuredField.parse("Subject: test\r\n"));
+ m.addField(UnstructuredField.parse("subject: test2\r\n"));
+ m.addField(UnstructuredField.parse("From: test2\r\n"));
+ Iterator i = m.iterator();
+ String field = (String) i.next();
+ assertEquals("Subject: test\r\n", field);
+ field = (String) i.next();
+ assertEquals("subject: test2\r\n", field);
+ field = (String) i.next();
+ assertEquals("From: test2\r\n", field);
+ }
+
+ public void testToString() throws MimeException {
+ Message m = new Message();
+ m.addField(UnstructuredField.parse("Subject: test\r\n"));
+ m.setBodyInputStream(new
ByteArrayInputStream("body".getBytes()));
+ String expected = "Subject: test\r\n\r\nbody";
+ assertEquals(expected, m.toString());
+ }
+
+}
Propchange:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MessageTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MessageTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MockPublicKeyRecordRetriever.java
URL:
http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MockPublicKeyRecordRetriever.java?rev=822375&view=auto
==============================================================================
---
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MockPublicKeyRecordRetriever.java
(added)
+++
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MockPublicKeyRecordRetriever.java
Tue Oct 6 17:52:22 2009
@@ -0,0 +1,64 @@
+/****************************************************************
+ * 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.james.jdkim;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * This is a mock public key record retriever that store the "registry" in a
local map.
+ */
+public class MockPublicKeyRecordRetriever implements
+ PublicKeyRecordRetriever {
+ private static final String _DOMAINKEY = "._domainkey.";
+ private Map/* String, List<String> */ records = new HashMap();
+
+ public void addRecord(String selector, String token, String record) {
+ String key = selector+_DOMAINKEY+token;
+ List l = (List) records.get(key);
+ if (l == null) {
+ l = new LinkedList();
+ records.put(key, l);
+ }
+ if (record != null) {
+ l.add(record);
+ }
+ }
+
+ public MockPublicKeyRecordRetriever() {
+
+ }
+
+ public MockPublicKeyRecordRetriever(String record, CharSequence
selector, CharSequence token) {
+ addRecord(selector.toString(), token.toString(), record);
+ }
+
+ public List getRecords(CharSequence methodAndOptions, CharSequence
selector, CharSequence token)
+ throws TempFailException, PermFailException {
+ if ("dns/txt".equals(methodAndOptions)) {
+ String search = selector+_DOMAINKEY+token;
+ List res = (List) records.get(search);
+ if (res == null || res.size() > 0) return res;
+ else throw new TempFailException("Timout or servfail");
+ } else throw new PermFailException("Unsupported method");
+ }
+}
\ No newline at end of file
Propchange:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MockPublicKeyRecordRetriever.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MockPublicKeyRecordRetriever.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MultiplexingPublicKeyRecordRetrieverTest.java
URL:
http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MultiplexingPublicKeyRecordRetrieverTest.java?rev=822375&view=auto
==============================================================================
---
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MultiplexingPublicKeyRecordRetrieverTest.java
(added)
+++
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MultiplexingPublicKeyRecordRetrieverTest.java
Tue Oct 6 17:52:22 2009
@@ -0,0 +1,82 @@
+/****************************************************************
+ * 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.james.jdkim;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+public class MultiplexingPublicKeyRecordRetrieverTest extends TestCase {
+
+ private PublicKeyRecordRetriever myMethodRetriever = new
PublicKeyRecordRetriever() {
+
+ public List getRecords(CharSequence methodAndOption,
+ CharSequence selector, CharSequence token)
+ throws TempFailException, PermFailException {
+ List l = new ArrayList();
+ l.add(selector.toString());
+ l.add(token.toString());
+ return l;
+ }
+
+ };
+
+ public void testMultiplexingPublicKeyRecordRetriever() {
+ MultiplexingPublicKeyRecordRetriever pkrr = new
MultiplexingPublicKeyRecordRetriever();
+ try {
+ pkrr.getRecords("method", "selector", "token");
+ fail("method is unknown");
+ } catch (FailException e) {
+ }
+ }
+
+ public void
testMultiplexingPublicKeyRecordRetrieverStringPublicKeyRecordRetriever() throws
TempFailException, PermFailException {
+ MultiplexingPublicKeyRecordRetriever pkrr = new
MultiplexingPublicKeyRecordRetriever("mymethod", myMethodRetriever);
+ check(pkrr, "mymethod");
+ }
+
+ private void check(MultiplexingPublicKeyRecordRetriever pkrr, String
method)
+ throws TempFailException, PermFailException {
+ List l = pkrr.getRecords(method, "selector", "token");
+ Iterator i = l.iterator();
+ assertEquals("selector", i.next());
+ assertEquals("token", i.next());
+ try {
+ l = pkrr.getRecords("anothermethod", "selector",
"token");
+ fail("anothermethod is not declared");
+ } catch (FailException e) {
+ }
+ }
+
+ public void testAddRetriever() throws TempFailException,
PermFailException {
+ MultiplexingPublicKeyRecordRetriever pkrr = new
MultiplexingPublicKeyRecordRetriever();
+ pkrr.addRetriever("mymethod", myMethodRetriever);
+ check(pkrr, "mymethod");
+ }
+
+ public void testAddRetrieverWithOptions() throws TempFailException,
PermFailException {
+ MultiplexingPublicKeyRecordRetriever pkrr = new
MultiplexingPublicKeyRecordRetriever();
+ pkrr.addRetriever("mymethod", myMethodRetriever);
+ check(pkrr, "mymethod/option");
+ }
+
+}
Propchange:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MultiplexingPublicKeyRecordRetrieverTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MultiplexingPublicKeyRecordRetrieverTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/PublicKeyRecordTest.java
URL:
http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/PublicKeyRecordTest.java?rev=822375&view=auto
==============================================================================
---
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/PublicKeyRecordTest.java
(added)
+++
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/PublicKeyRecordTest.java
Tue Oct 6 17:52:22 2009
@@ -0,0 +1,262 @@
+/****************************************************************
+ * 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.james.jdkim;
+
+import java.math.BigInteger;
+import java.security.PublicKey;
+import java.security.interfaces.RSAKey;
+import java.util.List;
+import java.util.regex.Pattern;
+
+import org.apache.james.jdkim.tagvalue.PublicKeyRecordImpl;
+import org.apache.james.jdkim.tagvalue.SignatureRecordImpl;
+
+import junit.framework.TestCase;
+
+public class PublicKeyRecordTest extends TestCase {
+
+ public void testValidate() {
+ PublicKeyRecord pkr = new PublicKeyRecordImpl("");
+ try {
+ pkr.validate();
+ fail("Expected failure: missing mandatory parameters");
+ } catch (IllegalStateException e) {
+ }
+ pkr = new PublicKeyRecordImpl("k=rsa; p=XXXXXXXX=;");
+ pkr.validate();
+ pkr = new PublicKeyRecordImpl("v=DKIM1; k=rsa; p=XXXXXX=");
+ pkr.validate();
+ pkr = new PublicKeyRecordImpl(" v=DKIM1; k=rsa; p=XXXXXX=");
+ pkr.validate();
+ pkr = new PublicKeyRecordImpl("k=rsa; v=DKIM1; p=XXXXXX=");
+ try {
+ pkr.validate();
+ fail("Expected failure: v should be the first");
+ } catch (IllegalStateException e) {
+ }
+ pkr = new PublicKeyRecordImpl("v=DKIM2; k=rsa; p=XXXXXX=");
+ try {
+ pkr.validate();
+ fail("Expected failure: wrong version");
+ } catch (IllegalStateException e) {
+ }
+ pkr = new PublicKeyRecordImpl("v=DKIM1; k=rsa; p=");
+ try {
+ pkr.validate();
+ fail("Expected failure: revoked key");
+ } catch (IllegalStateException e) {
+ }
+ }
+
+ public void testIsHashMethodSupported() {
+ PublicKeyRecord pkr = new PublicKeyRecordImpl("k=rsa;
p=XXXXXXXX=;");
+ pkr.validate();
+ assertTrue(pkr.isHashMethodSupported("sha1"));
+ assertTrue(pkr.isHashMethodSupported("sha256"));
+ pkr = new PublicKeyRecordImpl("k=rsa; h=sha1:sha256;
p=XXXXXXXX=;");
+ pkr.validate();
+ assertTrue(pkr.isHashMethodSupported("sha1"));
+ assertFalse(pkr.isHashMethodSupported("sha128"));
+ assertTrue(pkr.isHashMethodSupported("sha256"));
+ }
+
+ public void testIsKeyTypeSupported() {
+ PublicKeyRecord pkr = new PublicKeyRecordImpl("k=rsa;
p=XXXXXXXX=;");
+ pkr.validate();
+ assertTrue(pkr.isKeyTypeSupported("rsa"));
+ assertFalse(pkr.isKeyTypeSupported("dsa"));
+ }
+
+ public void testGetAcceptableHashMethods() {
+ PublicKeyRecord pkr = new PublicKeyRecordImpl("k=rsa;
h=sha1:sha256; p=XXXXXXXX=;");
+ pkr.validate();
+ List methods = pkr.getAcceptableHashMethods();
+ assertEquals("[sha1, sha256]", methods.toString());
+ pkr = new PublicKeyRecordImpl("k=rsa; p=XXXXXXXX=;");
+ pkr.validate();
+ methods = pkr.getAcceptableHashMethods();
+ assertNull(methods);
+ }
+
+ public void testGetAcceptableKeyTypes() {
+ PublicKeyRecord pkr = new PublicKeyRecordImpl("k=rsa;
h=sha1:sha256; p=XXXXXXXX=;");
+ pkr.validate();
+ List methods = pkr.getAcceptableKeyTypes();
+ assertEquals("[rsa]", methods.toString());
+ pkr = new PublicKeyRecordImpl("k=rsa:dsa; p=XXXXXXXX=;");
+ pkr.validate();
+ methods = pkr.getAcceptableKeyTypes();
+ assertEquals("[rsa, dsa]", methods.toString());
+ }
+
+ public void testGetGranularityPattern() {
+ PublicKeyRecord pkr = new PublicKeyRecordImpl("k=rsa;
h=sha1:sha256; p=XXXXXXXX=;");
+ pkr.validate();
+ Pattern pattern = pkr.getGranularityPattern();
+ assertEquals("^\\Q\\E.*\\Q\\E$", pattern.pattern());
+ assertTrue(pattern.matcher("something").matches());
+ assertTrue(pattern.matcher("").matches());
+ pkr = new PublicKeyRecordImpl("k=rsa; g=; h=sha1:sha256;
p=XXXXXXXX=;");
+ pkr.validate();
+ pattern = pkr.getGranularityPattern();
+ assertEquals("@", pattern.pattern());
+ assertFalse(pattern.matcher("something").matches());
+ assertFalse(pattern.matcher("").matches());
+ pkr = new PublicKeyRecordImpl("k=rsa; g=some*; h=sha1:sha256;
p=XXXXXXXX=;");
+ pkr.validate();
+ pattern = pkr.getGranularityPattern();
+ assertTrue(pattern.matcher("something").matches());
+ assertTrue(pattern.matcher("some").matches());
+ assertFalse(pattern.matcher("som").matches());
+ assertFalse(pattern.matcher("awesome").matches());
+ assertEquals("^\\Qsome\\E.*\\Q\\E$", pattern.pattern());
+ pkr = new PublicKeyRecordImpl("k=rsa; g=*+test; h=sha1:sha256;
p=XXXXXXXX=;");
+ pkr.validate();
+ pattern = pkr.getGranularityPattern();
+ assertEquals("^\\Q\\E.*\\Q+test\\E$", pattern.pattern());
+ assertTrue(pattern.matcher("a+test").matches());
+ assertTrue(pattern.matcher("+test").matches());
+ assertFalse(pattern.matcher("atest").matches());
+ assertFalse(pattern.matcher("+tested").matches());
+ pkr = new PublicKeyRecordImpl("k=rsa; g=test; h=sha1:sha256;
p=XXXXXXXX=;");
+ pkr.validate();
+ pattern = pkr.getGranularityPattern();
+ assertEquals("^\\Qtest\\E$", pattern.pattern());
+ assertTrue(pattern.matcher("test").matches());
+ assertFalse(pattern.matcher("atest").matches());
+ assertFalse(pattern.matcher("testa").matches());
+ try {
+ pkr = new PublicKeyRecordImpl("k=rsa; g=*\\+test;
h=sha1:sha256; p=XXXXXXXX=;");
+ pkr.validate();
+ pattern = pkr.getGranularityPattern();
+ fail("Expected syntax error");
+ } catch ( IllegalStateException e) {
+ }
+ try {
+ pkr = new PublicKeyRecordImpl("k=rsa; g=*test*;
h=sha1:sha256; p=XXXXXXXX=;");
+ pkr.validate();
+ pattern = pkr.getGranularityPattern();
+ fail("Expected syntax error");
+ } catch ( IllegalStateException e) {
+ }
+ }
+
+ public void testGetPublicKey() {
+ PublicKeyRecord pkr = new PublicKeyRecordImpl("k=rsa; t=y;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ PublicKey pk = pkr.getPublicKey();
+ assertEquals("RSA", pk.getAlgorithm());
+ assertEquals("X.509", pk.getFormat());
+ assertEquals(new
BigInteger("140815480285950232210124449496973988135931539914762288985377502488754711434253259186192434865594456027796377309280714060984552676169392598862819043219650259702261370701494928576447797673342985377518637829874968725582762257956980427968667812066816497848410406856165942400151628259779523949079651036806330485849"),
((RSAKey) pk).getModulus());
+
+ try {
+ pkr = new PublicKeyRecordImpl("k=dsa; t=y;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ pk = pkr.getPublicKey();
+ fail("Expected invalid key spec. DSA is not supported");
+ } catch (IllegalStateException e) {
+ }
+
+ try {
+ pkr = new PublicKeyRecordImpl("k=unknown; t=y;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ pk = pkr.getPublicKey();
+ fail("Expected invalid algorythm. 'unknown' is not
supported");
+ } catch (IllegalStateException e) {
+ }
+ }
+
+ public void testApply() {
+ PublicKeyRecord pkr = new PublicKeyRecordImpl("k=rsa; t=y;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ pkr.apply(new SignatureRecordImpl("v=1; a=rsa-sha256;
c=relaxed/relaxed; d=gmail.com; s=gamma;
h=domainkey-signature:mime-version:received:date:message-id:subject:from:to:content-type;
bh=AbPsrGRdyVjM2e5ZZdhQA/aLe305f2bPvPRohUxrGjo=;
b=ksNsfQJv20M9/Vf66sMJT1WHM/fUfcqli1NfkyxSOjr8jlNTH4JNCGacb2neWuwMN4C4TFXqMR8BENkn+XrCV1FjrlW1mCxlLDilVypP/uqqq04KzJpVyJG6zZLd/0DeknSLN6sDGKdCvIdS+YpHEhUxoEuf6QizCs8PTXhnJiA="));
+ try {
+ pkr.apply(new SignatureRecordImpl("v=1; a=dsa-sha256;
c=relaxed/relaxed; d=gmail.com; s=gamma;
h=domainkey-signature:mime-version:received:date:message-id:subject:from:to:content-type;
bh=AbPsrGRdyVjM2e5ZZdhQA/aLe305f2bPvPRohUxrGjo=;
b=ksNsfQJv20M9/Vf66sMJT1WHM/fUfcqli1NfkyxSOjr8jlNTH4JNCGacb2neWuwMN4C4TFXqMR8BENkn+XrCV1FjrlW1mCxlLDilVypP/uqqq04KzJpVyJG6zZLd/0DeknSLN6sDGKdCvIdS+YpHEhUxoEuf6QizCs8PTXhnJiA="));
+ fail("This is not a signature for that key");
+ } catch (IllegalStateException e) {
+ }
+ pkr = new PublicKeyRecordImpl("k=rsa; t=y:s;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ pkr.apply(new SignatureRecordImpl("v=1; a=rsa-sha256;
c=relaxed/relaxed; [email protected]; d=gmail.com; s=gamma;
h=domainkey-signature:mime-version:received:date:message-id:subject:from:to:content-type;
bh=AbPsrGRdyVjM2e5ZZdhQA/aLe305f2bPvPRohUxrGjo=;
b=ksNsfQJv20M9/Vf66sMJT1WHM/fUfcqli1NfkyxSOjr8jlNTH4JNCGacb2neWuwMN4C4TFXqMR8BENkn+XrCV1FjrlW1mCxlLDilVypP/uqqq04KzJpVyJG6zZLd/0DeknSLN6sDGKdCvIdS+YpHEhUxoEuf6QizCs8PTXhnJiA="));
+ try {
+ pkr.apply(new SignatureRecordImpl("v=1; a=rsa-sha256;
c=relaxed/relaxed; [email protected]; d=gmail.com; s=gamma;
h=domainkey-signature:mime-version:received:date:message-id:subject:from:to:content-type;
bh=AbPsrGRdyVjM2e5ZZdhQA/aLe305f2bPvPRohUxrGjo=;
b=ksNsfQJv20M9/Vf66sMJT1WHM/fUfcqli1NfkyxSOjr8jlNTH4JNCGacb2neWuwMN4C4TFXqMR8BENkn+XrCV1FjrlW1mCxlLDilVypP/uqqq04KzJpVyJG6zZLd/0DeknSLN6sDGKdCvIdS+YpHEhUxoEuf6QizCs8PTXhnJiA="));
+ fail("This is not a signature for that key");
+ } catch (IllegalStateException e) {
+ }
+ pkr = new PublicKeyRecordImpl("k=rsa; g=test*; t=y;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ pkr.apply(new SignatureRecordImpl("v=1; a=rsa-sha256;
c=relaxed/relaxed; [email protected]; d=gmail.com; s=gamma;
h=domainkey-signature:mime-version:received:date:message-id:subject:from:to:content-type;
bh=AbPsrGRdyVjM2e5ZZdhQA/aLe305f2bPvPRohUxrGjo=;
b=ksNsfQJv20M9/Vf66sMJT1WHM/fUfcqli1NfkyxSOjr8jlNTH4JNCGacb2neWuwMN4C4TFXqMR8BENkn+XrCV1FjrlW1mCxlLDilVypP/uqqq04KzJpVyJG6zZLd/0DeknSLN6sDGKdCvIdS+YpHEhUxoEuf6QizCs8PTXhnJiA="));
+ try {
+ pkr.apply(new SignatureRecordImpl("v=1; a=rsa-sha256;
c=relaxed/relaxed; [email protected]; d=gmail.com; s=gamma;
h=domainkey-signature:mime-version:received:date:message-id:subject:from:to:content-type;
bh=AbPsrGRdyVjM2e5ZZdhQA/aLe305f2bPvPRohUxrGjo=;
b=ksNsfQJv20M9/Vf66sMJT1WHM/fUfcqli1NfkyxSOjr8jlNTH4JNCGacb2neWuwMN4C4TFXqMR8BENkn+XrCV1FjrlW1mCxlLDilVypP/uqqq04KzJpVyJG6zZLd/0DeknSLN6sDGKdCvIdS+YpHEhUxoEuf6QizCs8PTXhnJiA="));
+ fail("This is not a signature for that key");
+ } catch (IllegalStateException e) {
+ }
+ pkr = new PublicKeyRecordImpl("k=rsa; g=test*; t=y;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+
+ pkr = new PublicKeyRecordImpl("k=rsa; h=sha1; t=y;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ try {
+ pkr.apply(new SignatureRecordImpl("v=1; a=rsa-sha256;
c=relaxed/relaxed; d=gmail.com; s=gamma;
h=domainkey-signature:mime-version:received:date:message-id:subject:from:to:content-type;
bh=AbPsrGRdyVjM2e5ZZdhQA/aLe305f2bPvPRohUxrGjo=;
b=ksNsfQJv20M9/Vf66sMJT1WHM/fUfcqli1NfkyxSOjr8jlNTH4JNCGacb2neWuwMN4C4TFXqMR8BENkn+XrCV1FjrlW1mCxlLDilVypP/uqqq04KzJpVyJG6zZLd/0DeknSLN6sDGKdCvIdS+YpHEhUxoEuf6QizCs8PTXhnJiA="));
+ fail("This hash method is not supported for that
publick key");
+ } catch (IllegalStateException e) {
+ }
+ }
+
+ public void testGetFlags() {
+ PublicKeyRecord pkr = new PublicKeyRecordImpl("k=rsa; t=y:s;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ List flags = pkr.getFlags();
+ assertEquals("[y, s]", flags.toString());
+ pkr = new PublicKeyRecordImpl("k=rsa; t=y;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ flags = pkr.getFlags();
+ assertEquals("[y]", flags.toString());
+ pkr = new PublicKeyRecordImpl("k=rsa; t=;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ flags = pkr.getFlags();
+ assertEquals("[]", flags.toString());
+ }
+
+ public void testIsTesting() {
+ PublicKeyRecord pkr = new PublicKeyRecordImpl("k=rsa; t=y:s;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ assertTrue(pkr.isTesting());
+ pkr = new PublicKeyRecordImpl("k=rsa; t=y;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ assertTrue(pkr.isTesting());
+ pkr = new PublicKeyRecordImpl("k=rsa; t=;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ assertFalse(pkr.isTesting());
+ }
+
+ public void testIsDenySubdomains() {
+ PublicKeyRecord pkr = new PublicKeyRecordImpl("k=rsa; t=y:s;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ assertTrue(pkr.isDenySubdomains());
+ pkr = new PublicKeyRecordImpl("k=rsa; t=y;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ assertFalse(pkr.isDenySubdomains());
+ pkr = new PublicKeyRecordImpl("k=rsa; t=;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
+ pkr.validate();
+ assertFalse(pkr.isDenySubdomains());
+ }
+
+}
Propchange:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/PublicKeyRecordTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/PublicKeyRecordTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/QPTest.java
URL:
http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/QPTest.java?rev=822375&view=auto
==============================================================================
--- james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/QPTest.java
(added)
+++ james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/QPTest.java Tue
Oct 6 17:52:22 2009
@@ -0,0 +1,94 @@
+/****************************************************************
+ * 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.james.jdkim;
+
+import junit.framework.TestCase;
+
+public class QPTest extends TestCase {
+
+ public void testDecode() {
+ assertEquals("",CodecUtil.dkimQuotedPrintableDecode(""));
+ assertEquals("@",CodecUtil.dkimQuotedPrintableDecode("=40"));
+
assertEquals("\r\n",CodecUtil.dkimQuotedPrintableDecode("=0D=0A"));
+
assertEquals("\0CIAO\0",CodecUtil.dkimQuotedPrintableDecode("=00CIAO=00"));
+
assertEquals("thisisatest",CodecUtil.dkimQuotedPrintableDecode("this\r\n\tis\r\n
a\r\n \t test"));
+ }
+
+ public void testWhiteSpaces() {
+
assertEquals("thisisatest",CodecUtil.dkimQuotedPrintableDecode("this is a
test"));
+
assertEquals("thisisatest",CodecUtil.dkimQuotedPrintableDecode("this\r\n is a
test"));
+ }
+
+ public void testInvalid() {
+ try {
+ CodecUtil.dkimQuotedPrintableDecode("=");
+ fail("invalid sequence parsed.");
+ } catch (IllegalArgumentException e) {
+ }
+ try {
+ CodecUtil.dkimQuotedPrintableDecode("==");
+ fail("invalid sequence parsed.");
+ } catch (IllegalArgumentException e) {
+ }
+ try {
+ CodecUtil.dkimQuotedPrintableDecode("=2 3");
+ fail("invalid sequence parsed.");
+ } catch (IllegalArgumentException e) {
+ }
+ try {
+ CodecUtil.dkimQuotedPrintableDecode("=3");
+ fail("invalid sequence parsed.");
+ } catch (IllegalArgumentException e) {
+ }
+ try {
+ CodecUtil.dkimQuotedPrintableDecode("=3a");
+ fail("invalid sequence parsed.");
+ } catch (IllegalArgumentException e) {
+ }
+ try {
+ CodecUtil.dkimQuotedPrintableDecode("==20");
+ fail("invalid sequence parsed.");
+ } catch (IllegalArgumentException e) {
+ }
+ try {
+ CodecUtil.dkimQuotedPrintableDecode("=20=");
+ fail("invalid sequence parsed.");
+ } catch (IllegalArgumentException e) {
+ }
+ try {
+ CodecUtil.dkimQuotedPrintableDecode("=3x");
+ fail("invalid sequence parsed.");
+ } catch (IllegalArgumentException e) {
+ }
+ try {
+ CodecUtil.dkimQuotedPrintableDecode("this\r\nis a
test");
+ fail("invalid sequence parsed.");
+ } catch (IllegalArgumentException e) {
+ }
+ }
+
+ // TODO check bytes > 128
+ /*
+ public void test8bit() {
+
assertEquals("PROVA\144CIAO\144",Main.dkimQuotedPrintableDecode("PROVA=90CIAO=90"));
+ }
+ */
+
+}
Propchange:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/QPTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/QPTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/SignatureRecordImplTest.java
URL:
http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/SignatureRecordImplTest.java?rev=822375&view=auto
==============================================================================
---
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/SignatureRecordImplTest.java
(added)
+++
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/SignatureRecordImplTest.java
Tue Oct 6 17:52:22 2009
@@ -0,0 +1,76 @@
+/****************************************************************
+ * 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.james.jdkim;
+
+import org.apache.james.jdkim.tagvalue.SignatureRecordImpl;
+
+import junit.framework.TestCase;
+
+public class SignatureRecordImplTest extends TestCase {
+
+ public void testWrongBase64Encoding() {
+ SignatureRecord sr = new SignatureRecordImpl("v=1; bh=0012=GG;
b==GG;");
+ try {
+ sr.getBodyHash();
+ fail("expected failure");
+ } catch (Exception e) {
+
assertTrue(e.getMessage().toLowerCase().contains("decod"));
+ }
+ try {
+ sr.getSignature();
+ fail("expected failure");
+ } catch (Exception e) {
+
assertTrue(e.getMessage().toLowerCase().contains("decod"));
+ }
+ }
+
+ public void testWrongHashSyntaxes() {
+ SignatureRecord sr = new SignatureRecordImpl("v=1;
a=nothyphenedword;");
+ try {
+ sr.getHashAlgo();
+ fail("expected failure");
+ } catch (Exception e) {
+
assertTrue(e.getMessage().toLowerCase().contains("hash"));
+ }
+ try {
+ sr.getHashMethod();
+ fail("expected failure");
+ } catch (Exception e) {
+
assertTrue(e.getMessage().toLowerCase().contains("hash"));
+ }
+ try {
+ sr.getHashAlgo();
+ fail("expected failure");
+ } catch (Exception e) {
+
assertTrue(e.getMessage().toLowerCase().contains("hash"));
+ }
+ }
+
+ public void testExpired() {
+ SignatureRecord sr = new SignatureRecordImpl("v=1; c=simple;
h=from:to; s=select; d=example.com; a=rsa-sha1; x=0; bh=abcdef; b=1235345987;");
+ try {
+ sr.validate();
+ fail("expected failure");
+ } catch (Exception e) {
+ assertTrue(e.getMessage().contains("expired"));
+ }
+ }
+
+}
Propchange:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/SignatureRecordImplTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/SignatureRecordImplTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/SignatureRecordTest.java
URL:
http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/SignatureRecordTest.java?rev=822375&view=auto
==============================================================================
---
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/SignatureRecordTest.java
(added)
+++
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/SignatureRecordTest.java
Tue Oct 6 17:52:22 2009
@@ -0,0 +1,99 @@
+/****************************************************************
+ * 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.james.jdkim;
+
+import org.apache.james.jdkim.tagvalue.SignatureRecordImpl;
+
+import junit.framework.TestCase;
+
+public class SignatureRecordTest extends TestCase {
+
+ public void testBasic() {
+ SignatureRecord sign = new SignatureRecordImpl("v=1;
a=rsa-sha256; c=relaxed/relaxed;\r\n"
+ +" d=gmail.com; s=beta;\r\n"
+ +"
h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type;\r\n"
+ +"
bh=9sd6eO/xnGLInYGPFN86r9q27iClGpwfkl4PBc5XEuQ=;\r\n"
+ +"
b=tGQtBQg1sO+JKopOylApWLngylEqeMcXwCEUQN+S2PSpi9c1G9Nm5df9pMShus3iFaQb0PPvTfpw++cAC8/N0p3Gi/lVLc+Yh7xWEIPZ3Nxd3xqTQy7grIkBpV0q6559dEhhfFoEyLS0OK/IrqFIUVDRIMnsMjimXV7u+Sgoi7Q=");
+ sign.validate();
+ }
+
+ public void testWrongOrMissingVersion() {
+ try {
+ SignatureRecord sign = new
SignatureRecordImpl("a=rsa-sha1; c=relaxed/relaxed;\r\n"
+ +" d=gmail.com; s=beta;\r\n"
+ +"
h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type;\r\n"
+ +"
b=Kw/TqnjB4L5ZC7DX1ibiNkuIw630uHZvzuozn/e6yTm3U8ObWEz/rJK5GO8RSrF56JrCA/xo8W2CGmyNmpQYbEpLl5P9/NcJSYUmln/O6GSa4Usyv4FdEU4FVjkyW0ToGFHNkw9Mm0urveA4Lcfk9gClJczXnvGBdiv/bkVBEJk=");
+ sign.validate();
+ fail("expected error on missing v=");
+ } catch (IllegalStateException e) {
+ }
+ try {
+ SignatureRecord sign = new SignatureRecordImpl("v=2;
a=rsa-sha256; c=relaxed/relaxed;\r\n"
+ +" d=gmail.com; s=beta;\r\n"
+ +"
h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type;\r\n"
+ +"
bh=9sd6eO/xnGLInYGPFN86r9q27iClGpwfkl4PBc5XEuQ=;\r\n"
+ +"
b=tGQtBQg1sO+JKopOylApWLngylEqeMcXwCEUQN+S2PSpi9c1G9Nm5df9pMShus3iFaQb0PPvTfpw++cAC8/N0p3Gi/lVLc+Yh7xWEIPZ3Nxd3xqTQy7grIkBpV0q6559dEhhfFoEyLS0OK/IrqFIUVDRIMnsMjimXV7u+Sgoi7Q=");
+ sign.validate();
+ fail("expected error on wrong v=");
+ } catch (IllegalStateException e) {
+ }
+ }
+
+
+ public void testMissingRequired() {
+ try {
+ SignatureRecord sign = new SignatureRecordImpl("v=1;
a=rsa-sha256; c=relaxed/relaxed;\r\n"
+ +" d=gmail.com; s=beta;\r\n"
+ +"
h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type;\r\n"
+ +"
b=tGQtBQg1sO+JKopOylApWLngylEqeMcXwCEUQN+S2PSpi9c1G9Nm5df9pMShus3iFaQb0PPvTfpw++cAC8/N0p3Gi/lVLc+Yh7xWEIPZ3Nxd3xqTQy7grIkBpV0q6559dEhhfFoEyLS0OK/IrqFIUVDRIMnsMjimXV7u+Sgoi7Q=");
+ sign.validate();
+ fail("expected error on missing bh=");
+ } catch (IllegalStateException e) {
+ }
+ }
+
+ public void testDomainMismatch() {
+ try {
+ SignatureRecord sign = new SignatureRecordImpl("v=1;
a=rsa-sha256; c=relaxed/relaxed;\r\n"
+ +" d=gmail.com; s=beta;
[email protected];\r\n"
+ +"
h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type;\r\n"
+ +"
bh=9sd6eO/xnGLInYGPFN86r9q27iClGpwfkl4PBc5XEuQ=;\r\n"
+ +"
b=tGQtBQg1sO+JKopOylApWLngylEqeMcXwCEUQN+S2PSpi9c1G9Nm5df9pMShus3iFaQb0PPvTfpw++cAC8/N0p3Gi/lVLc+Yh7xWEIPZ3Nxd3xqTQy7grIkBpV0q6559dEhhfFoEyLS0OK/IrqFIUVDRIMnsMjimXV7u+Sgoi7Q=");
+ sign.validate();
+ fail("expected error on domain mismatch");
+ } catch (IllegalStateException e) {
+ }
+ }
+
+ public void testMissingFrom() {
+ try {
+ SignatureRecord sign = new SignatureRecordImpl("v=1;
a=rsa-sha256; c=relaxed/relaxed;\r\n"
+ +" d=gmail.com; s=beta;
[email protected];\r\n"
+ +"
h=domainkey-signature:received:received:message-id:date:fram:to:subject:mime-version:content-type;\r\n"
+ +"
bh=9sd6eO/xnGLInYGPFN86r9q27iClGpwfkl4PBc5XEuQ=;\r\n"
+ +"
b=tGQtBQg1sO+JKopOylApWLngylEqeMcXwCEUQN+S2PSpi9c1G9Nm5df9pMShus3iFaQb0PPvTfpw++cAC8/N0p3Gi/lVLc+Yh7xWEIPZ3Nxd3xqTQy7grIkBpV0q6559dEhhfFoEyLS0OK/IrqFIUVDRIMnsMjimXV7u+Sgoi7Q=");
+ sign.validate();
+ fail("expected error on missing 'from' header");
+ } catch (IllegalStateException e) {
+ }
+ }
+
+
+}
Propchange:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/SignatureRecordTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/SignatureRecordTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]