f41a8cf773b986d1503a5a0a9c13b11c314a3948
[vfc/nfvo/catalog.git] /
1 /**\r
2  * Copyright 2016 [ZTE] and others.\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 package org.openo.commontosca.catalog.wrapper;\r
17 \r
18 import java.io.File;\r
19 import java.io.FileInputStream;\r
20 import java.io.FileNotFoundException;\r
21 import java.io.InputStream;\r
22 import java.net.URISyntaxException;\r
23 import java.util.ArrayList;\r
24 \r
25 import javax.ws.rs.core.Response;\r
26 \r
27 import org.glassfish.jersey.media.multipart.FormDataContentDisposition;\r
28 import org.junit.After;\r
29 import org.junit.AfterClass;\r
30 import org.junit.Assert;\r
31 import org.junit.Before;\r
32 import org.junit.BeforeClass;\r
33 import org.junit.Ignore;\r
34 import org.junit.Test;\r
35 import org.openo.commontosca.catalog.CatalogAppConfiguration;\r
36 import org.openo.commontosca.catalog.common.Config;\r
37 import org.openo.commontosca.catalog.common.MsbAddrConfig;\r
38 import org.openo.commontosca.catalog.db.exception.CatalogResourceException;\r
39 import org.openo.commontosca.catalog.db.resource.PackageManager;\r
40 import org.openo.commontosca.catalog.filemanage.entity.FileLink;\r
41 import org.openo.commontosca.catalog.common.HttpServerAddrConfig;\r
42 import org.openo.commontosca.catalog.common.HttpServerPathConfig;\r
43 import org.openo.commontosca.catalog.db.dao.DaoManager;\r
44 import org.openo.commontosca.catalog.db.entity.PackageData;\r
45 import org.openo.commontosca.catalog.db.util.H2DbServer;\r
46 import org.openo.commontosca.catalog.db.util.HibernateSession;\r
47 import org.openo.commontosca.catalog.entity.EnumOnboardState;\r
48 import org.openo.commontosca.catalog.entity.EnumOperationalState;\r
49 import org.openo.commontosca.catalog.entity.EnumProcessState;\r
50 import org.openo.commontosca.catalog.entity.EnumUsageState;\r
51 import org.openo.commontosca.catalog.entity.response.CsarFileUriResponse;\r
52 import org.openo.commontosca.catalog.entity.response.PackageMeta;\r
53 \r
54 import static org.junit.Assert.*;\r
55 \r
56 /**\r
57  * @author 00164331\r
58  * \r
59  */\r
60 public class PackageWrapperTest {\r
61     private static String resourcePath;\r
62 \r
63     static {\r
64         MsbAddrConfig.setMsbAddress("http://127.0.0.1:80");\r
65     }\r
66     static {\r
67         HttpServerAddrConfig.setHttpServerAddress("http://127.0.0.1:8080");\r
68     }\r
69     static {\r
70         HttpServerPathConfig.setHttpServerPath("../tomcat/webapps/ROOT/");\r
71     }\r
72 \r
73     // @Mock\r
74     private static PackageManager manager;\r
75 \r
76 \r
77     @BeforeClass\r
78     public static void setUpBeforeClass() throws CatalogResourceException {\r
79         CatalogAppConfiguration configuration = new CatalogAppConfiguration();\r
80         H2DbServer.startUp();\r
81         DaoManager.getInstance().setSessionFactory(HibernateSession.init());\r
82         manager = PackageManager.getInstance();\r
83         Config.setConfigration(configuration);\r
84         System.out.println("Set up before class");\r
85     }\r
86 \r
87     @Before\r
88     public void setUp() throws Exception {\r
89         ArrayList<PackageData> packageList = manager.queryPackage(null, null, null, null, null);\r
90         if (packageList != null && packageList.size() > 0) {\r
91             for (int i = 0; i < packageList.size(); i++) {\r
92                 String package_oid = packageList.get(i).getCsarId();\r
93                 manager.deletePackage(package_oid);\r
94             }\r
95         }\r
96 \r
97         // PowerMockito.mockStatic(PackageManager.class);\r
98         // PowerMockito.when(manager.addPackage(packageData)).thenReturn(packageData);\r
99         // PowerMock.replayAll();\r
100         PackageData packageData = new PackageData();\r
101         packageData = getPackageData();\r
102         manager.addPackage(packageData);\r
103     }\r
104 \r
105     // @Ignore\r
106     @Test\r
107     public void testUploadPackage() throws Exception {\r
108         InputStream ins = null;\r
109         Response result = null;\r
110         Response result1 = null;\r
111         Response result2 = null;\r
112         // PackageData packageData = new PackageData();\r
113         // packageData = getPackageData();\r
114 \r
115         FormDataContentDisposition fileDetail =\r
116                 FormDataContentDisposition.name("fileName").fileName("NanocellGW.csar").build();\r
117 \r
118         try {\r
119             resourcePath = HibernateSession.class.getResource("/").toURI().getPath();\r
120         } catch (URISyntaxException e) {\r
121             e.printStackTrace();\r
122         }\r
123         final String filename = "NanocellGW.csar";\r
124         File packageFile = new File(resourcePath + filename);\r
125         try {\r
126             ins = new FileInputStream(packageFile);\r
127         } catch (FileNotFoundException e) {\r
128             e.printStackTrace();\r
129         }\r
130         if (ins != null) {\r
131             try {\r
132                 result = PackageWrapper.getInstance().uploadPackage(ins, fileDetail, null);\r
133             } catch (Exception e) {\r
134                 e.printStackTrace();\r
135             }\r
136         }\r
137         assertEquals(200, result.getStatus());\r
138         assertNotNull(result.getEntity());\r
139 \r
140         try {\r
141             result1 = PackageWrapper.getInstance().uploadPackage(null, fileDetail, null);\r
142         } catch (Exception e) {\r
143             e.printStackTrace();\r
144         }\r
145         assertEquals(500, result1.getStatus());\r
146 \r
147         try {\r
148             result2 = PackageWrapper.getInstance().uploadPackage(ins, null, null);\r
149         } catch (Exception e) {\r
150             e.printStackTrace();\r
151         }\r
152         assertEquals(500, result2.getStatus());\r
153     }\r
154 \r
155     @Test\r
156     public void testQueryPackageById() throws Exception {\r
157         ArrayList<PackageMeta> metas = new ArrayList<PackageMeta>();\r
158         metas = getPackageMetaList();\r
159         // PackageManager packageManager = mock(PackageManager.class);\r
160         // when(packageManager.queryPackageByCsarId(anyString())).thenThrow(new Exception());\r
161         // PowerMockito.whenNew(PackageManager.class).withNoArguments().thenReturn(packageManager);\r
162         // PowerMockito.mockStatic(PackageManager.class);\r
163         // PowerMockito.when(PackageManager.getInstance()).thenReturn(manager);\r
164         // PowerMock.replayAll();\r
165         // when(manager.queryPackageByCsarId(anyString())).thenThrow(new Exception());\r
166         // PowerMockito.whenNew(PackageManager.class).withNoArguments().thenReturn(manager);\r
167 \r
168         Response result = PackageWrapper.getInstance().queryPackageById("1");\r
169         assertEquals(200, result.getStatus());\r
170         assertEquals(metas, result.getEntity());\r
171 \r
172     }\r
173 \r
174     @Test\r
175     public void testQueryPackageByCond() {\r
176         ArrayList<PackageMeta> metas = new ArrayList<PackageMeta>();\r
177         metas = getPackageMetaList();\r
178         System.out.println("Test query package by Id");\r
179         Response result =\r
180                 PackageWrapper.getInstance().queryPackageListByCond("NanocellGW", "ZTE", "V1.0",\r
181                         "false", "NSAR");\r
182         assertEquals(200, result.getStatus());\r
183         assertEquals(metas, result.getEntity());\r
184     }\r
185 \r
186     @Test\r
187     public void testUpdatePackageStatus() {\r
188         System.out.println("Test update package status");\r
189         Response result =\r
190                 PackageWrapper.getInstance().updatePackageStatus("1", "Enabled", "NotInUse",\r
191                         "true", "onBoarding", "true");\r
192         assertEquals(200, result.getStatus());\r
193     }\r
194 \r
195     @Test\r
196     public void testGetCsarFileUri() {\r
197         System.out.println("Test get csar file uri ");\r
198         CsarFileUriResponse expectResult = new CsarFileUriResponse();\r
199         String csarFileUri =\r
200                 MsbAddrConfig.getMsbAddress()\r
201                         + "/NSAR/ZTE/NanocellGW/v1.0/NanocellGW/images/segw.img";\r
202         String localUri =\r
203                 HttpServerPathConfig.getHttpServerPath()\r
204                         + "NSAR/ZTE/NanocellGW/v1.0/NanocellGW/images/segw.img";\r
205         File srcDir = new File(localUri);\r
206         String localPath = srcDir.getAbsolutePath().replace("\\", "/");\r
207 \r
208         expectResult.setDownloadUri(csarFileUri);\r
209         expectResult.setLocalPath(localPath);\r
210         Response result = PackageWrapper.getInstance().getCsarFileUri("1", "/images/segw.img");\r
211         assertEquals(200, result.getStatus());\r
212         assertEquals(expectResult, result.getEntity());\r
213     }\r
214 \r
215     @Ignore\r
216     @Test\r
217     public void testGetPlansUri() {\r
218         System.out.println("Test get csar plans uri ");\r
219         ArrayList<FileLink> expectResult = new ArrayList<FileLink>();\r
220         FileLink fileLink1 = new FileLink();\r
221         FileLink fileLink2 = new FileLink();\r
222         fileLink1.setFileName("init.zip");\r
223         fileLink1.setDownloadUri(MsbAddrConfig.getMsbAddress()\r
224                 + "/NSAR/ZTE/NanocellGW/v1.0/Plans/init.zip");\r
225         expectResult.add(fileLink1);\r
226         fileLink2.setFileName("delete.zip");\r
227         fileLink2.setDownloadUri(MsbAddrConfig.getMsbAddress()\r
228                 + "/NSAR/ZTE/NanocellGW/v1.0/Plans/delete.zip");\r
229         expectResult.add(fileLink2);\r
230         Response result = PackageWrapper.getInstance().getCsarPlansUri("1");\r
231         assertEquals(200, result.getStatus());\r
232         assertEquals(expectResult, result.getEntity());\r
233     }\r
234 \r
235     @Test\r
236     public void testDelPackage() {\r
237         System.out.println("Test delete package ");\r
238         Response result = PackageWrapper.getInstance().delPackage("1");\r
239         assertEquals(204, result.getStatus());\r
240         try {\r
241             Thread.sleep(5000);\r
242         } catch (InterruptedException e) {\r
243             e.printStackTrace();\r
244         }\r
245     }\r
246 \r
247     @After\r
248     public void tearDown() throws Exception {\r
249         ArrayList<PackageData> packageList = manager.queryPackageByCsarId("1");\r
250         if (packageList != null && packageList.size() != 0) {\r
251             manager.deletePackage("1");\r
252         } else {\r
253             return;\r
254         }\r
255         System.out.println("Tear down");\r
256     }\r
257 \r
258     @AfterClass\r
259     public static void tearDownAfterClass() {\r
260         try {\r
261             HibernateSession.destory();\r
262             DaoManager.getInstance().setDaoNull();\r
263             H2DbServer.shutDown();\r
264         } catch (Exception e) {\r
265             Assert.fail("Exception" + e.getMessage());\r
266         }\r
267     }\r
268 \r
269     private PackageData getPackageData() {\r
270         PackageData packageData = new PackageData();\r
271         packageData.setCsarId("1");\r
272         packageData.setCreateTime("2016-06-29 03:33:15");\r
273         packageData.setDeletionPending("false");\r
274         packageData.setDownloadUri("/NSAR/ZTE/NanocellGW/v1.0/");\r
275         packageData.setFormat("yml");\r
276         packageData.setModifyTime("2016-06-29 03:33:15");\r
277         packageData.setName("NanocellGW");\r
278         packageData.setOnBoardState("non-onBoarded");\r
279         packageData.setOperationalState("Disabled");\r
280         packageData.setProvider("ZTE");\r
281         packageData.setSize("0.93M");\r
282         packageData.setType("NSAR");\r
283         packageData.setUsageState("InUse");\r
284         packageData.setVersion("V1.0");\r
285         packageData.setProcessState("normal");\r
286         return packageData;\r
287     }\r
288 \r
289     private ArrayList<PackageData> getPackageDataList() {\r
290         ArrayList<PackageData> packageDataList = new ArrayList<PackageData>();\r
291         PackageData packageData = new PackageData();\r
292         packageData = getPackageData();\r
293         packageDataList.add(packageData);\r
294         return packageDataList;\r
295     }\r
296 \r
297     private ArrayList<PackageMeta> getPackageMetaList() {\r
298         ArrayList<PackageMeta> metas = new ArrayList<PackageMeta>();\r
299         PackageMeta meta = new PackageMeta();\r
300         meta.setCreateTime("2016-06-29 03:33:15");\r
301         meta.setCsarId("1");\r
302         meta.setDeletionPending(false);\r
303         meta.setDownloadUri(MsbAddrConfig.getMsbAddress()\r
304                 + "/NSAR/ZTE/NanocellGW/v1.0/NanocellGW.csar");\r
305         meta.setFormat("yml");\r
306         meta.setModifyTime("2016-06-29 03:33:15");\r
307         meta.setName("NanocellGW");\r
308         meta.setOperationalState(EnumOperationalState.valueOf("Disabled"));\r
309         meta.setProvider("ZTE");\r
310         meta.setSize("0.93M");\r
311         meta.setType("NSAR");\r
312         meta.setUsageState(EnumUsageState.valueOf("InUse"));\r
313         meta.setVersion("V1.0");\r
314         meta.setOnBoardState(EnumOnboardState.nonOnBoarded.getValue());\r
315         meta.setProcessState(EnumProcessState.valueOf("normal"));\r
316         metas.add(meta);\r
317         return metas;\r
318     }\r
319 }\r