9346b0a5a554494da1d4fb4818adfdeb746f9e15
[sdc.git] /
1 package org.openecomp.sdc.itempermissions.dao.impl;
2
3 import static org.mockito.Matchers.anyObject;
4 import static org.mockito.Matchers.anyString;
5 import static org.mockito.Mockito.doReturn;
6 import static org.mockito.Mockito.times;
7 import static org.mockito.Mockito.verify;
8 import static org.mockito.Mockito.when;
9
10 import java.util.Arrays;
11 import java.util.Collection;
12 import java.util.Collections;
13 import java.util.HashSet;
14 import java.util.Optional;
15 import java.util.Set;
16 import org.mockito.InjectMocks;
17 import org.mockito.Mock;
18 import org.mockito.Mockito;
19 import org.mockito.MockitoAnnotations;
20 import org.mockito.Spy;
21 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
22 import org.openecomp.sdc.itempermissions.PermissionsRules;
23 import org.openecomp.sdc.itempermissions.dao.ItemPermissionsDao;
24 import org.openecomp.sdc.itempermissions.dao.UserPermissionsDao;
25 import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity;
26 import org.testng.Assert;
27 import org.testng.annotations.BeforeMethod;
28 import org.testng.annotations.Test;
29
30 /**
31  * Created by ayalaben on 7/9/2017
32  */
33 public class PermissionsServicesImplTest {
34
35     private static final String ITEM1_ID = "1";
36     private static final String PERMISSION = "Owner";
37     private static final String USER2_ID = "testUser2";
38     private static final String USER1_ID = "testUser1";
39     private static final String ACTION_SUBMIT = "Submit_Item";
40     private static final String CHANGE_PERMISSIONS = "Change_Item_Permissions";
41
42     static {
43         SessionContextProviderFactory.getInstance().createInterface().create("testUser1", "dox");
44     }
45
46     @Mock
47     private ItemPermissionsDao permissionsDaoMock;
48     @Mock
49     private UserPermissionsDao userPermissionsDao;  // do not delete. needed for permissionService
50     @Mock
51     private PermissionsRules permissionsRulesMock;
52     @InjectMocks
53     @Spy
54     private PermissionsServicesImpl permissionsServices;
55
56
57     @BeforeMethod
58     public void setUp() {
59         MockitoAnnotations.initMocks(this);
60     }
61
62     @Test
63     public void testListUserPermittedItems() {
64         Set<String> userPermissionSet = Collections.emptySet();
65
66         Mockito.when(userPermissionsDao.listUserPermittedItems(anyString(), anyString())).thenReturn(userPermissionSet);
67
68         Set<String> permissionsSet = permissionsServices.listUserPermittedItems(USER1_ID, PERMISSION);
69
70         Assert.assertEquals(0, permissionsSet.size());
71     }
72
73     @Test
74     public void testExecute() {
75         Mockito.doNothing().when(permissionsRulesMock).executeAction(anyString(), anyString(), anyString());
76
77         permissionsServices.execute(ITEM1_ID, USER1_ID, PERMISSION);
78
79         Mockito.verify(permissionsRulesMock, times(1)).executeAction(anyString(), anyString(), anyString());
80     }
81
82     @Test
83     public void testDeleteItemPermissions() {
84         Mockito.doNothing().when(permissionsDaoMock).deleteItemPermissions(anyString());
85
86         permissionsServices.deleteItemPermissions(ITEM1_ID);
87
88         Mockito.verify(permissionsDaoMock, times(1)).deleteItemPermissions(anyString());
89     }
90
91     @Test
92     public void testGetUserItemPermission() {
93         Mockito.when(permissionsDaoMock.getUserItemPermission(anyString(), anyString()))
94                 .thenReturn(Optional.of(PERMISSION));
95
96         Optional<String> permission = permissionsServices.getUserItemPermission(ITEM1_ID, USER1_ID);
97
98         Assert.assertTrue(permission.isPresent());
99         Assert.assertEquals(permission.get(), PERMISSION);
100     }
101
102     @Test
103     public void testListItemPermissionsWhenNone() {
104         Collection<ItemPermissionsEntity> permissions =
105                 permissionsServices.listItemPermissions(ITEM1_ID);
106         Assert.assertEquals(permissions.size(), 0);
107     }
108
109
110     @Test
111     public void testListItemPermissions() {
112         doReturn(Arrays.asList(
113                 createPermissionEntity(ITEM1_ID, USER1_ID, PERMISSION),
114                 createPermissionEntity(ITEM1_ID, USER2_ID, PERMISSION)))
115                 .when(permissionsDaoMock).listItemPermissions(anyObject());
116
117         Collection<ItemPermissionsEntity> actual =
118                 permissionsServices.listItemPermissions(ITEM1_ID);
119         Assert.assertEquals(actual.size(), 2);
120     }
121
122
123     @Test
124     public void testIsAllowed() {
125         when(permissionsDaoMock.getUserItemPermission(ITEM1_ID, USER1_ID)).thenReturn(Optional.of(PERMISSION));
126         when(permissionsRulesMock.isAllowed(PERMISSION, ACTION_SUBMIT)).thenReturn(true);
127
128         boolean result = permissionsServices.isAllowed(ITEM1_ID, USER1_ID, ACTION_SUBMIT);
129
130         Assert.assertTrue(result);
131
132   }
133
134   @Test
135   public void shouldUpdatePermissions(){
136
137         Set<String> addedUsers = new HashSet<>();
138         addedUsers.add(USER2_ID);
139
140         permissionsServices.updateItemPermissions(ITEM1_ID, PERMISSION, addedUsers, new HashSet<>());
141
142         verify(permissionsRulesMock).executeAction(ITEM1_ID, USER1_ID, CHANGE_PERMISSIONS);
143         verify(permissionsRulesMock).updatePermission(ITEM1_ID, USER1_ID, PERMISSION, addedUsers, new HashSet<>());
144         verify(permissionsDaoMock).updateItemPermissions(ITEM1_ID, PERMISSION, addedUsers, new
145                 HashSet<>());
146     }
147
148   @Test
149   public void shouldExecutePermissionRules(){
150     permissionsServices.execute(ITEM1_ID,USER1_ID,ACTION_SUBMIT);
151     verify(permissionsRulesMock).executeAction(ITEM1_ID,USER1_ID,ACTION_SUBMIT);
152   }
153
154   @Test
155   public void shouldReturnUserItemPermission(){
156     doReturn(Optional.of(PERMISSION)).when(permissionsDaoMock).getUserItemPermission(ITEM1_ID, USER1_ID);
157     Optional<String> actual = permissionsServices.getUserItemPermission(ITEM1_ID, USER1_ID);
158     Assert.assertTrue(actual.isPresent());
159     Assert.assertEquals(actual.get(), PERMISSION);
160   }
161
162   @Test
163   public void shouldDeleteItemPermissions(){
164    permissionsServices.deleteItemPermissions(ITEM1_ID);
165     verify(permissionsDaoMock).deleteItemPermissions(ITEM1_ID);
166   }
167
168
169     private static ItemPermissionsEntity createPermissionEntity(String itemId, String
170             userId, String permission) {
171         ItemPermissionsEntity permissionsEntity = new ItemPermissionsEntity();
172         permissionsEntity.setItemId(itemId);
173         permissionsEntity.setUserId(userId);
174         permissionsEntity.setPermission(permission);
175         return permissionsEntity;
176     }
177
178 }