| /* |
| * 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.camel.component.cm.test; |
| |
| import java.util.Set; |
| |
| import javax.validation.ConstraintViolation; |
| import javax.validation.Validator; |
| |
| import com.google.i18n.phonenumbers.PhoneNumberUtil; |
| import com.google.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberFormat; |
| import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; |
| import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber.CountryCodeSource; |
| import org.apache.camel.component.cm.client.SMSMessage; |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| import org.springframework.beans.factory.annotation.Autowired; |
| import org.springframework.test.context.ContextConfiguration; |
| import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; |
| import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; |
| import org.springframework.util.Assert; |
| |
| @RunWith(SpringJUnit4ClassRunner.class) |
| @ContextConfiguration(classes = {ValidatorConfiguration.class }) |
| // @DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) |
| // @DisableJmx(false) |
| // @FixMethodOrder(MethodSorters.NAME_ASCENDING) |
| public class SMSMessageTest extends AbstractJUnit4SpringContextTests { |
| |
| @Autowired |
| private Validator validator; |
| |
| private final PhoneNumberUtil pnu = PhoneNumberUtil.getInstance(); |
| private String validNumber; |
| |
| @Before |
| public void beforeTest() throws Exception { |
| |
| validNumber = pnu.format(pnu.getExampleNumber("ES"), PhoneNumberFormat.E164); |
| } |
| |
| // @After |
| // public void afterTest() { |
| |
| @Test |
| public void testSMSMessageConstructor() throws Throwable { |
| |
| // Coverage ;) |
| SMSMessage message = new SMSMessage(null, null); |
| Assert.isNull(message.getMessage()); |
| Assert.isNull(message.getPhoneNumber()); |
| |
| message = new SMSMessage("idAsString", null, null, "MySelf"); |
| Assert.isTrue(message.getId().equals("idAsString")); |
| Assert.isTrue(message.getFrom().equals("MySelf")); |
| } |
| |
| @Test |
| public void testNullMessageField() throws Exception { |
| |
| final SMSMessage m = new SMSMessage(null, validNumber); |
| |
| final Set<ConstraintViolation<SMSMessage>> constraintViolations = validator.validate(m); |
| Assert.isTrue(1 == constraintViolations.size()); |
| } |
| |
| @Test |
| public void testNullPhoneNumber() throws Exception { |
| |
| final SMSMessage m = new SMSMessage("Hello world!", null); |
| |
| final Set<ConstraintViolation<SMSMessage>> constraintViolations = validator.validate(m); |
| Assert.isTrue(1 == constraintViolations.size()); |
| } |
| |
| @Test |
| public void testDynamicFromFieldMaxLength() throws Exception { |
| |
| String dynamicFrom = "messagelengthgreaterthan12"; |
| |
| final SMSMessage m = new SMSMessage("idAsString", "Hello World", validNumber, dynamicFrom); |
| |
| final Set<ConstraintViolation<SMSMessage>> constraintViolations = validator.validate(m); |
| Assert.isTrue(1 == constraintViolations.size()); |
| } |
| |
| @Test |
| public void testDynamicFromFieldZeroLength() throws Exception { |
| |
| String zeroLengthDynamicFrom = ""; |
| |
| final SMSMessage m = new SMSMessage("idAsString", "Hello World", validNumber, zeroLengthDynamicFrom); |
| |
| final Set<ConstraintViolation<SMSMessage>> constraintViolations = validator.validate(m); |
| Assert.isTrue(1 == constraintViolations.size()); |
| } |
| |
| @Test |
| public void testIdAsStringMaxLength() throws Exception { |
| |
| String idAsString = "thisistheidastringlengthgreaterthan32"; |
| |
| final SMSMessage m = new SMSMessage(idAsString, "Hello World", validNumber, "MySelf"); |
| |
| final Set<ConstraintViolation<SMSMessage>> constraintViolations = validator.validate(m); |
| Assert.isTrue(1 == constraintViolations.size()); |
| } |
| |
| @Test |
| public void testIdAsStringFieldZeroLength() throws Exception { |
| |
| String zeroLengthIdAsString = ""; |
| |
| final SMSMessage m = new SMSMessage(zeroLengthIdAsString, "Hello World", validNumber, "MySelf"); |
| |
| final Set<ConstraintViolation<SMSMessage>> constraintViolations = validator.validate(m); |
| Assert.isTrue(1 == constraintViolations.size()); |
| } |
| |
| @Test |
| public void testE164NullNumberIsInValid() throws Exception { |
| |
| final String phoneNumber = null; |
| final SMSMessage m = new SMSMessage("Hello world!", phoneNumber); |
| |
| final Set<ConstraintViolation<SMSMessage>> constraintViolations = validator.validate(m); |
| Assert.isTrue(1 == constraintViolations.size()); |
| } |
| |
| @Test |
| public void testE164IsValid() throws Exception { |
| |
| final SMSMessage m = new SMSMessage("Hello world!", validNumber); |
| |
| final Set<ConstraintViolation<SMSMessage>> constraintViolations = validator.validate(m); |
| Assert.isTrue(0 == constraintViolations.size()); |
| } |
| |
| @Test |
| public void testE164NoPlusSignedNumberIsInvalid() throws Exception { |
| |
| final String phoneNumber = "34600000000"; |
| final SMSMessage m = new SMSMessage("Hello world!", phoneNumber); |
| |
| final Set<ConstraintViolation<SMSMessage>> constraintViolations = validator.validate(m); |
| Assert.isTrue(1 == constraintViolations.size()); |
| } |
| |
| @Test |
| public void testE164NoPlusSignedNumberBut00IsInvalid() throws Exception { |
| |
| final String phoneNumber = new PhoneNumber().setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN).setNationalNumber(0034600000000).toString(); |
| final SMSMessage m = new SMSMessage("Hello world!", phoneNumber); |
| |
| final Set<ConstraintViolation<SMSMessage>> constraintViolations = validator.validate(m); |
| Assert.isTrue(1 == constraintViolations.size()); |
| } |
| |
| @Test |
| public void testE164NumberWithPlusSignIsInvalid() throws Exception { |
| |
| final String phoneNumber = "+34 600 00 00 00"; |
| final SMSMessage m = new SMSMessage("Hello world!", phoneNumber); |
| |
| final Set<ConstraintViolation<SMSMessage>> constraintViolations = validator.validate(m); |
| Assert.isTrue(1 == constraintViolations.size()); |
| } |
| } |