re base code
[sdc.git] / openecomp-be / lib / openecomp-item-permissions-lib / openecomp-item-permissions-core / src / test / java / org / openecomp / sdc / itempermissions / dao / impl / PermissionsServicesImplTest.java
1 package org.openecomp.sdc.itempermissions.dao.impl;
2
3 import java.util.Optional;
4 import org.mockito.InjectMocks;
5 import org.mockito.Mock;
6 import org.mockito.MockitoAnnotations;
7 import org.mockito.Spy;
8 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
9 import org.openecomp.sdc.itempermissions.PermissionsRules;
10 import org.openecomp.sdc.itempermissions.dao.ItemPermissionsDao;
11 import org.openecomp.sdc.itempermissions.dao.UserPermissionsDao;
12 import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity;
13 import org.testng.Assert;
14 import org.testng.annotations.BeforeMethod;
15 import org.testng.annotations.Test;
16
17 import java.util.Arrays;
18 import java.util.Collection;
19 import java.util.HashSet;
20 import java.util.Set;
21
22 import static org.mockito.Matchers.anyObject;
23 import static org.mockito.Mockito.*;
24
25 /**
26  * Created by ayalaben on 7/9/2017
27  */
28 public class PermissionsServicesImplTest {
29
30   private static final String ITEM1_ID = "1";
31   private static final String PERMISSION = "Owner";
32   private static final String USER2_ID = "testUser2";
33   private static final String USER1_ID = "testUser1";
34   private static final String ACTION_SUBMIT = "Submit_Item";
35   private static final String CHANGE_PERMISSIONS = "Change_Item_Permissions";
36
37   static {
38     SessionContextProviderFactory.getInstance().createInterface().create("testUser1", "dox");
39   }
40
41   @Mock
42   private ItemPermissionsDao permissionsDaoMock;
43   @Mock
44   private UserPermissionsDao userPermissionsDao;  // do not delete. needed for permissionService
45   @Mock
46   private PermissionsRules permissionsRules;
47   @InjectMocks
48   @Spy
49   private PermissionsServicesImpl permissionsServices;
50
51
52   @BeforeMethod
53   public void setUp() throws Exception {
54     MockitoAnnotations.initMocks(this);
55   }
56
57   @Test
58   public void testListItemPermissionsWhenNone()  {
59     Collection<ItemPermissionsEntity> permissions =
60         permissionsServices.listItemPermissions(ITEM1_ID);
61     Assert.assertEquals(permissions.size(), 0);
62   }
63
64
65   @Test
66   public void testListItemPermissions(){
67     doReturn(Arrays.asList(
68         createPermissionEntity(ITEM1_ID, USER1_ID, PERMISSION),
69         createPermissionEntity(ITEM1_ID, USER2_ID, PERMISSION)))
70         .when(permissionsDaoMock).listItemPermissions(anyObject());
71
72     Collection<ItemPermissionsEntity> actual =
73         permissionsServices.listItemPermissions(ITEM1_ID);
74     Assert.assertEquals(actual.size(), 2);
75   }
76
77
78   @Test
79   public void testIsAllowed(){
80     when(permissionsDaoMock.getUserItemPermission(ITEM1_ID,USER1_ID)).thenReturn(Optional.of(PERMISSION));
81     when(permissionsRules.isAllowed(PERMISSION,ACTION_SUBMIT)).thenReturn(true);
82
83     Boolean result = permissionsServices.isAllowed(ITEM1_ID,USER1_ID,ACTION_SUBMIT);
84
85     Assert.assertTrue(result);
86
87   }
88   @Test
89   public void testUpdatePermissions(){
90
91     Set<String> addedUsers = new HashSet<>();
92     addedUsers.add(USER2_ID);
93
94     permissionsServices.updateItemPermissions(ITEM1_ID,PERMISSION,addedUsers, new HashSet<>());
95
96     verify(permissionsRules).executeAction(ITEM1_ID,USER1_ID,CHANGE_PERMISSIONS);
97     verify(permissionsRules).updatePermission(ITEM1_ID,USER1_ID,PERMISSION,addedUsers, new HashSet<>());
98     verify(permissionsDaoMock).updateItemPermissions(ITEM1_ID,PERMISSION,addedUsers,new
99         HashSet<>());
100   }
101
102
103   public static ItemPermissionsEntity createPermissionEntity(String itemId, String
104       userId, String permission) {
105     ItemPermissionsEntity permissionsEntity = new ItemPermissionsEntity();
106    permissionsEntity.setItemId(itemId);
107    permissionsEntity.setUserId(userId);
108    permissionsEntity.setPermission(permission);
109     return permissionsEntity;
110   }
111
112 }