1
2
3
4 package de.powerstat.validation.values.strategies.test;
5
6
7 import static org.junit.jupiter.api.Assertions.assertAll;
8 import static org.junit.jupiter.api.Assertions.assertNotNull;
9 import static org.junit.jupiter.api.Assertions.assertThrows;
10
11 import org.junit.jupiter.api.Test;
12
13 import de.powerstat.validation.values.strategies.IPasswordStrategy;
14 import de.powerstat.validation.values.strategies.PasswordConfigurableStrategy;
15 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
16
17
18
19
20
21 @SuppressFBWarnings("PRMC_POSSIBLY_REDUNDANT_METHOD_CALLS")
22 final class PasswordConfigurableStrategyTests
23 {
24
25
26
27 private static final String PWD_PATTERN = "^[@./_0-9a-zA-Z-]+$";
28
29
30
31
32 private static final String PWD_1234567890 = "1234567890";
33
34
35
36
37 private static final String CLEAN_STRATEGY_NOT_AS_EXPECTED = "cleanStrategy not as expected";
38
39
40
41
42 private static final String ILLEGAL_ARGUMENT_EXCEPTION = "Illegal argument exception expected";
43
44
45
46
47 private static final String DUMMY1 = "1111111111";
48
49
50
51
52
53 PasswordConfigurableStrategyTests()
54 {
55 super();
56 }
57
58
59
60
61
62 @Test
63 void testMinLengthToShort()
64 {
65 assertThrows(IllegalArgumentException.class, () ->
66 {
67 PasswordConfigurableStrategy.of(0, 254, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 0, 0, 0);
68 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
69 );
70 }
71
72
73
74
75
76 @Test
77 void testMaxSmallerThanMinLength()
78 {
79 assertThrows(IllegalArgumentException.class, () ->
80 {
81 PasswordConfigurableStrategy.of(10, 9, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 0, 0, 0);
82 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
83 );
84 }
85
86
87
88
89
90 @Test
91 void testMaxEqualMinLength()
92 {
93 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(10, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 0, 0, 0);
94 assertNotNull(cleanStrategy, PasswordConfigurableStrategyTests.CLEAN_STRATEGY_NOT_AS_EXPECTED);
95 }
96
97
98
99
100
101 @Test
102 void testCache()
103 {
104 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(10, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 0, 0, 0);
105 final IPasswordStrategy cleanStrategy2 = PasswordConfigurableStrategy.of(10, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 0, 0, 0);
106 assertAll("testEquals",
107 () -> assertNotNull(cleanStrategy, PasswordConfigurableStrategyTests.CLEAN_STRATEGY_NOT_AS_EXPECTED),
108 () -> assertNotNull(cleanStrategy2, PasswordConfigurableStrategyTests.CLEAN_STRATEGY_NOT_AS_EXPECTED)
109 );
110 }
111
112
113
114
115
116 @Test
117 void testRegexpWrong1()
118 {
119 assertThrows(IllegalArgumentException.class, () ->
120 {
121 PasswordConfigurableStrategy.of(1, 254, "[@./_0-9a-zA-Z-]+", 0, 0, 0, 0, 0, 0);
122 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
123 );
124 }
125
126
127
128
129
130 @Test
131 void testRegexpWrong2()
132 {
133 assertThrows(IllegalArgumentException.class, () ->
134 {
135 PasswordConfigurableStrategy.of(1, 254, "^[@./_0-9a-zA-Z-]+", 0, 0, 0, 0, 0, 0);
136 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
137 );
138 }
139
140
141
142
143
144 @Test
145 void testMinNumericNegative()
146 {
147 assertThrows(IllegalArgumentException.class, () ->
148 {
149 PasswordConfigurableStrategy.of(1, 254, PasswordConfigurableStrategyTests.PWD_PATTERN, -1, 0, 0, 0, 0, 0);
150 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
151 );
152 }
153
154
155
156
157
158 @Test
159 void testMinNumericMaximum()
160 {
161 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(8, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 10, 0, 0, 0, 0, 0);
162 cleanStrategy.validationStrategy(PasswordConfigurableStrategyTests.PWD_1234567890);
163 assertNotNull(cleanStrategy, PasswordConfigurableStrategyTests.CLEAN_STRATEGY_NOT_AS_EXPECTED);
164 }
165
166
167
168
169
170 @Test
171 void testMinNumericGreaterMaxLength()
172 {
173 assertThrows(IllegalArgumentException.class, () ->
174 {
175 PasswordConfigurableStrategy.of(8, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 11, 0, 0, 0, 0, 0);
176 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
177 );
178 }
179
180
181
182
183
184 @Test
185 void testMinLowerGreaterMaxLength()
186 {
187 assertThrows(IllegalArgumentException.class, () ->
188 {
189 PasswordConfigurableStrategy.of(8, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 11, 0, 0, 0, 0);
190 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
191 );
192 }
193
194
195
196
197
198 @Test
199 void testMinUpperGreaterMaxLength()
200 {
201 assertThrows(IllegalArgumentException.class, () ->
202 {
203 PasswordConfigurableStrategy.of(8, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 11, 0, 0, 0);
204 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
205 );
206 }
207
208
209
210
211
212 @Test
213 void testMinSpecialGreaterMaxLength()
214 {
215 assertThrows(IllegalArgumentException.class, () ->
216 {
217 PasswordConfigurableStrategy.of(8, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 11, 0, 0);
218 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
219 );
220 }
221
222
223
224
225
226 @Test
227 void testMinUnqiueGreaterMaxLength()
228 {
229 assertThrows(IllegalArgumentException.class, () ->
230 {
231 PasswordConfigurableStrategy.of(8, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 0, 11, 0);
232 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
233 );
234 }
235
236
237
238
239
240 @Test
241 void testMaxRepeatedGreaterMaxLength()
242 {
243 assertThrows(IllegalArgumentException.class, () ->
244 {
245 PasswordConfigurableStrategy.of(8, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 0, 0, 11);
246 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
247 );
248 }
249
250
251
252
253
254 @Test
255 void testNumericFailure()
256 {
257 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(8, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 1, 0, 0, 0, 0, 0);
258 assertThrows(IllegalArgumentException.class, () ->
259 {
260 cleanStrategy.validationStrategy("abcdefghij");
261 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
262 );
263 }
264
265
266
267
268
269 @Test
270 void testMinLowerNegative()
271 {
272 assertThrows(IllegalArgumentException.class, () ->
273 {
274 PasswordConfigurableStrategy.of(1, 254, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, -1, 0, 0, 0, 0);
275 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
276 );
277 }
278
279
280
281
282
283 @Test
284 void testMinLowerMaximum()
285 {
286 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(1, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 10, 0, 0, 0, 0);
287 assertNotNull(cleanStrategy, PasswordConfigurableStrategyTests.CLEAN_STRATEGY_NOT_AS_EXPECTED);
288 }
289
290
291
292
293
294 @Test
295 void testLowerFailure()
296 {
297 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(8, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 1, 0, 0, 0, 0);
298 assertThrows(IllegalArgumentException.class, () ->
299 {
300 cleanStrategy.validationStrategy(PasswordConfigurableStrategyTests.PWD_1234567890);
301 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
302 );
303 }
304
305
306
307
308
309 @Test
310 void testMinUpperNegative()
311 {
312 assertThrows(IllegalArgumentException.class, () ->
313 {
314 PasswordConfigurableStrategy.of(1, 254, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, -1, 0, 0, 0);
315 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
316 );
317 }
318
319
320
321
322
323 @Test
324 void testMinUpperMaximum()
325 {
326 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(1, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 10, 0, 0, 0);
327 assertNotNull(cleanStrategy, PasswordConfigurableStrategyTests.CLEAN_STRATEGY_NOT_AS_EXPECTED);
328 }
329
330
331
332
333
334 @Test
335 void testUpperFailure()
336 {
337 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(8, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 1, 0, 0, 0);
338 assertThrows(IllegalArgumentException.class, () ->
339 {
340 cleanStrategy.validationStrategy(PasswordConfigurableStrategyTests.PWD_1234567890);
341 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
342 );
343 }
344
345
346
347
348
349 @Test
350 void testMinSpecialNegative()
351 {
352 assertThrows(IllegalArgumentException.class, () ->
353 {
354 PasswordConfigurableStrategy.of(1, 254, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, -1, 0, 0);
355 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
356 );
357 }
358
359
360
361
362
363 @Test
364 void testMinSpecialMaximum()
365 {
366 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(1, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 10, 0, 0);
367 assertNotNull(cleanStrategy, PasswordConfigurableStrategyTests.CLEAN_STRATEGY_NOT_AS_EXPECTED);
368 }
369
370
371
372
373
374 @Test
375 void testSpecialFailure()
376 {
377 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(8, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 1, 0, 0);
378 assertThrows(IllegalArgumentException.class, () ->
379 {
380 cleanStrategy.validationStrategy(PasswordConfigurableStrategyTests.PWD_1234567890);
381 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
382 );
383 }
384
385
386
387
388
389 @Test
390 void testMinUnqiueNegative()
391 {
392 assertThrows(IllegalArgumentException.class, () ->
393 {
394 PasswordConfigurableStrategy.of(1, 254, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 0, -1, 0);
395 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
396 );
397 }
398
399
400
401
402
403 @Test
404 void testMinUnqiueMaximum()
405 {
406 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(1, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 0, 10, 0);
407 assertNotNull(cleanStrategy, PasswordConfigurableStrategyTests.CLEAN_STRATEGY_NOT_AS_EXPECTED);
408 }
409
410
411
412
413
414 @Test
415 void testUniqueFailure()
416 {
417 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(8, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 0, 2, 0);
418 assertThrows(IllegalArgumentException.class, () ->
419 {
420 cleanStrategy.validationStrategy(PasswordConfigurableStrategyTests.DUMMY1);
421 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
422 );
423 }
424
425
426
427
428
429 @Test
430 void testMaxRepeatedNegative()
431 {
432 assertThrows(IllegalArgumentException.class, () ->
433 {
434 PasswordConfigurableStrategy.of(1, 254, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 0, 0, -1);
435 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
436 );
437 }
438
439
440
441
442
443 @Test
444 void testMaxRepeatedMaximum()
445 {
446 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(1, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 0, 0, 10);
447 cleanStrategy.validationStrategy(PasswordConfigurableStrategyTests.DUMMY1);
448 assertNotNull(cleanStrategy, PasswordConfigurableStrategyTests.CLEAN_STRATEGY_NOT_AS_EXPECTED);
449 }
450
451
452
453
454
455 @Test
456 void testSumWrong()
457 {
458 assertThrows(IllegalArgumentException.class, () ->
459 {
460 PasswordConfigurableStrategy.of(1, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 3, 3, 3, 3, 0, 0);
461 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
462 );
463 }
464
465
466
467
468
469 @Test
470 void testSumMaximum()
471 {
472 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(1, 12, PasswordConfigurableStrategyTests.PWD_PATTERN, 3, 3, 3, 3, 0, 0);
473 assertNotNull(cleanStrategy, PasswordConfigurableStrategyTests.CLEAN_STRATEGY_NOT_AS_EXPECTED);
474 }
475
476
477
478
479
480 @Test
481 void testSuccess()
482 {
483 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(8, 12, PasswordConfigurableStrategyTests.PWD_PATTERN, 1, 1, 1, 1, 4, 1);
484 cleanStrategy.validationStrategy("1aA@1aA@");
485 assertNotNull(cleanStrategy, PasswordConfigurableStrategyTests.CLEAN_STRATEGY_NOT_AS_EXPECTED);
486 }
487
488
489
490
491
492 @Test
493 void testRepeatedCharacters()
494 {
495 final IPasswordStrategy cleanStrategy = PasswordConfigurableStrategy.of(8, 10, PasswordConfigurableStrategyTests.PWD_PATTERN, 0, 0, 0, 0, 0, 2);
496 assertThrows(IllegalArgumentException.class, () ->
497 {
498 cleanStrategy.validationStrategy("aaaaaaaa");
499 }, PasswordConfigurableStrategyTests.ILLEGAL_ARGUMENT_EXCEPTION
500 );
501 }
502
503 }