62a3f85059d2991794a57fe1cbdf6641789dd2e0
[portal.git] / ecomp-portal-BE-common / src / test / java / org / openecomp / portalapp / portal / service / FunctionalMenuMockServiceImplTest.java
1 /*-
2  * ============LICENSE_START==========================================
3  * ONAP Portal
4  * ===================================================================
5  * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6  * ===================================================================
7  *
8  * Unless otherwise specified, all software contained herein is licensed
9  * under the Apache License, Version 2.0 (the “License”);
10  * you may not use this software except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *             http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  * Unless otherwise specified, all documentation contained herein is licensed
22  * under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
23  * you may not use this documentation except in compliance with the License.
24  * You may obtain a copy of the License at
25  *
26  *             https://creativecommons.org/licenses/by/4.0/
27  *
28  * Unless required by applicable law or agreed to in writing, documentation
29  * distributed under the License is distributed on an "AS IS" BASIS,
30  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31  * See the License for the specific language governing permissions and
32  * limitations under the License.
33  *
34  * ============LICENSE_END============================================
35  *
36  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
37  */
38 package org.openecomp.portalapp.portal.service;
39
40 import static org.junit.Assert.assertEquals;
41
42 import java.util.ArrayList;
43 import java.util.List;
44
45 import org.junit.Before;
46 import org.junit.Test;
47 import org.junit.runner.RunWith;
48 import org.mockito.InjectMocks;
49 import org.mockito.Mock;
50 import org.mockito.Mockito;
51 import org.mockito.MockitoAnnotations;
52 import org.openecomp.portalapp.portal.domain.FunctionalMenuItemWithAppID;
53 import org.openecomp.portalapp.portal.service.FunctionalMenuService;
54 import org.openecomp.portalapp.portal.service.FunctionalMenuServiceImpl;
55 import org.openecomp.portalapp.portal.transport.FavoritesFunctionalMenuItemJson;
56 import org.openecomp.portalapp.portal.transport.FunctionalMenuItem;
57 import org.openecomp.portalapp.portal.transport.FunctionalMenuRole;
58 import org.openecomp.portalapp.portal.utils.EPCommonSystemProperties;
59 import org.openecomp.portalsdk.core.service.DataAccessService;
60 import org.openecomp.portalsdk.core.util.SystemProperties;
61 import org.powermock.api.mockito.PowerMockito;
62 import org.powermock.core.classloader.annotations.PrepareForTest;
63 import org.powermock.modules.junit4.PowerMockRunner;
64
65 @RunWith(PowerMockRunner.class)
66 @PrepareForTest({SystemProperties.class, EPCommonSystemProperties.class})
67 public class FunctionalMenuMockServiceImplTest {
68
69         @Mock
70         FunctionalMenuService functionalMenuService;
71         
72         @Mock
73         DataAccessService dataAccessService;
74         
75         @Before
76         public void setup() {
77                 MockitoAnnotations.initMocks(this);
78         }
79         
80     @InjectMocks
81         FunctionalMenuServiceImpl functionalMenuServiceImpl= new FunctionalMenuServiceImpl();
82         
83         @Test
84         public void assignHelpURLsTest(){
85                 List<FunctionalMenuItem> menuItems = new ArrayList<FunctionalMenuItem>();
86                 FunctionalMenuItem functionalMenuItem1 = new FunctionalMenuItem();
87                 functionalMenuItem1.text = "Contact Us";
88                 FunctionalMenuItem functionalMenuItem2 = new FunctionalMenuItem();
89                 functionalMenuItem2.text = "Get Access";
90                 FunctionalMenuItem functionalMenuItem3 = new FunctionalMenuItem();
91                 functionalMenuItem3.text = "User Guide";                
92                 menuItems.add(functionalMenuItem1);
93                 menuItems.add(functionalMenuItem2);
94                 menuItems.add(functionalMenuItem3);
95                 
96                 PowerMockito.mockStatic(SystemProperties.class);
97                 Mockito.when(SystemProperties.getProperty(EPCommonSystemProperties.USER_GUIDE_URL)).thenReturn("http://todo_enter_user_guide_link");
98 //              Mockito.doNothing().when(functionalMenuServiceImpl).assignHelpURLs(menuItems);
99                 functionalMenuServiceImpl.assignHelpURLs(menuItems);
100         }
101         
102         @Test
103         public void getFunctionalMenuItemsTest(){
104                 String sql = "SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn, r.app_id FROM fn_menu_functional m, "
105                                 + "fn_menu_functional_roles r WHERE m.menu_id = r.menu_id  AND UPPER(m.active_yn) = 'Y'  AND r.role_id != '900'  "
106                                 + "UNION  SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn,-1 app_id  FROM fn_menu_functional m  "
107                                 + "WHERE m.url=''  AND UPPER(m.active_yn) = 'Y'";
108                  List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
109                  List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
110                  
111                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
112                  
113                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItems(true);
114                  assertEquals(actualResult, expectedResult);
115         }
116         
117         @Test
118         public void getFunctionalMenuItemsNegativeTest(){
119                 String sql = "SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn, r.app_id FROM fn_menu_functional m, "
120                                 + "fn_menu_functional_roles r WHERE m.menu_id = r.menu_id  AND UPPER(m.active_yn) = 'Y'  AND r.role_id != '900'  "
121                                 + "UNION  SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn,-1 app_id  FROM fn_menu_functional m  "
122                                 + "WHERE m.url=''  AND UPPER(m.active_yn) = 'Y'";
123                  List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
124                  List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
125                  
126                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
127                  
128                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItems(false);
129                  assertEquals(actualResult, expectedResult);
130         }
131         
132         @Test
133         public void getFunctionalMenuItemsForNotificationTreeTest(){
134                 String sql = "SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn, r.app_id FROM fn_menu_functional m, fn_menu_functional_roles r "
135                                 + "WHERE m.menu_id = r.menu_id  AND UPPER(m.active_yn) = 'Y'  AND r.role_id != '900'  UNION  SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id,"
136                                 + " m.url, m.active_yn,-1 app_id  FROM fn_menu_functional m  WHERE m.url=''  AND UPPER(m.active_yn) = 'Y'";
137                  List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
138                  List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
139                  
140                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
141                  
142                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItemsForNotificationTree(true);
143                  assertEquals(actualResult, expectedResult);
144                 
145         }
146         
147         @Test
148         public void getFunctionalMenuItemsForNotificationNegativeTreeTest(){
149                 String sql = "SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn, r.app_id FROM fn_menu_functional m, fn_menu_functional_roles r "
150                                 + "WHERE m.menu_id = r.menu_id  AND UPPER(m.active_yn) = 'Y'  AND r.role_id != '900'  UNION  SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id,"
151                                 + " m.url, m.active_yn,-1 app_id  FROM fn_menu_functional m  WHERE m.url=''  AND UPPER(m.active_yn) = 'Y'";
152                  List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
153                  List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
154                  
155                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
156                  
157                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItemsForNotificationTree(false);
158                  assertEquals(actualResult, expectedResult);            
159         }
160         
161         @Test
162         public void getFunctionalMenuItemsForAppTest(){
163                 String sql = "SELECT DISTINCT m1.menu_id, m1.column_num, m1.text, m1.parent_menu_id, m1.url, m.active_yn  "
164                                 + "FROM fn_menu_functional m, fn_menu_functional m1, fn_menu_functional_ancestors a, fn_menu_functional_roles mr  "
165                                 + "WHERE  mr.app_id='1'  AND mr.menu_id = m.menu_id  AND UPPER(m.active_yn) = 'Y' AND UPPER(m1.active_yn) ='Y' AND a.menu_id = m.menu_id  "
166                                 + "AND a.ancestor_menu_id = m1.menu_id";
167                 Integer appId = 1;
168                 List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
169                 List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
170                  
171                  Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
172                  
173                  actualResult = functionalMenuServiceImpl.getFunctionalMenuItemsForApp(appId);
174                  assertEquals(actualResult, expectedResult);
175         }
176         
177         @Test
178         public void getFunctionalMenuItemsForUserTest(){
179                 String orgUserId = "test";
180                 String sql = "SELECT DISTINCT m1.menu_id, m1.column_num, m1.text, m1.parent_menu_id, m1.url, m.active_yn  "
181                                 + "FROM fn_menu_functional m, fn_menu_functional m1, fn_menu_functional_ancestors a,  fn_menu_functional_roles mr, fn_user u , fn_user_role ur  "
182                                 + "WHERE  u.org_user_id='test'  AND u.user_id = ur.user_id  AND ur.app_id = mr.app_id  AND (ur.role_id = mr.role_id      OR ur.role_id = '999')  "
183                                 + "AND m.menu_id = mr.menu_id  AND UPPER(m.active_yn) = 'Y' AND UPPER(m1.active_yn) ='Y'  AND a.menu_id = m.menu_id  "
184                                 + "AND a.ancestor_menu_id = m1.menu_id  UNION  select m1.menu_id, m1.column_num, m1.text, m1.parent_menu_id, m1.url, m1.active_yn  "
185                                 + "FROM fn_menu_functional m, fn_menu_functional_roles mr, fn_menu_functional m1,  fn_menu_functional_ancestors a  where a.menu_id = m.menu_id  AND a.ancestor_menu_id = m1.menu_id  AND m.menu_id != m1.menu_id  AND m.menu_id = mr.menu_id  AND mr.role_id = '900'  AND UPPER(m.active_yn) = 'Y' AND UPPER(m1.active_yn) ='Y'  UNION  SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn  FROM fn_menu_functional m  WHERE m.text in ('Favorites','Get Access','Contact Us','Support','User Guide','Help')";
186                 List<FunctionalMenuItem> actualResult = new ArrayList<FunctionalMenuItem>();
187                 List<FunctionalMenuItem> expectedResult = new ArrayList<FunctionalMenuItem>();
188                  
189                 Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(expectedResult);
190                  
191                 actualResult = functionalMenuServiceImpl.getFunctionalMenuItemsForUser(orgUserId);
192                 assertEquals(actualResult, expectedResult);             
193         }
194         
195         @Test
196         public void getFunctionalMenuItemDetailsTest(){
197                 Integer menuid = 1;
198                 String sql = "SELECT * FROM fn_menu_functional_roles WHERE menu_id = '1'";
199                 FunctionalMenuItem actualResult = null;
200                 FunctionalMenuItem expectedResult = null;
201                 List<FunctionalMenuRole> roleItems = new ArrayList<FunctionalMenuRole>();
202                 Mockito.when(dataAccessService.executeSQLQuery(sql, FunctionalMenuItemWithAppID.class, null)).thenReturn(roleItems);
203                  
204                 actualResult = functionalMenuServiceImpl.getFunctionalMenuItemDetails(menuid);
205                 assertEquals(actualResult, expectedResult);             
206         }
207                 
208         @Test
209         public void getFavoriteItemsTest(){
210                 Long userId = (long)1;
211                 String sql = "SELECT DISTINCT f.user_id,f.menu_id,m.text,m.url  "
212                                 + "FROM fn_menu_favorites f, fn_menu_functional m, fn_menu_functional_roles mr  "
213                                 + "WHERE f.user_id='1' AND f.menu_id = m.menu_id  AND f.menu_id = mr.menu_id  AND mr.role_id != '900' ";
214                 List<FavoritesFunctionalMenuItemJson> actualResult = new ArrayList<FavoritesFunctionalMenuItemJson>();
215                 List<FavoritesFunctionalMenuItemJson> expectedResult = new ArrayList<FavoritesFunctionalMenuItemJson>();
216                  
217                 Mockito.when(dataAccessService.executeSQLQuery(sql, FavoritesFunctionalMenuItemJson.class, null)).thenReturn(expectedResult);
218                  
219                 actualResult = functionalMenuServiceImpl.getFavoriteItems(userId);
220                 assertEquals(actualResult, expectedResult);             
221         }       
222 }