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