/*******************************************************************************
* Copyright (c) 2010-2014 SAP AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.skalli.services.extension.validators;
import java.util.SortedSet;
import org.eclipse.skalli.model.Issue;
import org.eclipse.skalli.model.Severity;
import org.eclipse.skalli.services.extension.PropertyValidatorTestUtils;
import org.eclipse.skalli.testutil.TestExtension;
import org.eclipse.skalli.testutil.TestUUIDs;
import org.junit.Assert;
import org.junit.Test;
@SuppressWarnings("nls")
public class EmailValidatorTest {
@Test
public void testIsValid() throws Exception {
EmailValidator validator = new EmailValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR,
"proj.*");
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "homer@springfield.org"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "Homer@springfield.org"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "Homer@server.springfield.org"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "homer.simpson@springfield.org"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "homer-simpson@springfield.org"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "homer42@springfield.org"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "Hom.Er._.4-2@springfield.org"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "homer@[127.0.0.1]"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "_homer@springfield.org"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "-homer@springfield.org"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "homer+@springfield.org"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0], "homer&marge@springfield.org"));
Assert.assertTrue(validator.isValid(TestUUIDs.TEST_UUIDS[0],
"homer!#$%&'*+-/=?^_`{|}~blab.lubb@springfield.org"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], ".homer@springfield.org"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "ho,mer@springfield.org"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "homer@springfield.x"));
Assert.assertFalse(validator.isValid(TestUUIDs.TEST_UUIDS[0], "homerĀ°marge@springfield.org"));
}
@Test
public void testValidate() throws Exception {
EmailValidator validator = new EmailValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR);
SortedSet<Issue> issues = validator.validate(TestUUIDs.TEST_UUIDS[0], "homer@springfield.org",
Severity.FATAL);
Assert.assertNotNull(issues);
Assert.assertEquals(0, issues.size());
String value = ".homer@springfield.org";
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], value, Severity.FATAL);
Assert.assertNotNull(issues);
Assert.assertEquals(1, issues.size());
Assert.assertEquals(validator.getDefaultInvalidMessage(value), issues.first().getMessage());
Assert.assertEquals(TestUUIDs.TEST_UUIDS[0], issues.first().getEntityId());
Assert.assertEquals(TestExtension.class, issues.first().getExtension());
Assert.assertEquals(TestExtension.PROPERTY_STR, issues.first().getPropertyId());
Assert.assertEquals(Severity.FATAL, issues.first().getSeverity());
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], null, Severity.FATAL);
Assert.assertNotNull(issues);
Assert.assertEquals(0, issues.size());
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], "", Severity.FATAL);
Assert.assertNotNull(issues);
Assert.assertEquals(0, issues.size());
validator.setValueRequired(true);
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], null, Severity.FATAL);
Assert.assertNotNull(issues);
Assert.assertEquals(1, issues.size());
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], "", Severity.FATAL);
Assert.assertNotNull(issues);
Assert.assertEquals(1, issues.size());
}
@Test
public void testInvalidMessages() {
String value = ".homer@springfield.org";
EmailValidator validator = new EmailValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR,
"EMail");
SortedSet<Issue> issues = validator.validate(TestUUIDs.TEST_UUIDS[0], value, Severity.FATAL);
Assert.assertEquals(validator.getInvalidMessageFromCaption(value), issues.first().getMessage());
validator = new EmailValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR,
"Invalid EMail", "Undefined EMail");
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], value, Severity.FATAL);
Assert.assertEquals("Invalid EMail", issues.first().getMessage());
}
@Test
public void testUndefinedMessages() throws Exception {
assertUndefinedMessages(null);
assertUndefinedMessages("");
}
private void assertUndefinedMessages(String value) {
EmailValidator validator = new EmailValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR);
validator.setValueRequired(true);
SortedSet<Issue> issues = validator.validate(TestUUIDs.TEST_UUIDS[0], value, Severity.FATAL);
PropertyValidatorTestUtils.assertIsDefaultMessage(validator, issues.first().getMessage());
validator = new EmailValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR, "EMail");
validator.setValueRequired(true);
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], value, Severity.FATAL);
PropertyValidatorTestUtils.assertIsUndefinedMessageFromCaption(validator, issues.first().getMessage());
validator = new EmailValidator(Severity.FATAL, TestExtension.class, TestExtension.PROPERTY_STR,
"Invalid EMail", "Undefined EMail");
validator.setValueRequired(true);
issues = validator.validate(TestUUIDs.TEST_UUIDS[0], value, Severity.FATAL);
Assert.assertEquals("Undefined EMail", issues.first().getMessage());
}
}