/*
* 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 de.knightsoftnet.validators.shared.testcases;
import de.knightsoftnet.validators.shared.beans.HibernateEmailTestBean;
import java.util.ArrayList;
import java.util.List;
/**
* get test cases for hibernate email test.
*
* @author Manfred Tremmel
*
*/
public class HibernateEmailTestCases {
/**
* get empty test bean.
*
* @return empty test bean
*/
public static final HibernateEmailTestBean getEmptyTestBean() {
return new HibernateEmailTestBean(null);
}
/**
* get correct test beans.
*
* @return correct test beans
*/
public static final List<HibernateEmailTestBean> getCorrectTestBeans() {
final List<HibernateEmailTestBean> correctCases = new ArrayList<>();
correctCases.add(new HibernateEmailTestBean("emmanuel@hibernate.org"));
correctCases.add(new HibernateEmailTestBean("emmanuel@hibernate"));
correctCases.add(new HibernateEmailTestBean("emma-n_uel@hibernate"));
correctCases.add(new HibernateEmailTestBean("emma+nuel@hibernate.org"));
correctCases.add(new HibernateEmailTestBean("emma=nuel@hibernate.org"));
correctCases.add(new HibernateEmailTestBean("emmanuel@[123.12.2.11]"));
correctCases.add(new HibernateEmailTestBean("*@example.net"));
correctCases.add(new HibernateEmailTestBean("fred&barny@example.com"));
correctCases.add(new HibernateEmailTestBean("---@example.com"));
correctCases.add(new HibernateEmailTestBean("foo-bar@example.net"));
correctCases.add(new HibernateEmailTestBean("mailbox.sub1.sub2@this-domain"));
correctCases.add(new HibernateEmailTestBean("prettyandsimple@example.com"));
correctCases.add(new HibernateEmailTestBean("very.common@example.com"));
correctCases.add(new HibernateEmailTestBean("disposable.style.email.with+symbol@example.com"));
correctCases.add(new HibernateEmailTestBean("other.email-with-dash@example.com"));
correctCases.add(new HibernateEmailTestBean("x@example.com"));
correctCases.add(new HibernateEmailTestBean("\"much.more unusual\"@example.com"));
correctCases.add(new HibernateEmailTestBean("\"very.unusual.@.unusual.com\"@example.com"));
correctCases.add(new HibernateEmailTestBean(
"\"very.(),:;<>[]\\\".VERY.\\\"very@\\\\ \\\"very\\\".unusual\"@strange.example.com"));
correctCases.add(
new HibernateEmailTestBean("\"some \".\" strange \".\" part*:; \"@strange.example.com"));
correctCases.add(new HibernateEmailTestBean("example-indeed@strange-example.com"));
correctCases.add(new HibernateEmailTestBean("admin@mailserver1"));
correctCases.add(new HibernateEmailTestBean("#!$%&'*+-/=?^_`{}|~@example.org"));
correctCases
.add(new HibernateEmailTestBean("\"()<>[]:,;@\\\"!#$%&'-/=?^_`{}| ~.a\"@example.org"));
correctCases.add(new HibernateEmailTestBean("\" \"@example.org"));
correctCases.add(new HibernateEmailTestBean("example@localhost"));
correctCases.add(new HibernateEmailTestBean("example@s.solutions"));
correctCases.add(new HibernateEmailTestBean("user@localserver"));
correctCases.add(new HibernateEmailTestBean("user@tt"));
correctCases.add(new HibernateEmailTestBean("user@[IPv6:2001:DB8::1]"));
correctCases.add(new HibernateEmailTestBean("Test^Email@example.com"));
correctCases.add(new HibernateEmailTestBean("myname@östereich.at"));
correctCases.add(new HibernateEmailTestBean("θσερ@εχαμπλε.ψομ"));
correctCases.add(new HibernateEmailTestBean(
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@hibernate.org"));
// Domain part should allow up to 255
for (int length = 1; length <= 251; length++) {
correctCases.add(new HibernateEmailTestBean("foo@" + domainOfLength(length) + ".com"));
}
correctCases.add(new HibernateEmailTestBean(
"foo@" + stringOfLength(63) + "." + stringOfLength(63) + ".com"));
return correctCases;
}
/**
* get wrong test beans.
*
* @return wrong test beans
*/
public static final List<HibernateEmailTestBean> getWrongTestBeans() {
final List<HibernateEmailTestBean> wrongCases = new ArrayList<>();
wrongCases.add(new HibernateEmailTestBean("emmanuel.hibernate.org"));
wrongCases.add(new HibernateEmailTestBean("emma nuel@hibernate.org"));
wrongCases.add(new HibernateEmailTestBean("emma(nuel@hibernate.org"));
wrongCases.add(new HibernateEmailTestBean("emmanuel@"));
wrongCases.add(new HibernateEmailTestBean("emma\nnuel@hibernate.org"));
wrongCases.add(new HibernateEmailTestBean("emma@nuel@hibernate.org"));
wrongCases.add(new HibernateEmailTestBean("emma@nuel@.hibernate.org"));
wrongCases.add(new HibernateEmailTestBean("Just a string"));
wrongCases.add(new HibernateEmailTestBean("string"));
wrongCases.add(new HibernateEmailTestBean("me@"));
wrongCases.add(new HibernateEmailTestBean("@example.com"));
wrongCases.add(new HibernateEmailTestBean("me.@example.com"));
wrongCases.add(new HibernateEmailTestBean(".me@example.com"));
wrongCases.add(new HibernateEmailTestBean("me@example..com"));
wrongCases.add(new HibernateEmailTestBean("me\\@example.com"));
wrongCases.add(new HibernateEmailTestBean("Abc.example.com")); // (no @ character)
// (only one @ is allowed outside quotation marks)
wrongCases.add(new HibernateEmailTestBean("A@b@c@example.com"));
// (none of the special characters in this local-part are allowed outside quotation marks)
wrongCases.add(new HibernateEmailTestBean("a\"b(c)d,e:f;g<h>i[j\\k]l@example.com"));
// (quoted strings must be dot separated or the only element making up the local-part)
wrongCases.add(new HibernateEmailTestBean("just\"not\"right@example.com"));
// (spaces, quotes, and backslashes may only exist when within quoted strings and preceded by a
// backslash)
wrongCases.add(new HibernateEmailTestBean("this is\"not\\allowed@example.com"));
// (even if escaped (preceded by a backslash), spaces, quotes, and backslashes must still be
// contained by quotes)
wrongCases.add(new HibernateEmailTestBean("this\\ still\\\"not\\\\allowed@example.com"));
// (double dot before @) with caveat: Gmail lets this through, Email address#Local-part the dots
// altogether
wrongCases.add(new HibernateEmailTestBean("john..doe@example.com"));
wrongCases.add(new HibernateEmailTestBean("john.doe@example..com"));
wrongCases.add(new HibernateEmailTestBean("θσερ.εχαμπλε.ψομ"));
wrongCases.add(new HibernateEmailTestBean("validation@hibernate.com@"));
wrongCases.add(new HibernateEmailTestBean("validation@hibernate.com@@"));
wrongCases.add(new HibernateEmailTestBean("validation@hibernate.com@@@"));
// Domain part should allow up to 255
wrongCases.add(new HibernateEmailTestBean("foo@" + domainOfLength(252) + ".com"));
return wrongCases;
}
private static String stringOfLength(final int length) {
final StringBuilder builder = new StringBuilder();
for (int i = 0; i < length; i++) {
builder.append('a');
}
return builder.toString();
}
private static String domainOfLength(final int length) {
final StringBuilder builder = new StringBuilder();
for (int i = 0; i < length; i++) {
// we insert a dot from time to time to be sure each label of the domain name is at most 63
// characters long
if (i % 32 == 0 && i > 0 && i < length - 1) {
builder.append('.');
} else {
builder.append('a');
}
}
return builder.toString();
}
}