2 * Copyright © 2016-2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.openecomp.sdc.itempermissions.dao.impl;
19 import static org.mockito.Matchers.anyObject;
20 import static org.mockito.Matchers.anyString;
21 import static org.mockito.Mockito.doReturn;
22 import static org.mockito.Mockito.times;
23 import static org.mockito.Mockito.verify;
24 import static org.mockito.Mockito.when;
26 import java.util.Arrays;
27 import java.util.Collection;
28 import java.util.Collections;
29 import java.util.HashSet;
30 import java.util.Optional;
32 import org.mockito.InjectMocks;
33 import org.mockito.Mock;
34 import org.mockito.Mockito;
35 import org.mockito.MockitoAnnotations;
36 import org.mockito.Spy;
37 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
38 import org.openecomp.sdc.itempermissions.PermissionsRules;
39 import org.openecomp.sdc.itempermissions.dao.ItemPermissionsDao;
40 import org.openecomp.sdc.itempermissions.dao.UserPermissionsDao;
41 import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity;
42 import org.junit.Test;
43 import org.junit.Before;
44 import org.junit.Assert;
48 * Created by ayalaben on 7/9/2017
50 public class PermissionsServicesImplTest {
52 private static final String ITEM1_ID = "1";
53 private static final String PERMISSION = "Owner";
54 private static final String USER2_ID = "testUser2";
55 private static final String USER1_ID = "testUser1";
56 private static final String ACTION_SUBMIT = "Submit_Item";
57 private static final String CHANGE_PERMISSIONS = "Change_Item_Permissions";
60 SessionContextProviderFactory.getInstance().createInterface().create("testUser1", "dox");
64 private ItemPermissionsDao permissionsDaoMock;
66 private UserPermissionsDao userPermissionsDao; // do not delete. needed for permissionService
68 private PermissionsRules permissionsRulesMock;
71 private PermissionsServicesImpl permissionsServices;
76 MockitoAnnotations.initMocks(this);
80 public void testListUserPermittedItems() {
81 Set<String> userPermissionSet = Collections.emptySet();
83 Mockito.when(userPermissionsDao.listUserPermittedItems(anyString(), anyString())).thenReturn(userPermissionSet);
85 Set<String> permissionsSet = permissionsServices.listUserPermittedItems(USER1_ID, PERMISSION);
87 Assert.assertEquals(0, permissionsSet.size());
91 public void testExecute() {
92 Mockito.doNothing().when(permissionsRulesMock).executeAction(anyString(), anyString(), anyString());
94 permissionsServices.execute(ITEM1_ID, USER1_ID, PERMISSION);
96 Mockito.verify(permissionsRulesMock, times(1)).executeAction(anyString(), anyString(), anyString());
100 public void testDeleteItemPermissions() {
101 Mockito.doNothing().when(permissionsDaoMock).deleteItemPermissions(anyString());
103 permissionsServices.deleteItemPermissions(ITEM1_ID);
105 Mockito.verify(permissionsDaoMock, times(1)).deleteItemPermissions(anyString());
109 public void testGetUserItemPermission() {
110 Mockito.when(permissionsDaoMock.getUserItemPermission(anyString(), anyString()))
111 .thenReturn(Optional.of(PERMISSION));
113 Optional<String> permission = permissionsServices.getUserItemPermission(ITEM1_ID, USER1_ID);
115 Assert.assertTrue(permission.isPresent());
116 Assert.assertEquals(PERMISSION, permission.get());
120 public void testListItemPermissionsWhenNone() {
121 Collection<ItemPermissionsEntity> permissions = permissionsServices.listItemPermissions(ITEM1_ID);
122 Assert.assertEquals( 0, permissions.size());
127 public void testListItemPermissions() {
128 doReturn(Arrays.asList(createPermissionEntity(ITEM1_ID, USER1_ID, PERMISSION),
129 createPermissionEntity(ITEM1_ID, USER2_ID, PERMISSION))).when(permissionsDaoMock)
130 .listItemPermissions(anyObject());
132 Collection<ItemPermissionsEntity> actual = permissionsServices.listItemPermissions(ITEM1_ID);
133 Assert.assertEquals(2, actual.size());
138 public void testIsAllowed() {
139 when(permissionsDaoMock.getUserItemPermission(ITEM1_ID, USER1_ID)).thenReturn(Optional.of(PERMISSION));
140 when(permissionsRulesMock.isAllowed(PERMISSION, ACTION_SUBMIT)).thenReturn(true);
142 boolean result = permissionsServices.isAllowed(ITEM1_ID, USER1_ID, ACTION_SUBMIT);
144 Assert.assertTrue(result);
149 public void shouldUpdatePermissions() {
151 Set<String> addedUsers = new HashSet<>();
152 addedUsers.add(USER2_ID);
154 permissionsServices.updateItemPermissions(ITEM1_ID, PERMISSION, addedUsers, new HashSet<>());
156 verify(permissionsRulesMock).executeAction(ITEM1_ID, USER1_ID, CHANGE_PERMISSIONS);
157 verify(permissionsRulesMock).updatePermission(ITEM1_ID, USER1_ID, PERMISSION, addedUsers, new HashSet<>());
158 verify(permissionsDaoMock).updateItemPermissions(ITEM1_ID, PERMISSION, addedUsers, new HashSet<>());
162 public void shouldExecutePermissionRules() {
163 permissionsServices.execute(ITEM1_ID, USER1_ID, ACTION_SUBMIT);
164 verify(permissionsRulesMock).executeAction(ITEM1_ID, USER1_ID, ACTION_SUBMIT);
168 public void shouldReturnUserItemPermission() {
169 doReturn(Optional.of(PERMISSION)).when(permissionsDaoMock).getUserItemPermission(ITEM1_ID, USER1_ID);
170 Optional<String> actual = permissionsServices.getUserItemPermission(ITEM1_ID, USER1_ID);
171 Assert.assertTrue(actual.isPresent());
172 Assert.assertEquals(PERMISSION, actual.get());
176 public void shouldDeleteItemPermissions() {
177 permissionsServices.deleteItemPermissions(ITEM1_ID);
178 verify(permissionsDaoMock).deleteItemPermissions(ITEM1_ID);
182 private static ItemPermissionsEntity createPermissionEntity(String itemId, String userId, String permission) {
183 ItemPermissionsEntity permissionsEntity = new ItemPermissionsEntity();
184 permissionsEntity.setItemId(itemId);
185 permissionsEntity.setUserId(userId);
186 permissionsEntity.setPermission(permission);
187 return permissionsEntity;