[OOM-CERT-SERVICE] Add logic for KUR/CR detection
[oom/platform/cert-service.git] / certService / src / test / java / org / onap / oom / certservice / certification / UpdateRequestTypeDetectorTest.java
1 /*
2  * ============LICENSE_START=======================================================
3  * Cert Service
4  * ================================================================================
5  * Copyright (C) 2021 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.certification;
22
23 import static org.assertj.core.api.Assertions.assertThat;
24
25 import java.util.stream.Stream;
26 import org.bouncycastle.asn1.x500.X500Name;
27 import org.bouncycastle.asn1.x509.GeneralName;
28 import org.junit.jupiter.api.Test;
29 import org.junit.jupiter.params.ParameterizedTest;
30 import org.junit.jupiter.params.provider.Arguments;
31 import org.junit.jupiter.params.provider.MethodSource;
32 import org.onap.oom.certservice.certification.model.CertificateData;
33
34 class UpdateRequestTypeDetectorTest {
35
36     private static final String SUBJECT = "CN=onap.org,OU=Linux-Foundation,O=ONAP,L=San-Francisco,ST=California,C=US";
37     private static final String SUBJECT_CHANGED_ORDER = "ST=California,C=US,OU=Linux-Foundation,CN=onap.org,O=ONAP,L=San-Francisco";
38     private static final String OTHER_SUBJECT = "CN=onap1.org,OU=Linux-Foundation,O=ONAP,L=San-Francisco,ST=California,C=US";
39     private static final String DNS_NAME = "test.onap.org";
40     private static final String OTHER_DNS_NAME = "test1.onap.org";
41
42     private final UpdateRequestTypeDetector updateRequestTypeDetector = new UpdateRequestTypeDetector();
43
44     private static Stream<Arguments> equalSubjectParameters() {
45         return Stream.of(
46             Arguments.of(SUBJECT, SUBJECT),
47             Arguments.of(SUBJECT_CHANGED_ORDER, SUBJECT_CHANGED_ORDER),
48             Arguments.of(SUBJECT, SUBJECT_CHANGED_ORDER),
49             Arguments.of(SUBJECT_CHANGED_ORDER, SUBJECT)
50         );
51     }
52
53     private static Stream<Arguments> notEqualSubjectParameters() {
54         return Stream.of(
55             Arguments.of(SUBJECT, OTHER_SUBJECT),
56             Arguments.of(OTHER_SUBJECT, SUBJECT),
57             Arguments.of(SUBJECT_CHANGED_ORDER, OTHER_SUBJECT),
58             Arguments.of(OTHER_SUBJECT, SUBJECT_CHANGED_ORDER)
59         );
60     }
61
62     @ParameterizedTest
63     @MethodSource("equalSubjectParameters")
64     void shouldBeKurWhenSameSubjectData(String subject1, String subject2) {
65         //given
66         final CertificateData certificateData1 = new CertificateData(new X500Name(subject1), null);
67         final CertificateData certificateData2 = new CertificateData(new X500Name(subject2), null);
68         //when, then
69         assertThat(updateRequestTypeDetector.isKur(certificateData1, certificateData2)).isTrue();
70     }
71
72     @ParameterizedTest
73     @MethodSource("notEqualSubjectParameters")
74     void shouldNotBeKurDifferentSubjectData(String subject1, String subject2) {
75         //given
76         final CertificateData certificateData1 = new CertificateData(new X500Name(subject1), null);
77         final CertificateData certificateData2 = new CertificateData(new X500Name(subject2), null);
78         //when, then
79         assertThat(updateRequestTypeDetector.isKur(certificateData1, certificateData2)).isFalse();
80     }
81
82     @Test
83     void shouldBeKurWhenEqualSans() {
84         //given
85         final GeneralName[] sans1 = new GeneralName[]{new GeneralName(GeneralName.dNSName, DNS_NAME)};
86         final GeneralName[] sans2 = new GeneralName[]{new GeneralName(GeneralName.dNSName, DNS_NAME)};
87         final CertificateData certificateData1 = new CertificateData(new X500Name(SUBJECT), sans1);
88         final CertificateData certificateData2 = new CertificateData(new X500Name(SUBJECT), sans2);
89         //when, then
90         assertThat(updateRequestTypeDetector.isKur(certificateData1, certificateData2)).isTrue();
91     }
92
93     @Test
94     void shouldNotBeKurWhenNotEqualSans() {
95         //given
96         final GeneralName[] sans1 = new GeneralName[]{new GeneralName(GeneralName.dNSName, DNS_NAME)};
97         final GeneralName[] sans2 = new GeneralName[]{new GeneralName(GeneralName.dNSName, OTHER_DNS_NAME)};
98         final CertificateData certificateData1 = new CertificateData(new X500Name(SUBJECT), sans1);
99         final CertificateData certificateData2 = new CertificateData(new X500Name(SUBJECT), sans2);
100         //when, then
101         assertThat(updateRequestTypeDetector.isKur(certificateData1, certificateData2)).isFalse();
102     }
103
104     @Test
105     void shouldBeKurWhenEqualSansIgnoringOrder() {
106         //given
107         GeneralName[] sans1 = new GeneralName[]{
108             new GeneralName(GeneralName.dNSName, DNS_NAME),
109             new GeneralName(GeneralName.dNSName, OTHER_DNS_NAME)
110         };
111         GeneralName[] sans2 = new GeneralName[]{
112             new GeneralName(GeneralName.dNSName, OTHER_DNS_NAME),
113             new GeneralName(GeneralName.dNSName, DNS_NAME)
114         };
115         final CertificateData certificateData1 = new CertificateData(new X500Name(SUBJECT), sans1);
116         final CertificateData certificateData2 = new CertificateData(new X500Name(SUBJECT), sans2);
117         //when, then
118         assertThat(updateRequestTypeDetector.isKur(certificateData1, certificateData2)).isTrue();
119     }
120 }