2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.models.base;
23 import static org.assertj.core.api.Assertions.assertThatThrownBy;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertFalse;
26 import static org.junit.Assert.assertSame;
27 import static org.junit.Assert.assertTrue;
29 import java.util.Arrays;
30 import java.util.Iterator;
31 import java.util.LinkedHashMap;
32 import java.util.List;
34 import org.junit.Before;
35 import org.junit.Test;
37 public class ValidatedTest {
38 private static final String ERROR_MESSAGE = "error message";
39 private static final String COLLECTION_FIELD = "coll";
40 private static final String VALID_VALUE = "abc123";
41 private static final String PROPS_FIELD = "props";
42 private static final String MY_NAME = "my.name";
43 private static final String VALID_FIELD = "validField";
44 private static final String INVALID_FIELD = "invalidField";
45 private static final String NULL_FIELD = "nullField";
46 private static final String WORD_PAT = "\\w*";
47 private static final String MY_TO_STRING = "[some text]";
48 private static final String VERSION = "1.2.3";
50 private Validated validated;
54 validated = new Validated();
58 public void testValidate() {
59 assertThatThrownBy(() -> validated.validate(null)).isInstanceOf(NullPointerException.class);
61 PfValidationResult result = new PfValidationResult();
62 assertSame(result, validated.validate(result));
63 assertTrue(result.isValid());
64 assertEquals(0, result.getMessageList().size());
68 public void testValidateNotNull() {
69 PfValidationResult result = new PfValidationResult();
71 final PfValidationResult result2 = result;
72 assertThatThrownBy(() -> validated.validateNotNull(null, VALID_FIELD, VALID_VALUE, result2))
73 .isInstanceOf(NullPointerException.class);
74 assertThatThrownBy(() -> validated.validateNotNull(this, null, VALID_VALUE, result2))
75 .isInstanceOf(NullPointerException.class);
76 assertThatThrownBy(() -> validated.validateNotNull(this, VALID_FIELD, VALID_VALUE, null))
77 .isInstanceOf(NullPointerException.class);
80 result = validated.validateNotNull(this, NULL_FIELD, null, result);
83 result = validated.validateNotNull(this, INVALID_FIELD, "!!!", result);
86 result = validated.validateNotNull(this, VALID_FIELD, VALID_VALUE, result);
89 result = validated.validateNotNull(this, VALID_FIELD, Integer.valueOf(10), result);
91 assertFalse(result.isValid());
92 assertEquals(1, result.getMessageList().size());
94 // check result for null text
95 PfValidationMessage msg = result.getMessageList().get(0);
96 assertEquals(ValidatedTest.class.getName(), msg.getObservedClass());
97 assertEquals(MY_TO_STRING, msg.getObservedKey().toString());
98 assertTrue(msg.getMessage().contains("nullField invalid-null"));
102 public void testValidateNotNullConceptKey() {
103 PfValidationResult result = new PfValidationResult();
106 PfConceptKey key = new PfConceptKey();
107 key.setVersion(VERSION);
108 result = validated.validateNotNull(key, result);
111 key = new PfConceptKey();
112 key.setName(MY_NAME);
113 result = validated.validateNotNull(key, result);
116 key = new PfConceptKey();
117 result = validated.validateNotNull(key, result);
119 assertFalse(result.isValid());
120 assertEquals(4, result.getMessageList().size());
123 key = new PfConceptKey();
124 key.setName(MY_NAME);
125 key.setVersion(VERSION);
126 result = validated.validateNotNull(key, result);
129 assertFalse(result.isValid());
130 assertEquals(4, result.getMessageList().size());
132 Iterator<PfValidationMessage> it = result.getMessageList().iterator();
135 PfValidationMessage msg = it.next();
136 assertEquals(PfConceptKey.class.getName(), msg.getObservedClass());
137 assertTrue(msg.getMessage().contains("name invalid-null"));
141 assertEquals(PfConceptKey.class.getName(), msg.getObservedClass());
142 assertTrue(msg.getMessage().contains("version invalid-null"));
146 assertEquals(PfConceptKey.class.getName(), msg.getObservedClass());
147 assertTrue(msg.getMessage().contains("name invalid-null"));
148 assertTrue(it.next().getMessage().contains("version invalid-null"));
150 final PfConceptKey key2 = key;
151 assertThatThrownBy(() -> validated.validateNotNull(key2, null)).isInstanceOf(NullPointerException.class);
152 assertThatThrownBy(() -> validated.validateNotNull(null, new PfValidationResult()))
153 .isInstanceOf(NullPointerException.class);
157 public void testValidateText() {
158 PfValidationResult result = new PfValidationResult();
160 final PfValidationResult result2 = result;
161 assertThatThrownBy(() -> validated.validateText(null, VALID_FIELD, VALID_VALUE, WORD_PAT, result2))
162 .isInstanceOf(NullPointerException.class);
163 assertThatThrownBy(() -> validated.validateText(this, null, VALID_VALUE, WORD_PAT, result2))
164 .isInstanceOf(NullPointerException.class);
165 assertThatThrownBy(() -> validated.validateText(this, VALID_FIELD, VALID_VALUE, null, result2))
166 .isInstanceOf(NullPointerException.class);
167 assertThatThrownBy(() -> validated.validateText(this, VALID_FIELD, VALID_VALUE, WORD_PAT, null))
168 .isInstanceOf(NullPointerException.class);
171 result = validated.validateText(this, NULL_FIELD, null, WORD_PAT, result);
174 result = validated.validateText(this, INVALID_FIELD, "!!!", WORD_PAT, result);
177 result = validated.validateText(this, VALID_FIELD, VALID_VALUE, WORD_PAT, result);
179 assertFalse(result.isValid());
180 assertEquals(1, result.getMessageList().size());
182 // check result for invalid text
183 PfValidationMessage msg = result.getMessageList().get(0);
184 assertEquals(ValidatedTest.class.getName(), msg.getObservedClass());
185 assertEquals(MY_TO_STRING, msg.getObservedKey().toString());
186 assertTrue(msg.getMessage().contains("invalidField invalid-parameter invalidField"));
190 public void testValidatePropertiesNotNull() {
191 PfValidationResult result = new PfValidationResult();
192 result = validated.validatePropertiesNotNull(this, "properties", null, result);
193 assertTrue(result.isValid());
194 assertEquals(0, result.getMessageList().size());
196 Map<String, Integer> map = new LinkedHashMap<>();
202 map.put("abc", null);
208 result = validated.validatePropertiesNotNull(this, PROPS_FIELD, map, result);
210 assertFalse(result.isValid());
211 assertEquals(2, result.getMessageList().size());
213 Iterator<PfValidationMessage> it = result.getMessageList().iterator();
216 PfValidationMessage msg = it.next();
217 assertEquals(ValidatedTest.class.getName(), msg.getObservedClass());
218 assertEquals(MY_TO_STRING, msg.getObservedKey().toString());
219 assertTrue(msg.getMessage().contains("props.null invalid-null"));
223 assertEquals(ValidatedTest.class.getName(), msg.getObservedClass());
224 assertEquals(MY_TO_STRING, msg.getObservedKey().toString());
225 assertTrue(msg.getMessage().contains("props.abc invalid-null"));
227 final PfValidationResult result2 = result;
228 assertThatThrownBy(() -> validated.validatePropertiesNotNull(null, PROPS_FIELD, map, result2))
229 .isInstanceOf(NullPointerException.class);
230 assertThatThrownBy(() -> validated.validatePropertiesNotNull(this, null, map, result2))
231 .isInstanceOf(NullPointerException.class);
232 assertThatThrownBy(() -> validated.validatePropertiesNotNull(this, PROPS_FIELD, map, null))
233 .isInstanceOf(NullPointerException.class);
237 public void testValidateCollectionNotNull() {
238 PfValidationResult result = new PfValidationResult();
239 result = validated.validateCollectionNotNull(this, "collection", null, result);
240 assertTrue(result.isValid());
241 assertEquals(0, result.getMessageList().size());
243 final List<String> lst = Arrays.asList("abc", null, "def", null);
245 result = validated.validateCollectionNotNull(this, COLLECTION_FIELD, lst, result);
247 assertFalse(result.isValid());
248 assertEquals(2, result.getMessageList().size());
250 Iterator<PfValidationMessage> it = result.getMessageList().iterator();
253 PfValidationMessage msg = it.next();
254 assertEquals(ValidatedTest.class.getName(), msg.getObservedClass());
255 assertEquals(MY_TO_STRING, msg.getObservedKey().toString());
256 assertTrue(msg.getMessage().contains("coll.1 invalid-null"));
260 assertEquals(ValidatedTest.class.getName(), msg.getObservedClass());
261 assertEquals(MY_TO_STRING, msg.getObservedKey().toString());
262 assertTrue(msg.getMessage().contains("coll.3 invalid-null"));
264 final PfValidationResult result2 = result;
265 assertThatThrownBy(() -> validated.validateCollectionNotNull(null, COLLECTION_FIELD, lst, result2))
266 .isInstanceOf(NullPointerException.class);
267 assertThatThrownBy(() -> validated.validateCollectionNotNull(this, null, lst, result2))
268 .isInstanceOf(NullPointerException.class);
269 assertThatThrownBy(() -> validated.validateCollectionNotNull(this, COLLECTION_FIELD, lst, null))
270 .isInstanceOf(NullPointerException.class);
274 public void testValidateCollection() {
275 PfValidationResult result = new PfValidationResult();
276 result = validated.validateCollection(this, "collection", null, result);
277 assertTrue(result.isValid());
278 assertEquals(0, result.getMessageList().size());
280 List<MyValid> lst = Arrays.asList(new MyValid(0, false), new MyValid(1, true), null, new MyValid(2, false),
281 new MyValid(3, true));
282 result = validated.validateCollection(this, COLLECTION_FIELD, lst, result);
284 assertFalse(result.isValid());
285 assertEquals(2, result.getMessageList().size());
287 Iterator<PfValidationMessage> it = result.getMessageList().iterator();
290 PfValidationMessage msg = it.next();
291 assertEquals(MyValid.class.getName().replace('$', '.'), msg.getObservedClass());
292 assertEquals(MY_TO_STRING, msg.getObservedKey().toString());
293 assertTrue(msg.getMessage().contains("index.0 invalid-wrong value"));
297 assertEquals(MyValid.class.getName().replace('$', '.'), msg.getObservedClass());
298 assertEquals(MY_TO_STRING, msg.getObservedKey().toString());
299 assertTrue(msg.getMessage().contains("index.2 invalid-wrong value"));
301 final PfValidationResult result2 = result;
302 assertThatThrownBy(() -> validated.validateCollection(null, COLLECTION_FIELD, lst, result2))
303 .isInstanceOf(NullPointerException.class);
304 assertThatThrownBy(() -> validated.validateCollection(this, null, lst, result2))
305 .isInstanceOf(NullPointerException.class);
306 assertThatThrownBy(() -> validated.validateCollection(this, COLLECTION_FIELD, lst, null))
307 .isInstanceOf(NullPointerException.class);
311 public void testValidateConceptCollection() {
312 PfValidationResult result = new PfValidationResult();
313 result = validated.validateConceptCollection(this, "collection", null, result);
314 assertTrue(result.isValid());
315 assertEquals(0, result.getMessageList().size());
317 List<MyConcept> lst = Arrays.asList(new MyConcept(0, false), new MyConcept(1, true), null,
318 new MyConcept(2, false), new MyConcept(3, true));
319 result = validated.validateConceptCollection(this, COLLECTION_FIELD, lst, result);
321 assertFalse(result.isValid());
322 assertEquals(2, result.getMessageList().size());
324 Iterator<PfValidationMessage> it = result.getMessageList().iterator();
327 PfValidationMessage msg = it.next();
328 assertEquals(MyConcept.class.getName().replace('$', '.'), msg.getObservedClass());
329 assertEquals(MY_TO_STRING, msg.getObservedKey().toString());
330 assertTrue(msg.getMessage().contains("index.0 invalid-wrong value"));
334 assertEquals(MyConcept.class.getName().replace('$', '.'), msg.getObservedClass());
335 assertEquals(MY_TO_STRING, msg.getObservedKey().toString());
336 assertTrue(msg.getMessage().contains("index.2 invalid-wrong value"));
338 final PfValidationResult result2 = result;
339 assertThatThrownBy(() -> validated.validateConceptCollection(null, COLLECTION_FIELD, lst, result2))
340 .isInstanceOf(NullPointerException.class);
341 assertThatThrownBy(() -> validated.validateConceptCollection(this, null, lst, result2))
342 .isInstanceOf(NullPointerException.class);
343 assertThatThrownBy(() -> validated.validateConceptCollection(this, COLLECTION_FIELD, lst, null))
344 .isInstanceOf(NullPointerException.class);
348 public void testAddError() {
349 final PfValidationResult result = new PfValidationResult();
350 final PfValidationResult result2 = result;
352 assertThatThrownBy(() -> validated.addError(null, VALID_FIELD, result2, ERROR_MESSAGE))
353 .isInstanceOf(NullPointerException.class);
354 assertThatThrownBy(() -> validated.addError(this, null, result2, ERROR_MESSAGE))
355 .isInstanceOf(NullPointerException.class);
356 assertThatThrownBy(() -> validated.addError(this, VALID_FIELD, null, ERROR_MESSAGE))
357 .isInstanceOf(NullPointerException.class);
359 validated.addError(this, VALID_FIELD, result, "error-A");
360 validated.addError(this, VALID_FIELD, result, null);
361 validated.addError(this, VALID_FIELD, result, "error-B");
363 assertFalse(result.isValid());
364 assertEquals(2, result.getMessageList().size());
366 Iterator<PfValidationMessage> it = result.getMessageList().iterator();
368 PfValidationMessage msg = it.next();
369 assertEquals(ValidatedTest.class.getName(), msg.getObservedClass());
370 assertEquals(MY_TO_STRING, msg.getObservedKey().toString());
371 assertTrue(msg.getMessage().contains("validField invalid-error-A"));
374 assertEquals(ValidatedTest.class.getName(), msg.getObservedClass());
375 assertEquals(MY_TO_STRING, msg.getObservedKey().toString());
376 assertTrue(msg.getMessage().contains("validField invalid-error-B"));
380 public void testMakeKey() {
381 assertThatThrownBy(() -> validated.makeKey(null)).isInstanceOf(NullPointerException.class);
383 PfKey key = validated.makeKey(this);
384 assertEquals(MY_TO_STRING, key.toString());
388 public String toString() {
392 private static class MyValid extends Validated {
393 private boolean valid;
396 public MyValid(int index, boolean valid) {
402 public PfValidationResult validate(PfValidationResult result) {
404 this.addError(this, "index." + index, result, "wrong value");
411 public String toString() {
416 private static class MyConcept extends PfConceptKey {
417 private static final long serialVersionUID = 1L;
419 private boolean valid;
422 public MyConcept(int index, boolean valid) {
428 public PfValidationResult validate(PfValidationResult result) {
430 new Validated().addError(this, "index." + index, result, "wrong value");
437 public String toString() {