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