Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-item-permissions-lib / openecomp-item-permissions-core / src / main / test / java / org / openecomp / sdc / itempermissions / dao / impl / PermissionsServicesImplTest.java
1 package org.openecomp.sdc.itempermissions.dao.impl;
2
3 import org.mockito.InjectMocks;
4 import org.mockito.Mock;
5 import org.mockito.MockitoAnnotations;
6 import org.mockito.Spy;
7 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
8 import org.openecomp.sdc.itempermissions.PermissionsRules;
9 import org.openecomp.sdc.itempermissions.dao.ItemPermissionsDao;
10 import org.openecomp.sdc.itempermissions.type.ItemPermissionsEntity;
11 import org.testng.Assert;
12 import org.testng.annotations.BeforeMethod;
13 import org.testng.annotations.Test;
14
15 import java.util.Arrays;
16 import java.util.Collection;
17 import java.util.HashSet;
18 import java.util.Set;
19
20 import static org.mockito.Matchers.anyObject;
21 import static org.mockito.Mockito.doReturn;
22 import static org.mockito.Mockito.verify;
23 import static org.mockito.Mockito.when;
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");
39   }
40
41   @Mock
42   private ItemPermissionsDao permissionsDaoMock;
43   @Mock
44   private PermissionsRules permissionsRules;
45   @InjectMocks
46   @Spy
47   private PermissionsServicesImpl permissionsServices;
48
49
50   @BeforeMethod
51   public void setUp() throws Exception {
52     MockitoAnnotations.initMocks(this);
53   }
54
55   @Test
56   public void testListItemPermissionsWhenNone()  {
57     Collection<ItemPermissionsEntity> permissions =
58         permissionsServices.listItemPermissions(ITEM1_ID);
59     Assert.assertEquals(permissions.size(), 0);
60   }
61
62
63   @Test
64   public void testListItemPermissions(){
65     doReturn(Arrays.asList(
66         createPermissionEntity(ITEM1_ID, USER1_ID, PERMISSION),
67         createPermissionEntity(ITEM1_ID, USER2_ID, PERMISSION)))
68         .when(permissionsDaoMock).listItemPermissions(anyObject());
69
70     Collection<ItemPermissionsEntity> actual =
71         permissionsServices.listItemPermissions(ITEM1_ID);
72     Assert.assertEquals(actual.size(), 2);
73   }
74
75
76   @Test
77   public void testIsAllowed(){
78     when(permissionsDaoMock.getUserItemPermiission(ITEM1_ID,USER1_ID)).thenReturn(PERMISSION);
79     when(permissionsRules.isAllowed(PERMISSION,ACTION_SUBMIT)).thenReturn(true);
80
81     Boolean result = permissionsServices.isAllowed(ITEM1_ID,USER1_ID,ACTION_SUBMIT);
82
83     Assert.assertTrue(result);
84
85   }
86   @Test
87   public void testUpdatePermissions(){
88
89     Set<String> addedUsers = new HashSet<String>();
90     addedUsers.add(USER2_ID);
91
92     permissionsServices.updateItemPermissions(ITEM1_ID,PERMISSION,addedUsers,
93         new HashSet<String>());
94
95     verify(permissionsRules).executeAction(ITEM1_ID,USER1_ID,CHANGE_PERMISSIONS);
96     verify(permissionsRules).updatePermission(ITEM1_ID,USER1_ID,PERMISSION,addedUsers,new HashSet<String>());
97     verify(permissionsDaoMock).updateItemPermissions(ITEM1_ID,PERMISSION,addedUsers,new
98         HashSet<String>());
99   }
100
101
102   public static ItemPermissionsEntity createPermissionEntity(String itemId, String
103       userId, String permission) {
104     ItemPermissionsEntity permissionsEntity = new ItemPermissionsEntity();
105    permissionsEntity.setItemId(itemId);
106    permissionsEntity.setUserId(userId);
107    permissionsEntity.setPermission(permission);
108     return permissionsEntity;
109   }
110
111 }