87171988a752d5f729bc36505efc84437d722e8e
[policy/gui.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2021 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.gui.editors.apex.rest.handling;
22
23 import static org.assertj.core.api.Assertions.assertThat;
24
25 import java.io.ByteArrayOutputStream;
26 import java.io.IOException;
27 import java.io.PrintStream;
28 import java.nio.file.Files;
29 import java.nio.file.Path;
30 import java.util.Random;
31 import org.junit.Before;
32 import org.junit.BeforeClass;
33 import org.junit.Test;
34 import org.onap.policy.gui.editors.apex.rest.ApexEditorMain;
35
36 public class RestSessionTest {
37
38     private int sessionId;
39     private RestSession restSession;
40
41     @BeforeClass
42     public static void beforeClass() {
43         // Initialize ApexEditor
44         final String[] args = {"--time-to-live", "10", "--port", "12321", "--listen", "127.0.0.1"};
45         final var outBaStream = new ByteArrayOutputStream();
46         final var outStream = new PrintStream(outBaStream);
47         new ApexEditorMain(args, outStream);
48     }
49
50     @Before
51     public void setUp() {
52         sessionId = new Random().nextInt();
53         restSession = new RestSession(sessionId);
54     }
55
56     @Test
57     public void testGetSessionId() {
58         final var actual = restSession.getSessionId();
59         assertThat(actual).isEqualTo(sessionId);
60     }
61
62     @Test
63     public void testCommitChangesNoChanges() {
64         final var apexApiResult = restSession.commitChanges();
65         assertThat(apexApiResult.isNok()).isTrue();
66     }
67
68     @Test
69     public void testCommitChanges() {
70         restSession.editModel();
71         final var apexApiResult = restSession.commitChanges();
72         assertThat(apexApiResult.isOk()).isTrue();
73     }
74
75     @Test
76     public void testDiscardChangesNotEdited() {
77         final var apexApiResult = restSession.discardChanges();
78         assertThat(apexApiResult.isNok()).isTrue();
79     }
80
81     @Test
82     public void testDiscardChanges() {
83         restSession.editModel();
84         final var apexApiResult = restSession.discardChanges();
85         assertThat(apexApiResult.isOk()).isTrue();
86         assertThat(restSession.getApexModelEdited()).isNull();
87     }
88
89     @Test
90     public void testDownloadModel() {
91         final var actual = restSession.downloadModel();
92         assertThat(actual.isOk()).isTrue();
93     }
94
95     @Test
96     public void testEditModel() {
97         final var original = restSession.getApexModelEdited();
98         final var apexApiResult = restSession.editModel();
99         final var apexModelEdited = restSession.getApexModelEdited();
100         final var apexModel = restSession.getApexModel();
101         assertThat(apexApiResult.isOk()).isTrue();
102         assertThat(original).isNull();
103         assertThat(apexModel).isNotNull();
104     }
105
106     @Test
107     public void testEditModelAlreadyEdited() {
108         restSession.editModel();
109         final var apexApiResult = restSession.editModel();
110         assertThat(apexApiResult.isNok()).isTrue();
111     }
112
113     @Test
114     public void testLoadFromString() throws IOException {
115         restSession.editModel();
116         final var toscaPath = Path.of("src/test/resources/models/PolicyModel.yaml");
117         final var toscaString = Files.readString(toscaPath);
118         final var apexApiResult = restSession.loadFromString(toscaString);
119         assertThat(apexApiResult.isOk()).isTrue();
120         final var apexModelEdited = restSession.getApexModelEdited();
121         assertThat(apexModelEdited).isNotNull();
122     }
123
124     @Test
125     public void testLoadFromStringNoPolicies() throws IOException {
126         restSession.editModel();
127         final var toscaPath = Path.of("src/test/resources/models/PolicyModelNoPolicies.yaml");
128         final var toscaString = Files.readString(toscaPath);
129         final var apexApiResult = restSession.loadFromString(toscaString);
130         assertThat(apexApiResult.isNok()).isTrue();
131         assertThat(apexApiResult.getMessage()).contains("no policies");
132     }
133
134     @Test
135     public void testUploadModel() throws IOException {
136         restSession.editModel();
137         final var toscaPath = Path.of("src/test/resources/models/PolicyModel.yaml");
138         final var toscaString = Files.readString(toscaPath);
139         restSession.loadFromString(toscaString);
140         final var apexApiResult = restSession.uploadModel();
141         assertThat(apexApiResult.isNok()).isTrue();
142         assertThat(apexApiResult.getMessage()).contains("Model upload is disabled");
143     }
144 }