560ddc6a9b8dfc31f4ca50cfc306c676b68eb4cb
[policy/apex-pdp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  *  Modifications Copyright (C) 2019 Nordix Foundation.
5  * ================================================================================
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  * SPDX-License-Identifier: Apache-2.0
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.apex.model.policymodel.handling;
23
24 import static org.assertj.core.api.Assertions.assertThatThrownBy;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNotNull;
27
28 import org.junit.Test;
29 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
30 import org.onap.policy.apex.model.basicmodel.handling.ApexModelException;
31 import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
32
33 /**
34  * Test model merging.
35  *
36  * @author Liam Fallon (liam.fallon@ericsson.com)
37  */
38 public class PolicyModelMergerTest {
39
40     @Test
41     public void testPolicyModelMerger() throws ApexModelException {
42         final AxPolicyModel leftPolicyModel = new SupportApexPolicyModelCreator().getModel();
43         final AxPolicyModel rightPolicyModel = new SupportApexPolicyModelCreator().getModel();
44
45         AxPolicyModel mergedPolicyModel =
46             PolicyModelMerger.getMergedPolicyModel(leftPolicyModel, rightPolicyModel, false, false);
47         assertEquals(leftPolicyModel, mergedPolicyModel);
48         assertEquals(rightPolicyModel, mergedPolicyModel);
49
50         leftPolicyModel.setKey(new AxArtifactKey("LeftPolicyModel", "0.0.1"));
51         assertThatThrownBy(
52             () -> PolicyModelMerger.getMergedPolicyModel(leftPolicyModel, rightPolicyModel, false, false))
53                 .hasMessageContaining("left model is invalid: \n***validation of model failed");
54
55         leftPolicyModel.setKey(new AxArtifactKey("LeftPolicyModel", "0.0.1"));
56         assertNotNull(PolicyModelMerger.getMergedPolicyModel(leftPolicyModel, rightPolicyModel, false, true, false));
57
58         leftPolicyModel.getKeyInformation().generateKeyInfo(leftPolicyModel);
59         mergedPolicyModel = PolicyModelMerger.getMergedPolicyModel(leftPolicyModel, rightPolicyModel, true, false);
60         assertNotNull(mergedPolicyModel);
61
62         rightPolicyModel.setKey(new AxArtifactKey("RightPolicyModel", "0.0.1"));
63         assertThatThrownBy(
64             () -> PolicyModelMerger.getMergedPolicyModel(leftPolicyModel, rightPolicyModel, false, false))
65                 .hasMessageContaining("right model is invalid: \n***validation of model failed");
66
67         rightPolicyModel.setKey(new AxArtifactKey("RightPolicyModel", "0.0.1"));
68         assertNotNull(PolicyModelMerger.getMergedPolicyModel(leftPolicyModel, rightPolicyModel, false, true, false));
69
70         rightPolicyModel.getKeyInformation().generateKeyInfo(rightPolicyModel);
71         mergedPolicyModel = PolicyModelMerger.getMergedPolicyModel(leftPolicyModel, rightPolicyModel, false, false);
72         assertNotNull(mergedPolicyModel);
73
74         final AxPolicyModel rightPolicyModel2 = new SupportApexPolicyModelCreator().getAnotherModel();
75         mergedPolicyModel = PolicyModelMerger.getMergedPolicyModel(leftPolicyModel, rightPolicyModel2, true, false);
76         assertNotNull(mergedPolicyModel);
77
78         mergedPolicyModel = PolicyModelMerger.getMergedPolicyModel(leftPolicyModel, rightPolicyModel2, true, true);
79         assertNotNull(mergedPolicyModel);
80
81         final AxPolicyModel rightPolicyModel3 = new SupportApexPolicyModelCreator().getModel();
82         assertThatThrownBy(
83             () -> PolicyModelMerger.getMergedPolicyModel(leftPolicyModel, rightPolicyModel3, true, true))
84                 .hasMessageContaining("Duplicate policy found");
85     }
86 }