/* * Hibernate Validator, declare and validate application constraints * * License: Apache License, Version 2.0 * See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>. */ package org.hibernate.validator.test.constraints.br; import java.util.Set; import javax.validation.ConstraintViolation; import javax.validation.Validator; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import org.hibernate.validator.constraints.br.CPF; import org.hibernate.validator.testutil.TestForIssue; import static org.hibernate.validator.testutil.ConstraintViolationAssert.assertNumberOfViolations; import static org.hibernate.validator.testutils.ValidatorUtil.getValidator; public class CPFValidatorTest { private String[] invalidCPFs = { "000.000.000-00", "111.111.111-11", "222.222.222-22", "333.333.333-33", "444.444.444-44", "555.555.555-55", "666.666.666-66", "777.777.777-77", "888.888.888-88", "999.999.999-99" }; private Validator validator; @BeforeMethod public void setUp() { validator = getValidator(); } @Test @TestForIssue(jiraKey = "HV-491") public void correct_cpf_with_separator_validates() { Set<ConstraintViolation<Person>> violations = validator.validate( new Person( "134.241.313-00" ) ); assertNumberOfViolations( violations, 0 ); } @Test @TestForIssue(jiraKey = "HV-933") public void correct_cpf_without_separator_validates() { Set<ConstraintViolation<Person>> violations = validator.validate( new Person( "13424131300" ) ); assertNumberOfViolations( violations, 0 ); } @Test @TestForIssue(jiraKey = "HV-491") public void incorrect_formatted_cpf_is_invalid() { Set<ConstraintViolation<Person>> violations = validator.validate( new Person( "48255-77" ) ); assertNumberOfViolations( violations, 1 ); } @Test @TestForIssue(jiraKey = "HV-808") public void any_same_digit_cpf_with_separator_is_invalid() { for ( String cpf : invalidCPFs ) { Set<ConstraintViolation<Person>> violations = validator.validate( new Person( cpf ) ); assertNumberOfViolations( violations, 1 ); } } @Test @TestForIssue(jiraKey = "HV-933") public void any_same_digit_cpf_without_separator_is_invalid() { for ( String cpf : invalidCPFs ) { String cpfWithoutseparator = cpf.replaceAll( "[^0-9]", "" ); Set<ConstraintViolation<Person>> violations = validator.validate( new Person( cpfWithoutseparator ) ); assertNumberOfViolations( violations, 1 ); } } @Test @TestForIssue(jiraKey = "HV-808") public void valid_cpfs_with_separator_validate() { Set<ConstraintViolation<Person>> violations = validator.validate( new Person( "378.796.950-01" ) ); assertNumberOfViolations( violations, 0 ); violations = validator.validate( new Person( "331.814.296-43" ) ); assertNumberOfViolations( violations, 0 ); } @Test @TestForIssue(jiraKey = "HV-933") public void valid_cpf_without_separator_validates() { Set<ConstraintViolation<Person>> violations = validator.validate( new Person( "37879695001" ) ); assertNumberOfViolations( violations, 0 ); violations = validator.validate( new Person( "33181429643" ) ); assertNumberOfViolations( violations, 0 ); } @Test @TestForIssue(jiraKey = "HV-979") public void correct_cpf_with_dash_only_separator_validates() { Set<ConstraintViolation<Person>> violations = validator.validate( new Person( "134241313-00" ) ); assertNumberOfViolations( violations, 0 ); } @Test @TestForIssue(jiraKey = "HV-808") public void invalid_cpf_with_separator_creates_constraint_violation() { Set<ConstraintViolation<Person>> violations = validator.validate( new Person( "378.796.950-02" ) ); assertNumberOfViolations( violations, 1 ); violations = validator.validate( new Person( "331.814.296-52" ) ); assertNumberOfViolations( violations, 1 ); violations = validator.validate( new Person( "331.814.296-51" ) ); assertNumberOfViolations( violations, 1 ); } @Test @TestForIssue(jiraKey = "HV-933") public void invalid_cpf_without_separator_creates_constraint_violation() { Set<ConstraintViolation<Person>> violations = validator.validate( new Person( "37879695002" ) ); assertNumberOfViolations( violations, 1 ); violations = validator.validate( new Person( "33181429652" ) ); assertNumberOfViolations( violations, 1 ); violations = validator.validate( new Person( "33181429651" ) ); assertNumberOfViolations( violations, 1 ); } public static class Person { @CPF private String cpf; public Person(String cpf) { this.cpf = cpf; } } }