blob: 73f7efc3ddca8fa23a6de929651e627d15f48d2e [file] [log] [blame]
/*
* 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 com.opensymphony.xwork2.validator;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.TextProviderFactory;
import com.opensymphony.xwork2.XWorkTestCase;
import com.opensymphony.xwork2.util.ValueStack;
import com.opensymphony.xwork2.validator.validators.EmailValidator;
/**
* Test case for Email Validator
*
* @author tm_jee
* @version $Date$ $Id$
*/
public class EmailValidatorTest extends XWorkTestCase {
private TextProviderFactory tpf;
public void testEmailValidity() throws Exception {
assertTrue(verifyEmailValidity("TmJee@Yahoo.com"));
assertTrue(verifyEmailValidity("tmjee@yahoo.com"));
assertTrue(verifyEmailValidityWithExpression("tmjee@yahoo.com", "\\b^[a-z]+@[a-z]+(\\.[a-z]+)*\\.com$\\b"));
assertTrue(verifyEmailValidity("tm_jee@yahoo.co"));
assertTrue(verifyEmailValidityWithExpression("tm_jee@yahoo.co", "\\b^[a-z_]+@[a-z]+(\\.[a-z]+)*\\.co$\\b"));
assertTrue(verifyEmailValidity("tm.jee@yahoo.co.uk"));
assertTrue(verifyEmailValidity("tm.jee@yahoo.co.biz"));
assertTrue(verifyEmailValidity("tm_jee@yahoo.com"));
assertTrue(verifyEmailValidity("tm_jee@yahoo.net"));
assertTrue(verifyEmailValidity(" user@subname1.subname2.subname3.domainname.co.uk "));
assertTrue(verifyEmailValidity("tm.j'ee@yahoo.co.uk"));
assertTrue(verifyEmailValidity("tm.j'e.e'@yahoo.co.uk"));
assertTrue(verifyEmailValidity("tmj'ee@yahoo.com"));
assertTrue(verifyEmailValidity("ferda+mravenec@yahoo.com"));
assertTrue(verifyEmailValidity("Ferda+Mravenec@yaHoo.CoM"));
assertTrue(verifyEmailValidity("user@domainname.tech"));
assertTrue(verifyEmailValidity("Ferda+Mravenec@yaHoo.cat"));
assertTrue(verifyEmailValidity("user@domainname.swiss"));
assertFalse(verifyEmailValidity("tm_jee#marry@yahoo.co.uk"));
assertFalse(verifyEmailValidity("tm_jee@ yahoo.co.uk"));
assertFalse(verifyEmailValidity("tm_jee @yahoo.co.uk"));
assertFalse(verifyEmailValidity("tm_j ee @yah oo.co.uk"));
assertFalse(verifyEmailValidity("tm_jee @yah oo.co.uk"));
assertFalse(verifyEmailValidity("tm_jee @ yahoo.com"));
assertFalse(verifyEmailValidity(" user@subname1.subname2.subname3.domainn#ame.co.uk "));
assertFalse(verifyEmailValidity("aaa@aa.aaaaaaa"));
assertFalse(verifyEmailValidity("+ferdamravenec@yahoo.com"));
assertTrue(verifyEmailValidityWithExpression("tmjee@yahoo.co", "\\b^[a-z]+@[a-z]+(\\.[a-z]+)*\\.com$\\b"));
}
protected boolean verifyEmailValidity(final String email) throws Exception {
ActionSupport action = new ActionSupport() {
public String getMyEmail() {
return email;
}
};
EmailValidator validator = new EmailValidator();
validator.setValidatorContext(new DelegatingValidatorContext(action, tpf));
validator.setFieldName("myEmail");
validator.setDefaultMessage("invalid email");
validator.setValueStack(ActionContext.getContext().getValueStack());
validator.validate(action);
return (action.getFieldErrors().size() == 0);
}
public boolean verifyEmailValidityWithExpression(final String email, final String expression) throws Exception {
ActionSupport action = new ActionSupport() {
public String getMyEmail() {
return email;
}
public String getEmailExpression() {
return expression;
}
};
EmailValidator validator = new EmailValidator();
ValueStack valueStack = ActionContext.getContext().getValueStack();
valueStack.push(action);
validator.setValueStack(valueStack);
validator.setValidatorContext(new DelegatingValidatorContext(action, tpf));
validator.setFieldName("myEmail");
validator.setDefaultMessage("invalid email");
validator.setRegexExpression("${emailExpression}");
validator.validate(action);
return (action.getFieldErrors().size() == 0);
}
public void testCaseSensitiveViaExpression() throws Exception {
EmailValidator validator = verifyCaseSensitive(true);
assertTrue(validator.isCaseSensitive());
validator = verifyCaseSensitive(false);
assertFalse(validator.isCaseSensitive());
}
private EmailValidator verifyCaseSensitive(final boolean caseSensitive) {
ActionSupport action = new ActionSupport() {
public boolean getEmailCaseSensitive() {
return caseSensitive;
}
};
EmailValidator validator = new EmailValidator();
ValueStack valueStack = ActionContext.getContext().getValueStack();
valueStack.push(action);
validator.setValueStack(valueStack);
validator.setCaseSensitiveExpression("${emailCaseSensitive}");
return validator;
}
public void testTrimViaExpression() throws Exception {
EmailValidator validator = verifyTrim(true);
assertTrue(validator.isTrimed());
validator = verifyTrim(false);
assertFalse(validator.isTrimed());
}
private EmailValidator verifyTrim(final boolean trim) {
ActionSupport action = new ActionSupport() {
public boolean getTrimEmail() {
return trim;
}
};
EmailValidator validator = new EmailValidator();
ValueStack valueStack = ActionContext.getContext().getValueStack();
valueStack.push(action);
validator.setValueStack(valueStack);
validator.setTrimExpression("${trimEmail}");
return validator;
}
@Override
public void setUp() throws Exception {
super.setUp();
tpf = container.getInstance(TextProviderFactory.class);
}
}