package com.thinkbiganalytics.validation; /*- * #%L * thinkbig-field-policy-core * %% * Copyright (C) 2017 ThinkBig Analytics * %% * Licensed 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. * #L% */ import com.thinkbiganalytics.policy.PolicyTransformException; import com.thinkbiganalytics.policy.rest.model.FieldValidationRule; import com.thinkbiganalytics.policy.validation.CreditCardValidator; import com.thinkbiganalytics.policy.validation.EmailValidator; import com.thinkbiganalytics.policy.validation.IPAddressValidator; import com.thinkbiganalytics.policy.validation.LengthValidator; import com.thinkbiganalytics.policy.validation.LookupValidator; import com.thinkbiganalytics.policy.validation.NotNullValidator; import com.thinkbiganalytics.policy.validation.RangeValidator; import com.thinkbiganalytics.policy.validation.RegexValidator; import com.thinkbiganalytics.policy.validation.TimestampValidator; import com.thinkbiganalytics.policy.validation.USPhoneValidator; import com.thinkbiganalytics.policy.validation.USZipCodeValidator; import com.thinkbiganalytics.policy.validation.ValidationPolicy; import com.thinkbiganalytics.validation.transform.ValidatorAnnotationTransformer; import org.apache.commons.lang3.StringUtils; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; /** */ public class TestValidationTransformation { @Test @Ignore public void testRangeValidator() { Integer min = 10; Integer max = 20; RangeValidator validator = new RangeValidator(min, max); FieldValidationRule uiModel = ValidatorAnnotationTransformer.instance().toUIModel(validator); RangeValidator convertedValidator = fromUI(uiModel, RangeValidator.class); Assert.assertEquals(min, convertedValidator.getMin()); Assert.assertEquals(max, convertedValidator.getMin()); } @Test public void testCreditCardValidator() { CreditCardValidator validator = CreditCardValidator.instance(); FieldValidationRule uiModel = ValidatorAnnotationTransformer.instance().toUIModel(validator); CreditCardValidator convertedValidator = fromUI(uiModel, CreditCardValidator.class); Assert.assertEquals(validator, convertedValidator); } @Test public void testEmailValidator() { EmailValidator validator = EmailValidator.instance(); FieldValidationRule uiModel = ValidatorAnnotationTransformer.instance().toUIModel(validator); EmailValidator convertedValidator = fromUI(uiModel, EmailValidator.class); Assert.assertEquals(validator, convertedValidator); } @Test public void testIPAddressValidator() { IPAddressValidator validator = IPAddressValidator.instance(); FieldValidationRule uiModel = ValidatorAnnotationTransformer.instance().toUIModel(validator); IPAddressValidator convertedValidator = fromUI(uiModel, IPAddressValidator.class); Assert.assertEquals(validator, convertedValidator); } @Test public void testLookupValidator() { String lookupList = "one,two,three"; LookupValidator validator = new LookupValidator(lookupList); FieldValidationRule uiModel = ValidatorAnnotationTransformer.instance().toUIModel(validator); LookupValidator convertedValidator = fromUI(uiModel, LookupValidator.class); Assert.assertEquals(lookupList, convertedValidator.getLookupList()); for (String value : StringUtils.split(lookupList, ",")) { Assert.assertTrue(value, convertedValidator.getLookupValues().contains(value)); } } @Test public void testLengthValidator() { Integer min = 10; Integer max = 20; LengthValidator validator = new LengthValidator(min, max); FieldValidationRule uiModel = ValidatorAnnotationTransformer.instance().toUIModel(validator); LengthValidator convertedValidator = fromUI(uiModel, LengthValidator.class); Assert.assertEquals(min.intValue(), convertedValidator.getMinLength()); Assert.assertEquals(max.intValue(), convertedValidator.getMaxLength()); } @Test public void testRegexValidator() { String regex = "."; RegexValidator validator = new RegexValidator(regex); FieldValidationRule uiModel = ValidatorAnnotationTransformer.instance().toUIModel(validator); RegexValidator convertedValidator = fromUI(uiModel, RegexValidator.class); Assert.assertEquals(regex, convertedValidator.getRegexExpression()); Assert.assertEquals(regex, convertedValidator.getPattern().pattern()); } @Test public void testTimestampValidator() { TimestampValidator validator = new TimestampValidator(false); FieldValidationRule uiModel = ValidatorAnnotationTransformer.instance().toUIModel(validator); TimestampValidator convertedValidator = fromUI(uiModel, TimestampValidator.class); Assert.assertEquals(validator.isAllowNull(), convertedValidator.isAllowNull()); } @Test public void testUSPhoneValidator() { USPhoneValidator validator = USPhoneValidator.instance(); FieldValidationRule uiModel = ValidatorAnnotationTransformer.instance().toUIModel(validator); USPhoneValidator convertedValidator = fromUI(uiModel, USPhoneValidator.class); Assert.assertEquals(validator, convertedValidator); } @Test public void testUSZipCodeValidator() { USZipCodeValidator validator = USZipCodeValidator.instance(); FieldValidationRule uiModel = ValidatorAnnotationTransformer.instance().toUIModel(validator); USZipCodeValidator convertedValidator = fromUI(uiModel, USZipCodeValidator.class); Assert.assertEquals(validator, convertedValidator); } @Test public void testNotNullValidator() { NotNullValidator validator = new NotNullValidator(false, true); FieldValidationRule uiModel = ValidatorAnnotationTransformer.instance().toUIModel(validator); NotNullValidator convertedValidator = fromUI(uiModel, NotNullValidator.class); Assert.assertFalse(convertedValidator.isAllowEmptyString()); Assert.assertTrue(convertedValidator.isTrimString()); } private <T extends ValidationPolicy> T fromUI(FieldValidationRule uiModel, Class<T> policyClass) { try { ValidationPolicy policy = ValidatorAnnotationTransformer.instance().fromUiModel(uiModel); return (T) policy; } catch (PolicyTransformException e) { e.printStackTrace(); ; } return null; } }