f3ba51abff53f6802aed0abc61ca13cc2bacb93e
[policy/pap.git] / main / src / test / java / org / onap / policy / pap / main / comm / PdpStatusMessageHandlerTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP
4  * ================================================================================
5  * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
6  * Modifications Copyright (C) 2023 Nordix Foundation.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.pap.main.comm;
23
24 import static org.assertj.core.api.Assertions.assertThat;
25
26 import java.sql.SQLIntegrityConstraintViolationException;
27 import org.hibernate.HibernateException;
28 import org.junit.Test;
29 import org.onap.policy.pap.main.PolicyPapApplication;
30 import org.springframework.boot.test.context.SpringBootTest;
31
32 @SpringBootTest(
33     classes = PolicyPapApplication.class,
34     webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
35     properties = {
36         "db.initialize=false"
37     })
38
39 public class PdpStatusMessageHandlerTest {
40
41     @Test
42     public void testIsDuplicateKeyException() {
43
44         // @formatter:off
45
46         // null exception
47         assertThat(PdpStatusMessageHandler.isDuplicateKeyException(null, HibernateException.class)).isFalse();
48
49         // plain exception
50         assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
51                         new Exception(), HibernateException.class))
52             .isFalse();
53
54         // cause is also plain
55         assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
56                         new Exception(
57                             new Exception()), HibernateException.class))
58             .isFalse();
59
60         // dup key
61         assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
62                         new SQLIntegrityConstraintViolationException(), HibernateException.class))
63             .isTrue();
64
65         // cause is dup key
66         assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
67                         new Exception(
68                             new SQLIntegrityConstraintViolationException()), HibernateException.class))
69             .isTrue();
70
71         // eclipselink exception, no internal exception
72         assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
73                         new MyHibernateException(), HibernateException.class))
74             .isFalse();
75
76         // eclipselink exception, cause is plain
77         assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
78                         new MyHibernateException(
79                             new Exception()), HibernateException.class))
80             .isFalse();
81
82         // eclipselink exception, cause is dup
83         assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
84                         new MyHibernateException(
85                             new SQLIntegrityConstraintViolationException()), HibernateException.class))
86             .isTrue();
87
88         // multiple cause both inside and outside of the eclipselink exception
89         assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
90                         new Exception(
91                             new Exception(
92                                 new MyHibernateException(
93                                     new Exception(
94                                         new SQLIntegrityConstraintViolationException())))), HibernateException.class))
95             .isTrue();
96
97         // @formatter:on
98     }
99
100     public static class MyHibernateException extends HibernateException {
101         private static final long serialVersionUID = 1L;
102
103         public MyHibernateException() {
104             super("");
105         }
106
107         public MyHibernateException(Exception exception) {
108             super(exception);
109         }
110     }
111 }