bc666fb08f78cf22812ee132e0675d185b08eb67
[policy/engine.git] / BRMSGateway / src / test / java / org / onap / policy / brms / api / nexus / NexusRestWrapperTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP Policy Engine
4  * ================================================================================
5  * Copyright (C) 2018 Ericsson Intellectual Property. 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.policy.brms.api.nexus;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertTrue;
26 import static org.junit.Assert.fail;
27
28 import java.util.List;
29
30 import org.junit.Test;
31 import org.onap.policy.brms.api.nexus.NexusRestSearchParameters;
32 import org.onap.policy.brms.api.nexus.NexusRestWrapper;
33 import org.onap.policy.brms.api.nexus.NexusRestWrapperException;
34 import org.onap.policy.brms.api.nexus.pojo.NexusArtifact;
35
36 public class NexusRestWrapperTest {
37     @Test
38     public void testRestWrapperConstructionErrors() throws NexusRestWrapperException {
39         try {
40             new NexusRestWrapper(null, null, null);
41             fail("test shold throw an exception here");
42         } catch (NexusRestWrapperException e) {
43             assertEquals("nexusServerUrl must be specified for the Nexus server", e.getMessage());
44         }
45
46         try {
47             new NexusRestWrapper("", null, null);
48             fail("test shold throw an exception here");
49         } catch (NexusRestWrapperException e) {
50             assertEquals("nexusServerUrl must be specified for the Nexus server", e.getMessage());
51         }
52
53         try {
54             new NexusRestWrapper("   ", null, null);
55             fail("test shold throw an exception here");
56         } catch (NexusRestWrapperException e) {
57             assertEquals("nexusServerUrl must be specified for the Nexus server", e.getMessage());
58         }
59
60         try {
61             new NexusRestWrapper("\n\t", null, null);
62             fail("test shold throw an exception here");
63         } catch (NexusRestWrapperException e) {
64             assertEquals("nexusServerUrl must be specified for the Nexus server", e.getMessage());
65         }
66
67         try {
68             new NexusRestWrapper("server", "user", null);
69             fail("test shold throw an exception here");
70         } catch (NexusRestWrapperException e) {
71             assertEquals("if either nexusUser or nexusPassword are specified, both must be specified", e.getMessage());
72         }
73
74         try {
75             new NexusRestWrapper("server", null, "pass");
76             fail("test shold throw an exception here");
77         } catch (NexusRestWrapperException e) {
78             assertEquals("if either nexusUser or nexusPassword are specified, both must be specified", e.getMessage());
79         }
80
81         NexusRestWrapper wrapper = new NexusRestWrapper("http://localhost:99999", "user", "pass");
82         assertNotNull(wrapper);
83
84         try {
85             wrapper.findArtifact(null);
86             fail("test shold throw an exception here");
87         } catch (NexusRestWrapperException e) {
88             assertEquals("searchParameters may not be null", e.getMessage());
89         }
90
91         try {
92             wrapper.findArtifact(new NexusRestSearchParameters());
93             fail("test shold throw an exception here");
94         } catch (NexusRestWrapperException e) {
95             assertEquals("search parameters have not been set", e.getMessage());
96         }
97
98         try {
99             NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
100
101             searchParameters.useFilterSearch("org.onap.policy.engine", null, null, null, null);
102             wrapper.findArtifact(searchParameters);
103             fail("test shold throw an exception here");
104         } catch (NexusRestWrapperException e) {
105             assertEquals("search to URI http://localhost:99999/service/local/lucene/search?g=org.onap.policy.engine "
106                             + "failed with message: java.lang.IllegalArgumentException: port out of range:99999",
107                             e.getMessage());
108         }
109
110         wrapper.close();
111         wrapper = new NexusRestWrapper("http://localhost:57344", "user", "pass");
112
113         try {
114             NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
115
116             searchParameters.useFilterSearch("org.onap.policy.engine", null, null, null, null);
117             wrapper.findArtifact(searchParameters);
118             fail("test shold throw an exception here");
119         } catch (NexusRestWrapperException e) {
120             assertEquals("search to URI http://localhost:57344/service/local/lucene/search?g=org.onap.policy.engine "
121                             + "failed with message: java.net.ConnectException: Connection refused (Connection refused)",
122                             e.getMessage());
123         }
124
125         wrapper.close();
126         wrapper = new NexusRestWrapper("https://nexus.onap.org", "user", "pass");
127
128         try {
129             NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
130             searchParameters.useFilterSearch("org.onap.policy.engine", null, "", null, null);
131             wrapper.findArtifact(searchParameters);
132             fail("test shold throw an exception here");
133         } catch (NexusRestWrapperException e) {
134             assertEquals("search to URI https://nexus.onap.org/service/local/lucene/search?g=org.onap.policy.engine "
135                             + "failed, response was: InboundJaxrsResponse{context=ClientResponse{method=GET, "
136                             + "uri=https://nexus.onap.org/service/local/lucene/search?g=org.onap.policy.engine, status=401, reason=Unauthorized}}",
137                             e.getMessage());
138         }
139
140         try {
141             NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
142             searchParameters.useFilterSearch(null, null, null, null, null);
143             wrapper.findArtifact(searchParameters);
144             fail("test shold throw an exception here");
145         } catch (NexusRestWrapperException e) {
146             assertEquals("at least one filter parameter must be specified for Nexus filter searches", e.getMessage());
147         }
148
149         try {
150             NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
151             searchParameters.useKeywordSearch(null);
152             wrapper.findArtifact(searchParameters);
153             fail("test shold throw an exception here");
154         } catch (NexusRestWrapperException e) {
155             assertEquals("keyword must be specified for Nexus keyword searches", e.getMessage());
156         }
157
158         try {
159             NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
160             searchParameters.useClassNameSearch(null);
161             wrapper.findArtifact(searchParameters);
162             fail("test shold throw an exception here");
163         } catch (NexusRestWrapperException e) {
164             assertEquals("className must be specified for Nexus class name searches", e.getMessage());
165         }
166
167         try {
168             NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
169             searchParameters.useChecksumSearch(null);
170             wrapper.findArtifact(searchParameters);
171             fail("test shold throw an exception here");
172         } catch (NexusRestWrapperException e) {
173             assertEquals("checksum must be specified for Nexus checksum searches", e.getMessage());
174         }
175
176         try {
177             NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
178             searchParameters.useKeywordSearch("BRMSGateway").setRepositoryId(null);
179             wrapper.findArtifact(searchParameters);
180             fail("test shold throw an exception here");
181         } catch (NexusRestWrapperException e) {
182             assertEquals("a repositoryId must be specified", e.getMessage());
183         }
184
185         try {
186             NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
187             searchParameters.useKeywordSearch("BRMSGateway").setFrom(-1);
188             wrapper.findArtifact(searchParameters);
189             fail("test shold throw an exception here");
190         } catch (NexusRestWrapperException e) {
191             assertEquals("from cannot be less than 0 when from is specified", e.getMessage());
192         }
193
194         try {
195             NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
196             searchParameters.useKeywordSearch("BRMSGateway").setCount(0);
197             wrapper.findArtifact(searchParameters);
198             fail("test shold throw an exception here");
199         } catch (NexusRestWrapperException e) {
200             assertEquals("count cannot be less than 1 when count is specified", e.getMessage());
201         }
202
203         try {
204             NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
205             searchParameters.useKeywordSearch("BRMSGateway");
206             searchParameters.getSearchUri(null);
207             fail("test shold throw an exception here");
208         } catch (NexusRestWrapperException e) {
209             assertEquals("nexusServerUrl must be specified for the search URI", e.getMessage());
210         }
211
212         wrapper.close();
213     }
214
215     @Test
216     public void testGetters() throws NexusRestWrapperException {
217         NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
218         
219         searchParameters.useKeywordSearch("BRMSGateway");
220         assertEquals(NexusRestSearchParameters.SearchType.KEYWORD, searchParameters.getSearchType());
221         assertEquals(null, searchParameters.getArtifactId());
222         assertEquals(null, searchParameters.getChecksum());
223         assertEquals(null, searchParameters.getClassName());
224         assertEquals(null, searchParameters.getClassifier());
225         assertEquals(-1, searchParameters.getCount());
226         assertEquals(-1, searchParameters.getFrom());
227         assertEquals(null, searchParameters.getGroupId());
228         assertEquals("BRMSGateway", searchParameters.getKeyword());
229         assertEquals(null, searchParameters.getPackagingType());
230         assertEquals(null, searchParameters.getRepositoryId());
231         assertEquals(null, searchParameters.getVersion());
232         
233         searchParameters.useFilterSearch("org.onap.policy.engine", "BRMSGateway",
234                         "1.2.3", "jar", "jar-with-dependencies")
235             .setFrom(100).setCount(10).setRepositoryId("repository");
236         assertEquals(NexusRestSearchParameters.SearchType.FILTER, searchParameters.getSearchType());
237         assertEquals("BRMSGateway", searchParameters.getArtifactId());
238         assertEquals(null, searchParameters.getChecksum());
239         assertEquals(null, searchParameters.getClassName());
240         assertEquals("jar-with-dependencies", searchParameters.getClassifier());
241         assertEquals(10, searchParameters.getCount());
242         assertEquals(100, searchParameters.getFrom());
243         assertEquals("org.onap.policy.engine", searchParameters.getGroupId());
244         assertEquals(null, searchParameters.getKeyword());
245         assertEquals("jar", searchParameters.getPackagingType());
246         assertEquals("repository", searchParameters.getRepositoryId());
247         assertEquals("1.2.3", searchParameters.getVersion());
248
249         searchParameters.useClassNameSearch("BRMSGateway");
250         assertEquals(NexusRestSearchParameters.SearchType.CLASS_NAME, searchParameters.getSearchType());
251         assertEquals(null, searchParameters.getArtifactId());
252         assertEquals(null, searchParameters.getChecksum());
253         assertEquals("BRMSGateway", searchParameters.getClassName());
254         assertEquals(null, searchParameters.getClassifier());
255         assertEquals(-1, searchParameters.getCount());
256         assertEquals(-1, searchParameters.getFrom());
257         assertEquals(null, searchParameters.getGroupId());
258         assertEquals(null, searchParameters.getKeyword());
259         assertEquals(null, searchParameters.getPackagingType());
260         assertEquals(null, searchParameters.getRepositoryId());
261         assertEquals(null, searchParameters.getVersion());
262
263         searchParameters.useChecksumSearch("987654321");
264         assertEquals(NexusRestSearchParameters.SearchType.CHECKSUM, searchParameters.getSearchType());
265         assertEquals(null, searchParameters.getArtifactId());
266         assertEquals("987654321", searchParameters.getChecksum());
267         assertEquals(null, searchParameters.getClassName());
268         assertEquals(null, searchParameters.getClassifier());
269         assertEquals(-1, searchParameters.getCount());
270         assertEquals(-1, searchParameters.getFrom());
271         assertEquals(null, searchParameters.getGroupId());
272         assertEquals(null, searchParameters.getKeyword());
273         assertEquals(null, searchParameters.getPackagingType());
274         assertEquals(null, searchParameters.getRepositoryId());
275         assertEquals(null, searchParameters.getVersion());
276     }
277
278     @Test
279     public void testFilterSearch() throws NexusRestWrapperException {
280         NexusRestWrapper wrapper = new NexusRestWrapper("https://nexus.onap.org", null, null);
281
282         NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
283
284         searchParameters.useFilterSearch("org.onap.policy.dorothy", null, null, null, null).setCount(1);
285         List<NexusArtifact> foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
286         assertNotNull(foundArtifactList);
287         assertEquals(0, foundArtifactList.size());
288
289         searchParameters.useFilterSearch("org.onap.policy.engine", null, null, null, null).setCount(1);
290         foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
291         assertNotNull(foundArtifactList);
292         assertEquals(1, foundArtifactList.size());
293
294         searchParameters.useFilterSearch("org.onap.policy.engine", null, null, null, null).setFrom(2).setCount(2);
295         foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
296         assertNotNull(foundArtifactList);
297         assertEquals(2, foundArtifactList.size());
298
299         searchParameters.useFilterSearch("org.onap.policy.engine", null, null, null, null).setFrom(2).setCount(2);
300         foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
301         assertNotNull(foundArtifactList);
302         assertEquals(2, foundArtifactList.size());
303
304         searchParameters.useFilterSearch(null, "BRMSGateway", null, null, null);
305         foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
306         assertNotNull(foundArtifactList);
307         assertTrue(foundArtifactList.size() > 2);
308
309         searchParameters.useFilterSearch(null, null, "1.2.3", null, null).setCount(1);
310         foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
311         assertNotNull(foundArtifactList);
312         assertEquals(1, foundArtifactList.size());
313
314         searchParameters.useFilterSearch("org.onap.policy.engine", null, "1.1.2", null, null).setCount(1);
315         foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
316         assertNotNull(foundArtifactList);
317         assertEquals(1, foundArtifactList.size());
318
319         searchParameters.useFilterSearch("org.onap.policy.engine", "BRMSGateway", "1.1.2", null, null).setCount(1);
320         foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
321         assertNotNull(foundArtifactList);
322         assertEquals(1, foundArtifactList.size());
323
324         searchParameters.useFilterSearch(null, "BRMSGateway", "1.1.2", null, null).setCount(1);
325         foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
326         assertNotNull(foundArtifactList);
327         assertEquals(1, foundArtifactList.size());
328
329         searchParameters.useFilterSearch(null, "BRMSGateway", "1.1.2", "jar", null).setCount(1);
330         foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
331         assertNotNull(foundArtifactList);
332         assertEquals(1, foundArtifactList.size());
333
334         searchParameters.useFilterSearch(null, "BRMSGateway", "1.1.2", "jar", "jar-with-dependencies").setCount(1);
335         foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
336         assertNotNull(foundArtifactList);
337         assertEquals(1, foundArtifactList.size());
338
339         searchParameters.useFilterSearch(null, "BRMSGateway", "1.1.2", "jar", "jar-with-dependencies")
340             .setCount(1).setRepositoryId("releases");
341         foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
342         assertNotNull(foundArtifactList);
343         assertEquals(1, foundArtifactList.size());
344
345         wrapper.close();
346     }
347
348     @Test
349     public void testKeywordSearch() throws NexusRestWrapperException {
350         NexusRestWrapper wrapper = new NexusRestWrapper("https://nexus.onap.org", null, null);
351
352         NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
353
354         searchParameters.useKeywordSearch("TheWizardOfOz").setCount(1);
355         List<NexusArtifact> foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
356         assertNotNull(foundArtifactList);
357         assertEquals(0, foundArtifactList.size());
358
359         searchParameters.useKeywordSearch("BRMSGateway").setCount(1);
360         foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
361         assertNotNull(foundArtifactList);
362         assertEquals(1, foundArtifactList.size());
363
364         wrapper.close();
365     }
366
367     @Test
368     public void testClassNameSearch() throws NexusRestWrapperException {
369         NexusRestWrapper wrapper = new NexusRestWrapper("https://nexus.onap.org", null, null);
370
371         NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
372
373         searchParameters.useClassNameSearch("TheWizardOfOz").setCount(1);
374         List<NexusArtifact> foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
375         assertNotNull(foundArtifactList);
376         assertEquals(0, foundArtifactList.size());
377
378         searchParameters.useClassNameSearch("BRMSGateway").setCount(1);
379         foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
380         assertNotNull(foundArtifactList);
381         assertEquals(1, foundArtifactList.size());
382
383         wrapper.close();
384     }
385
386     @Test
387     public void testChecksumSearch() throws NexusRestWrapperException {
388         NexusRestWrapper wrapper = new NexusRestWrapper("https://nexus.onap.org", null, null);
389
390         NexusRestSearchParameters searchParameters = new NexusRestSearchParameters();
391
392         searchParameters.useChecksumSearch("99999999999999").setCount(1);
393         List<NexusArtifact> foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
394         assertNotNull(foundArtifactList);
395         assertEquals(0, foundArtifactList.size());
396
397         searchParameters.useChecksumSearch("914acda2ce67de9b45d599109d6ad8357d01b217").setCount(1);
398         foundArtifactList = wrapper.findArtifact(searchParameters).getArtifactList();
399         assertNotNull(foundArtifactList);
400         assertEquals(1, foundArtifactList.size());
401
402         wrapper.close();
403     }
404 }