Modify nemo-ui(table style changes)
[nemo.git] / nemo-impl / src / test / java / org / opendaylight / nemo / user / tenantmanager / TenantManageTest.java
1 /*
2  * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package user.tenantmanager;
9
10 import junit.framework.TestCase;
11 import org.junit.Assert;
12 import org.junit.Before;
13 import org.junit.Test;
14
15 import static org.junit.Assert.*;
16
17 import java.util.ArrayList;
18 import java.util.HashMap;
19 import java.util.List;
20 import java.util.Map;
21 import java.util.concurrent.ExecutionException;
22
23 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
24 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
25 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
26 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
27 import org.opendaylight.nemo.user.tenantmanager.TenantManage;
28 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserRoleName;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.RegisterUserInput;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.UserRoles;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.user.roles.UserRole;
38 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
39 import org.slf4j.Logger;
40 import org.slf4j.LoggerFactory;
41 import com.google.common.base.Function;
42 import com.google.common.base.Optional;
43 import com.google.common.collect.Maps;
44 import com.google.common.util.concurrent.CheckedFuture;
45 import com.google.common.util.concurrent.FutureCallback;
46 import com.google.common.util.concurrent.Futures;
47 import com.google.common.util.concurrent.ListenableFuture;
48 import static org.mockito.Mockito.*;
49 /**
50  * Created by zhangmeng on 2015/12/15.
51  */
52 public class TenantManageTest extends TestCase {
53     private DataBroker dataBroker;
54     private TenantManage tenantManage;
55     @Before
56     public void setUp() throws Exception {
57         dataBroker = mock(DataBroker.class);
58
59         tenantManage = new TenantManage(dataBroker);
60     }
61
62     @Test
63     public void testGetUser() throws Exception {
64         User result;
65         result = tenantManage.getUser();
66         Assert.assertTrue(result == null);
67     }
68
69     @Test
70     public void testGetUserRoles() throws Exception {
71         Map<UserRoleName, UserRole> result;
72         UserRoles userRoles = mock(UserRoles.class);
73         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
74         CheckedFuture checkedFuture = mock(CheckedFuture.class);
75         Optional<UserRoles> optional = Optional.of(userRoles);;
76         Assert.assertTrue(optional.isPresent());
77
78
79         when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
80         when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
81         when(checkedFuture.get()).thenReturn(optional);
82 //        when(userRoles.getUserRole()).thenReturn(new UserRoleName("admin"));
83
84         result = tenantManage.getUserRoles();
85         Assert.assertTrue(result.isEmpty());
86         verify(userRoles).getUserRole();
87     }
88
89     @Test
90     public void testGetUsers_FetchVNSpace() throws Exception {
91         Map<UserId, User> result;
92         Users users = mock(Users.class);
93         User user = mock(User.class);
94         UserId userId = mock(UserId.class);
95         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
96         CheckedFuture checkedFuture = mock(CheckedFuture.class);
97         Optional<Users> usersOpt = Optional.of(users);
98         List<User> userList = new ArrayList<User>();
99
100         userList.add(user);
101
102         when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
103         when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);
104         when(checkedFuture.get()).thenReturn(usersOpt);
105         when(users.getUser()).thenReturn(userList);
106         when(user.getUserId()).thenReturn(userId);
107
108         result = tenantManage.getUsers();  //hashmap with userid user
109         Assert.assertTrue(!result.isEmpty() && result.size() == 1);
110         verify(users).getUser();
111         verify(user).getUserId();
112
113         tenantManage.fetchVNSpace(userId);
114         Assert.assertTrue(tenantManage.getUser() != null);
115     }
116
117     @Test
118     public void testAddUser() throws Exception {
119         RegisterUserInput registerUserInput = mock(RegisterUserInput.class);
120         WriteTransaction writeTransaction = mock(WriteTransaction.class);
121         CheckedFuture checkedFuture = mock(CheckedFuture.class);
122         UserId userId = mock(UserId.class);
123
124         when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
125         when(writeTransaction.submit()).thenReturn(checkedFuture);
126         when(registerUserInput.getUserId())
127                 .thenReturn(null)
128                 .thenReturn(userId);
129
130         tenantManage.addUser(registerUserInput);
131         verify(registerUserInput).getUserId();
132
133         tenantManage.addUser(registerUserInput);
134         verify(registerUserInput,times(4)).getUserId();
135
136     }
137 }