[OOM cert-service-client] Add validation of email, ip and domain name
[oom/platform/cert-service.git] / certServiceClient / src / test / java / org / onap / oom / certservice / client / configuration / factory / SanMapperTest.java
1 /*
2  * ============LICENSE_START=======================================================
3  * oom-certservice-client
4  * ================================================================================
5  * Copyright (C) 2020 Nokia. 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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20
21 package org.onap.oom.certservice.client.configuration.factory;
22
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
25
26 import java.util.function.Function;
27 import org.bouncycastle.asn1.x509.GeneralName;
28 import org.junit.jupiter.params.ParameterizedTest;
29 import org.junit.jupiter.params.provider.ValueSource;
30 import org.onap.oom.certservice.client.configuration.exception.CsrConfigurationException;
31 import org.onap.oom.certservice.client.configuration.model.San;
32
33 class SanMapperTest {
34
35     private Function<String, San> sanMapper = new SanMapper();
36
37     @ParameterizedTest
38     @ValueSource(strings = {"192.178.2.3", "10.183.34.201", "ff:ff:ff:ff:ff:ff:ff:ff", "ff:ff::"})
39     void shouldCorrectlyMapIpAddress(String san) {
40         // when
41         San result = sanMapper.apply(san);
42         // then
43         assertThat(result.getValue()).isEqualTo(san);
44         assertThat(result.getType()).isEqualTo(GeneralName.iPAddress);
45     }
46
47     @ParameterizedTest
48     @ValueSource(strings = {"foo@bar.com", "sample@example.com", "onap@domain.pl", "alex.supertramp@onap.com",
49         "al.super^tramp@onap.org"})
50     void shouldCorrectlyMapEmailAddress(String san) {
51         // when
52         San result = sanMapper.apply(san);
53         // then
54         assertThat(result.getValue()).isEqualTo(san);
55         assertThat(result.getType()).isEqualTo(GeneralName.rfc822Name);
56     }
57
58     @ParameterizedTest
59     @ValueSource(strings = {"sample.com", "Sample.com", "onap.org", "SRI-NIC.ARPA", "ves-collector", "sample"})
60     void shouldCorrectlyMapDomain(String san) {
61         // when
62         San result = sanMapper.apply(san);
63         // then
64         assertThat(result.getValue()).isEqualTo(san);
65         assertThat(result.getType()).isEqualTo(GeneralName.dNSName);
66     }
67
68     @ParameterizedTest
69     @ValueSource(strings = {" ", "", "192.168.0.", "10.183.34.201:8080", "incoreectdomaim@onap.ux", "<sample@example.com>",
70         "onap@domain"})
71     void shouldThrowExceptionOnIncorrectString(String san) {
72         // when, then
73         assertThatExceptionOfType(CsrConfigurationException.class)
74             .isThrownBy(() -> sanMapper.apply(san))
75             .withMessage("SAN :" + san + " does not match any requirements");
76     }
77 }